Frage zum Datenbankdesign

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!

Ich fange gerade erst an mich mit Datenbanken und JDBC zu beschäftigen und bräuchte deshalb euren Rat beim Datenbankdesign. Wenn man eine Tabelle T hat, die mehrere andere Tabellen referenziert, ist es dann besser Zwischentabellen zu verwenden, oder, die Primärschlüssel der Tabellen, die referenziert werden, als Fremdschlüssel in die Tabelle T zu übernehmen.

Z.B. Tabelle Person (Primärschlüssel personId) und Tabelle Employer (Primärschlüssel employerId). Jeder Arbeitgeber und jede Person kann mehrere Adressen haben. Jede Adresse gehört zu genau einem Arbeitgeber bzw. einer Person.

Wenn ich personId und employerId als Fremschlüssel in die Address-Tabelle übernehme, dann müsste man nicht über Zwischentabellen auf Adressen zugreifen. Allerdings scheint mir die Verwendung von Zwischentabellen irgendwie sauberer zu sein. Da ich allerdings noch keine Erfahrung damit habe, würde ich gerne eure Meinung dzu hören.
 

Dukel

Top Contributor
Anonymous hat gesagt.:
Hallo!

[...]
Z.B. Tabelle Person (Primärschlüssel personId) und Tabelle Employer (Primärschlüssel employerId). Jeder Arbeitgeber und jede Person kann mehrere Adressen haben. Jede Adresse gehört zu genau einem Arbeitgeber bzw. einer Person.
[...]

Was jetzt? Hat jetzt jede Person (ist der Employer nicht der Arbeitnehmer) genau eine Addresse oder mehrere Addressen?
Was soll an Zwischentabellen sauberer sein?
Ich würde die 2 Tabellen verknüpfen.
 
G

Guest

Gast
Hallo Dukel!

Danke für die Antwort!
Employer ist der Arbeitgeber und Employee wäre der Arbeitnehmer. Jede Person kann mehrere Adressen haben und jeder Arbeitgeber kann mehrere Addressen haben, aber eine Adresse kann nicht mehrfach verwendet werden. D.h.
Person - Addresse ist eine 1:n Beziehung und Arbeitgeber - Adresse ist auch eine 1:n Beziehung.

Die Frage stelle ich deshalb, weil in den Beispielen, die ich bisher gesehen habe die Foreign keys immer das Attribut NOT NULL hatten. In meinem Fall wäre es aber so, dass ich in der Address-Tabelle 2 Foreign keys hätte (personId und employerId), wobei einer immer null sein muß. D.h. Wenn ein Address-Datensatz zu einer Person gehört, dann muß die employerId = null sein und personId hätte den Primärschlüsselwert des entprechenden Personendatensatzes. Gehört eine Addresse zu einem Arbeitgeber, dann wäre es genau umgekehrt.

Da ich wie gesagt noch keine Erfahrung mit solchen Dingen habe, wüsste ich gerne, ob das eine übliche Lösung für so ein Problem ist.

Mit 2 Zwischentabellen PersonAddress mit den Feldern personId und addressId und EmployerAddress mit den Feldern employerId und addressId könnte man dieses "NULL Problem" der Foreign keys in der Address Tabelle lösen. Wobei ich eben nicht weiß, ob es überhaupt ein Problem ist wenn Foreign keys null sein können bzw. müssen.
 

Bleiglanz

Gesperrter Benutzer
a) es ist überhaupt kein Problem, dass die FKs NULL sind, teilweise ist das ja logisch erforderlich

b) dein Problem ist klar, ich würde das auch mit 2 FKs realisierien von denen eben einer NULL sein muss (Constraint einbauen)

Wirklich gute Lösung kenne ich auch nicht (und würde mich sehr über eine freuen), das mit den zwei Zwischentabellen ist - für diesen Fall - einfach zu kompliziert :)
 
G

Guest

Gast
Hallo Bleiglanz!

Danke für die Anworten! Das hat mir schonmal sehr geholfen.

