Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Beziehungen in Acces DBs nötig (https://www.delphipraxis.net/37239-beziehungen-acces-dbs-noetig.html)

glunzl 3. Jan 2005 07:10


Beziehungen in Acces DBs nötig
 
Hallo Leute!

Ich habe ein wenig mit Access und dann mit Access Tabellen in Delphi 7 rumexperimentiert. Jetzt frage ich mich, ob die die Beziehungen in der Access DB eigentlich brauche, wenn ich mit einer ADO Connection auf die DB zugreife, oder ob ich die mit einer Query/SQL Query "dynamisch" erzeuge?`

Gruss
glunzl

Stevie 3. Jan 2005 09:47

Re: Beziehungen in Acces DBs nötig
 
Moin glunzl,

Beziehungen dienen eigentlich der Refrenziellen Integrität. Ein Beispiel:

Tabellen:

Bestellungen
- Kunde_ID
- Artikel_ID

In diese Felder soll geweils die ID des Kunden und des Artikels eingetragen werden.
Dabei ist es sinnvoll, keine Kunden oder Artikel einzutragen, die es garnicht gibt.
Also setze ich eine Beziehung zwischen Bestellungen und Kunden bzw Artikeln.
Dies ist dann eine 1-zu-n-Beziehung, weil ja ein Artikel in n Bestellungen
vorkommen kann; genauso mit den Kunden...

Durch eine Query kannst du keine Beziehungen in diesem Sinne erzeugen. Du setzt sie nur sinnvoll
um, indem du zum Bespiel folgendes machst:
SQL-Code:
select kundenname, artikelname
from bestellungen b, kunden k, artikel a
where b.kunde_id = k.kunde_id
and b.artikel_id = a.artikel_id
Hier listest du alle Bestellungen mit Name von Kunden und Artikel auf.

Hoffe, dir geholfen zu haben
MfG
Stevie

Jelly 3. Jan 2005 10:19

Re: Beziehungen in Acces DBs nötig
 
Beziehungen sind auch als "Foreign Keys" bekannt. Normalerweise wird bei Erstellung einer Beziehung gleich ein Sekundärindex mit angelegt, welcher das Suchen und Filtern dann erheblich beschleunigt.

Darüberhinaus kann man auch das Verhalten definieren, ob Masterrecords gelöscht werden dürfen oder nicht. Und wenn ja, daß die Records aus der referierenden Tabelle mitgelöscht werden, damit keine Dateileichen übrig bleiben. Um das Bsp. von Stevie nochmal aufzugreifen, ist es an der Datenbank zu entscheiden, was mit den Records in der Tabelle Artikel passieren soll, wenn du den zugehörigen Kunden löschst. Entweder es wird direkt verboten, oder es ist erlaubt, und alle betroffenen Artikeldatensätze werden mitgelöscht (cascading delete).

Somit brauchst du dich als Entwickler nicht um die Datenkonsistenz kümmern, sondern das übernimmt die Datenbank für dich... Es sei denn du nutzt MySQL im Standard MyISAM Betrieb, da gibts diese Sicherheit nicht. Dafür müsstest du InnoDB als Tabellentyp wählen, der steht aber nicht unter Opensource und ist lizenzpflichtig... Bei Access hast du diese Probleme nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz