Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism n:m Relation setzen (https://www.delphipraxis.net/58605-n-m-relation-setzen.html)

Taladan 9. Dez 2005 14:05

Datenbank: Dataset XML • Version: . • Zugriff über: Ado.net

n:m Relation setzen
 
Ich möchte gern über ein Dataset (nur darüber, da es eine XML DB wird) eine Relation n:m erstellen. Ziel ist es Tabelle Kunde, Artikel usw. mit der Tabelle "Zusätzliche Infos" zu verknüpfen, wo auch mehrere Einträge zu einen Kunden/Artikel sein können.
Wie setze ich eine solche Relation über das Dataset oder brauche ich da eine zwischen-tabelle. Hatte schon gedacht, das ich bei der Infotabelle nicht nur die Artikelnummer sondern auch die Bezeichnung mit hineinpacke. Doch dies ist keine gute Idee, da es ja einen Kunden namens Hamburger geben kann und einen Artikel die zufällig die gleiche ID erhalten. wie kann ich das am besten Regeln?

nieurig 9. Dez 2005 14:26

Re: n:m Relation setzen
 
Hi Taladan,
eine N:M Beziehung mußt Du in zwei 1:N Beziehungen auflösen. Ergo: Du brauchst eine Zwischentabelle in der die Foreign-Key auf die beiden Haupttabllen (und ggf. zusätzliche Infos) gespeichert werden.

Das Problem mit den doppelten Schlüsselwerten läßt sich lösen, indem Du z.B. ein Datumsfeld mit in den Schlüssel aufnimmst.

Kunde
KundenNr
Name

Artikel
ArtikelNr
Bezeichnung
Preis

KundenBestellung
NrKunde ---> verweist auf KundenNr
NrArtikel ---> verweist auf ArtikelNr
BestellDatum
Menge

primary key (NrKunde, NrArtikel, Bestelldatum)

usw.

Frohes Schaffen
Niels

Taladan 9. Dez 2005 16:02

Re: n:m Relation setzen
 
Ich glaub das ist nicht das was ich suche. Die Zieltabelle (Infos) ist immer die selbe, hat jedoch mehere einträge, die mit den infos. Die Quelltabelle jedoch ähndert sich immer wieder (Person, Talent usw.). Ideal wäre ein zusammengesetzter Primärkey (falls man das so nennt) also das das Dataset nur die aus der Infotabelle raussucht, die als werte Tabelle=Person und ID=Zahl hat. Doch eine solche Bedingung kann ich scheinbar nicht schreiben zu können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:08 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