Eine Frage hätte ich allerdings noch: Wie kann man so einen Constraint definieren, der sicherstellt, dass der jeweils andere Foreign Key null ist ?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Frage zu Bundesliga-DB Datenbankprogrammierung 1
pkm Frage zu Encodingproblem bei einer Datenbankanbindung Datenbankprogrammierung 1
B Frage bei einer SQL Query Datenbankprogrammierung 3
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
B SQLite Frage zu SQLite Datenbankverbindung Datenbankprogrammierung 7
M Frage zu JSON Datenbankprogrammierung 16
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
P Frage zu Connection.close() Datenbankprogrammierung 4
R MySQL Frage zum Anlegen von Artikeln inkl. Verbindungen Datenbankprogrammierung 0
M Grundlegende Klassen-Design Frage Datenbankprogrammierung 0
P MySQL Frage zur Einbindung in ein Java Projekt Datenbankprogrammierung 2
I Frage zu Datenmodellierung Datenbankprogrammierung 3
J Normalisierung - Allgemeine Frage zur 3. Normalform (Eventuelle Abhängigkeit) Datenbankprogrammierung 4
F Normalisierung Datenbank Frage Datenbankprogrammierung 5
J Frage zu ResultSet Datenbankprogrammierung 3
W Frage zur Datenbankwahl bei Umstieg auf Java Datenbankprogrammierung 7
D Frage zu DISTINCT in SQL Datenbankprogrammierung 5
K Frage zur Datenprotokollierung bei DML Anweisungen Datenbankprogrammierung 3
K Frage zu SQL Datenbankprogrammierung 2
L PostgreSQL Hibernate-Frage Datenbankprogrammierung 2
K Frage zu Datenbankmodellierung Datenbankprogrammierung 15
D Generelle Frage zum Umgang mit Datensätzen Datenbankprogrammierung 5
L Frage zu UpdateQuery Datenbankprogrammierung 12
8 MySQL Kurze Frage zur Sicherheit Datenbankprogrammierung 9
D Frage zu INSERTS über mehrere Datenbanktabellen Datenbankprogrammierung 3
D Frage zu Ausführungsmöglichkeiten von SQL Befehlen Datenbankprogrammierung 13
D Frage zu SQL Syntax Datenbankprogrammierung 17
D Frage zu potenziellen Leerzeichen in einer Datenbank Datenbankprogrammierung 5
X Connection schließen oder speichern? Performance Frage Datenbankprogrammierung 7
J mal wieder eine Frage zu parallelen Transaktionen.. Datenbankprogrammierung 2
V Frage zu Hibernate-Mapping Datenbankprogrammierung 11
N Allg. Frage zur Datenbankverbindung Datenbankprogrammierung 2
E einfache Frage bei DB-Zugriff Datenbankprogrammierung 11
S MySQL Frage zu LeftJoin Abfrage Datenbankprogrammierung 2
O eigentlich simple SQL Frage Datenbankprogrammierung 2
M Frage zu folgender Query in EJB-QL Datenbankprogrammierung 4
H JBoss: Frage zur Datasource in der ...-ds.xml Datenbankprogrammierung 4
F Frage zu Prepared Statement Datenbankprogrammierung 2
R hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen Datenbankprogrammierung 8
U Frage zum Erfassen von hinzufügten und entfernten Objekten Datenbankprogrammierung 9
M prinzipielle Frage zu Datenbanken und jars ... Datenbankprogrammierung 2
S Hibernate - spezielle Frage, n zu n Beziehung Datenbankprogrammierung 11
R Frage zu PreparedStatement/ResultSet Datenbankprogrammierung 16
J Frage zu Synchronisation bei parallelem Zugriff, speziell mit JPA Datenbankprogrammierung 2
F EclipseLink persistence.xml Frage Datenbankprogrammierung 11
N Frage zur Sicherheit von Konfigurationsdatei Datenbankprogrammierung 4
H performance frage Datenbankprogrammierung 9
G Frage zum Insert-Statement Datenbankprogrammierung 2
Antoras Design-Frage: Datenzuordnung zu verschiedenen Accounts Datenbankprogrammierung 2
T HSQL: verständnis Frage Datenbankprogrammierung 2
T Java JPA Frage bzgl. DISTINCT Datenbankprogrammierung 2
G Frage zu connection? Datenbankprogrammierung 9
A Frage zu SQL-Abfrage Datenbankprogrammierung 2
G Frage zu SQL "WHERE IN (1, 2, 3. , N)" Datenbankprogrammierung 8
G Allgemeine Frage zu Datenbanklimits Datenbankprogrammierung 27
G allgemeine JDBC-Connection Frage Datenbankprogrammierung 2
G Frage zu Hibernate und M:N Beziehung Datenbankprogrammierung 9
K HQL Frage Datenbankprogrammierung 10
D kurze Frage zu einem Query Datenbankprogrammierung 6
B Hibernate mit MySql - Verständniss Frage Datenbankprogrammierung 8
N Kleine Frage zu Connection Pooling mit DataSource Datenbankprogrammierung 2
T Update-Frage Datenbankprogrammierung 11
E SQL-Frage (Löschen aller Datensätze) Datenbankprogrammierung 9
P Frage zu Performancetest einer Datenbank Datenbankprogrammierung 3
W Frage zum Umgang mit DB-Daten Datenbankprogrammierung 2
E Nochmal eine Datenbankabfrage Frage :-o (JOIN oder so) Datenbankprogrammierung 4
P frage zu "" bei INSERT STATEMENTS Datenbankprogrammierung 2
K frage zum ausführen eines INSERT statements Datenbankprogrammierung 16
L frage zu mySQL Datenbankprogrammierung 4
C Mal ne Frage an die Experten Datenbankprogrammierung 4
J DB Verbindung Design Frage Datenbankprogrammierung 5
M Datenbankanbindung in Java : Newbie-Frage Datenbankprogrammierung 2
U Grundsätzliche Frage Datenbankprogrammierung 4
S Frage zu INSERT Datenbankprogrammierung 2
X Wieder mal ne Frage ... Datenbankprogrammierung 15
B Brauche Tipps für Datenbankdesign Datenbankprogrammierung 8
X PostgreSQL Datenbankdesign für Vokabeltrainer Datenbankprogrammierung 48
M Datenbankdesign, UML Darstellung Hierarchie Datenbankprogrammierung 1
G Datenbankdesign Datenbankprogrammierung 4
J Datentyp der Spalte beim Datenbankdesign unbekannt Datenbankprogrammierung 12
G Datenbankdesign Datenbankprogrammierung 3
heart_disease Beratung für Datenbankdesign Datenbankprogrammierung 13
Z Datenbankdesign Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben