Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi m:n Beziehung mit Paradox und Delphi (https://www.delphipraxis.net/29861-m-n-beziehung-mit-paradox-und-delphi.html)

buyden 15. Sep 2004 17:14


m:n Beziehung mit Paradox und Delphi
 
Hi,

ich hab ein Problem beim erstellen einer m:n-Beziehung zwischen 2 Paradoxtabellen.

Ich möchte eine Datenbank erstellen, in der ich verschiedene Computermodelle erfasse und die dazugehörige Ausstattung aufnehmen kann. Also z.B. in Gerät XY befindet sich eine Festplatte Z und 2 RAM-Riegel T.

Dazu hab ich also eine Tabelle Geraet:
Geraetenummer(P)
Bezeichnung

Tabelle Komponenten:
Artikelnummer (P)
Bezeichnung

und die Verbindungsabelle
ID (P)
Geraet -> Sekundärindex
Komponente -> Sekundärindex
Anzahl

Unter Delphi hab ich bei der Verbindungstabelle als MasterSource Tabelle Geraet angegeben, MasterField ist Geraetenummernummer->Geraet.
Bei der Tabelle Komponenten ist die Verbindungstabelle MasterSource und Komponente->Artikelnummer ist MasterField.

Wenn ich jetzt in die Tabelle Komponenten irgendetwas speichern will bekomme ich eine "KeyViolation".

Ich bin schon fast am Verzweifeln :freak: und für jeden Hinweis dankbar. :wall:

shmia 15. Sep 2004 17:46

Re: m:n Beziehung mit Paradox und Delphi
 
Zitat:

Zitat von buyden
ich hab ein Problem beim erstellen einer m:n-Beziehung zwischen 2 Paradoxtabellen.

Ich möchte eine Datenbank erstellen, in der ich verschiedene Computermodelle erfasse und die dazugehörige Ausstattung aufnehmen kann. Also z.B. in Gerät XY befindet sich eine Festplatte Z und 2 RAM-Riegel T.

Dazu hab ich also eine Tabelle Geraet:
Geraetenummer(P)
Bezeichnung

Tabelle Komponenten:
Artikelnummer (P)
Bezeichnung

und die Verbindungsabelle
ID (P)
Geraet -> Sekundärindex
Komponente -> Sekundärindex
Anzahl

Die Verbindungstabelle sieht üblicherweise so aus:
Code:
Geraet     (P)
Komponente (P)
Anzahl
Der Primärschlüssel der Verbindungstabelle erstreckt sich über die Felder Geraet und Komponente.
Der Datentyp von Verbindungstabelle.Geraet muss exakt dem Datentyp von Geraet.Geraetenummer entsprechen. (Analoges gilt für Verbindungstabelle.Komponente)
Primärschlüsselfelder müssen das Attribut NOT NULL tragen. (manche Datenbanken z.B.: Access erzwingen dies nicht)
Weitere Indexe auf der Verbindungstabelle sind nicht erforderlich. (Man könnte einen NOT-UNIQUE Index auf Verbindungstabelle.Komponente legen um bestimmte Abfragen zu beschleunigen)

KrasserChecker 15. Sep 2004 17:53

Re: m:n Beziehung mit Paradox und Delphi
 
@shmia:
Zitat:

Der Primärschlüssel der Verbindungstabelle erstreckt sich über die Felder Geraet und Komponente.
Normalerweise widerspreche ich ja nur ungerne, aber die Auffassung, dass der PK über zwei Felder gehen soll teile ich nicht unbedingt. :pale: So ist es zwar einfacher - allerdings sind in eine wirklich schön designten DB (wenn möglich) nur Tabellen, die ein Feld als Primary Key haben. Das erfordert zwar mehr Aufwand (z.B. Stored Procedures oder Generatoren (je nach DB)), aber dafür ist alles schön einheitlich.

buyden 15. Sep 2004 20:41

Re: m:n Beziehung mit Paradox und Delphi
 
Danke erstmal,

Zitat:

Zitat von shmia
Der Primärschlüssel der Verbindungstabelle erstreckt sich über die Felder Geraet und Komponente.

Ich werd das mal so versuchen.
Kann man das NOT NULL -Attribut eigentlich bei ner Paradox-Tabelle einstellen? Naja wenn dann werd ich das schon finden.

:cyclops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:03 Uhr.

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