![]() |
AW: Auf ein Attribut doppelt zugreifen?
Zitat:
Zitat:
|
AW: Auf ein Attribut doppelt zugreifen?
Zitat:
Code:
Oder was machst Du wenn mal ein Autor ein Buch leihen will - doppelt anlegen?
Table Person (
ID, Name, Vorname [, Anschrift]); Table Entleiher ( ID, Person_ID, ....); Table Autor ( ID, Person_ID,....); Grüße |
AW: Auf ein Attribut doppelt zugreifen?
Irgendwie bin ich durcheinander... :roteyes: Wie setze ich den diese drei Tabellen + Tabelle "buch" in eine Verbindung bzw. Beziehung? :gruebel:
|
AW: Auf ein Attribut doppelt zugreifen?
Zitat:
Code:
so vielleicht?
Tabelle Buch (
ID, Titel, Autor_ID, ISBN,...) Tablle Leihe ( ID, Entleiher_ID, Buch_ID,...) ) |
AW: Auf ein Attribut doppelt zugreifen?
Wozu dann die Tabelle Person? :roteyes:
|
AW: Auf ein Attribut doppelt zugreifen?
Nimm mal das Playmobil zur Hand und spiele das durch, evtl. hilft das beim Verständnis.
Und wichtig, erstmal nicht an Computer und Datenbank denken. Irgendwann stoppen und die Situation einfach mal betrachten und versuchen so genau wie möglich zu beschreiben. |
AW: Auf ein Attribut doppelt zugreifen?
Zitat:
Beim Anlegen eines Buches wird in Buch und in Autor (wenn noch nciht vorhanden) ein EIntrag angelegt - damit auch in Person (Name). Wird ein Entleiher angelegt ein Eintrag in Entleiher und Person. Wird nun ein Buch verliehen kommt ein Eintrag in Leihe rein. und um dich jetzt komplett zu verwirren: Ich persönlich würde aber auf die Personentabelle verzichten und das wie schon weiter oben beschrieben Name/Anschrift in Autor bzw. Entleiher packen. Es macht an der Stelle schlicht keinen Sinn sondern nur Aufwand diese Normalisierung zu betreiben. Die Unterscheidung der beiden identischen Felder kannst Du über den Tabellennamen lösen:
Code:
Oder du gehst einen Schritt weiter und definierst die Tabellen mit einem Suffix:
Select Autor.Name, Entleiher.Name from
Leihe join buch...
Code:
Tabelle Aut_Autor ( Aut_ID, Aut_Name, Aut_Vorname,...)
Tabelle Ent_Entleiher (Ent_ID, Ent_Name, Ent_VOrname,...) Grüße |
AW: Auf ein Attribut doppelt zugreifen?
Zitat:
Du holst aus den Tabellen "vorname" und "nachname" für beide Personen raus und benennst sie im SELECT um. (
Delphi-Quellcode:
oder wie auch immer)
table1.vorname AS vorname1, table1.nachname AS nachname1, table2.vorname AS vorname2, table2.nachname AS nachname2,
Innerhalb deines SQL-Aufrufest kann man über Namespace/Tabellenname/Tabellenalias zwar geziehtl auf "Felder" einer bestimmten Tabelle zugreifen, aber die zurückgegebene "Tabelle" (Result-Tabelle) hat erstmal grudsätzlich keine Namespace/Tabellenname/Tabellenalias mehr drinnen, so daß jedes Feld einen eindeutigen Namen benötigt. Genauso wie man innerhalb des SQL-Befehls ein Namespace/Tabellenname/Tabellenalias angeben muß, wenn ein Feld nicht eindeutig zuordenbar ist, weil es in mehreren der geladenen Tabellen vorkommt. Zitat:
Nja, praktisch gemeinsame Dinge würden in die "Personennamen"-Tabelle reinkommen, also mindestens alles, was zum Namen gehört. (Vor-, Nachname, Titel, Anrede) Was ist eigentlich mit zweiten Vornamen und Dergleichen? Du könntest ja eine Kontaktdaten-Tabelle machen (eMail, Telefon, Adresse, ...) und dann dem Entleiher als NOT NULL zuordnen, sowie den Autor als NULL, fall doch mal Eine dazukommt. Bzw. Eben die "Personen" zusammen in eine Tabelle mit einer NULL--Referenz auf die Kontakte und von Autor, sowie Entleiher nur eine Referenz auf die Personentabelle. Ach ja, wie oft kommt es denn vor, daß Bücher gleich heißen? Die Buchtiteltabelle ist ja praktisch auch unnötig kompliziert, anstatt den Titel direkt in Buch drinnen zu haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 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