Korrekte schribweise der Datenbank
steffen
- php
Hi,
Ich habe nun den Fall, dass ich eine Tabelle 'Firma'. Darin steht der Firmenname und die eine Mitarbeiter_ID.
Soll ich nun die Tbl 'Mitarbeiter' so erstellen:
Mitarbeiter
ID
Mitarbeiter_ID
Name
Vorname
oder eine zwischentabelle? Wie kann ich das mit PHP am besten auslesen? Weil bisher weiß ich nur, dass dies mit 2 Query ABfragen geht, oder liege ich falsch?
Danke euch für die Hife
Steffen
Hey!
Hi,
Ich habe nun den Fall, dass ich eine Tabelle 'Firma'. Darin steht der Firmenname und die eine Mitarbeiter_ID.
Soll ich nun die Tbl 'Mitarbeiter' so erstellen:
Mitarbeiter
ID
Mitarbeiter_ID
Name
Vornameoder eine zwischentabelle? Wie kann ich das mit PHP am besten auslesen? Weil bisher weiß ich nur, dass dies mit 2 Query ABfragen geht, oder liege ich falsch?
Kannst du dich vielleicht mal klarer ausdrücken? "Ich habe nun den Fall, dass ich eine Tabelle 'Firma'." Ah, ja! Was ist denn das Problem?
Hi Hendrik,
mein Problem ist das, dass ich
1. Nicht weiß, wie ich die Tabelle am geschicktesten mache (ob eine Zwichentabelle dabei mehr sinn macht, als die Werte in die 'Mitarbeiter' zu schreiben.
2. Wüßte ich gerne wie ich die am geschicktesten auslese (ob 1 query oder ob ich 2 querys benötige)
Ok Tabellenerklärung:
Tbl Firma
ID, Firmenname, Land, Mitarbeiter_ID
1, Siemens, D, 1
Tbl Mitarbeiter
ID, Name, Vorname
1, Hubert, Steffen
2, Mueller, Peter
Nun arbeiten beiden bei Fa. Siemens. Mach ich nun am geschicktesten eine zwischentabelle, wie zB:
tbl Firma_Mitarbeiter
tbl_Firma, tbl_mitarbeiter
1, 1
1, 2
oder soll ich dies eher in tbl mitarbeiter dazuschreiben?
Wie schreib ich die Query am geschicktesten, um zu erfahren wie die firma heisst, in welchem Land sie ist und welche mitarbeiter dort arbeiten. Bisher nutzte ich da immer 2 querys dazu.
Gruß Steffen
Hey!
Wie schreib ich die Query am geschicktesten, um zu erfahren wie die firma heisst, in welchem Land sie ist und welche mitarbeiter dort arbeiten. Bisher nutzte ich da immer 2 querys dazu.
Dann mach das doch einfach weiterhin, wenn nichts dagegespricht!
Hendrik
Hi Hendrik,
ja klappt auch wunderbar, aber wollte nur fragen, ob es da eine bessere Lösung gibt.
mfg
Hallo
ja klappt auch wunderbar, aber wollte nur fragen, ob es da eine bessere Lösung gibt.
Selbstverständlich gibt es eine weit bessere Lösung, Rouven hat sie erläutert.
Freundliche Grüße
Vinzenz
Hi Steffen,
Tbl Firma
ID, Firmenname, Land, Mitarbeiter_ID
1, Siemens, D, 1Tbl Mitarbeiter
ID, Name, Vorname
1, Hubert, Steffen
2, Mueller, Peter
Das ist aus meiner Sicht ein klassischer Fall von falsch herum modellierter Beziehung. Du hast EINE Firma mit N Mitarbeitern. EIN Mitarbeiter gehört aber nur zu EINER Firma.
Solange das das Szenario ist, ist die Beziehung tatsächlich 1:n. Bei derartigen Beziehungen legt man den Fremdschlüssel auf die Seite, von der aus die :1-Beziehung besteht, weil der Satz sowieso existiert. Im Klartext: 1 Datensatz für die Firma, 1 Datensatz für den Mitarbeiter und jeder Mitarbeiter weiß zu welcher Firma er gehört:
ID, Name, Vorname, FirmenID
Solltest du in der Tat eine n:m-Beziehung haben weil ein Mitarbeiter bei mehreren Firmen arbeitet, dann wird diese wie folgt aufgelöst:
Firma (ID, Name, Land)
Mitarbeiter (ID, Name, Vorname)
Anstellung(ID_Firma, ID_Mitarbeiter)
In beiden Fällen ist es in der Regel (oder sagen wir nach meiner Erfahrung) effizienter die Datenbank alle Aufgaben in einer Abfrage wahrnehmen zu lassen, also mit Joins zu arbeiten. SELFHTML hält da auch etwas Information für dich bereit:
Einführung Joins
Fortgeschrittene Joins
MfG
Rouven