EKKi: Zwei SQL-Querys ineinander verschachteln

Beitrag lesen

Mahlzeit Paco,

Eine frage noch, weil du ja ittlerweile schon so im Thema bist ;-) ich hatte ursprünglich eine Tabelle 'Dispo' vorgesehen,

Und was sollte die enthalten - also inhaltlich?
Als Fremdschlüssel die ProjektID und die UserID

Inhaltlich - nicht technisch. Ich habe folgendes Problem: ich besitze keine funktionierende Glaskugel, kann nicht in Deinen Schädel schauen und kenne auch nicht die Anforderungen Deines Projekts.

Also wenn ich beispielsweise den User mit der ID 3 für das Projekt mit der ID 2 für den Bereich Technik disponiere und den User mit ID 5 für grafik dann sollen eben diese Fremdschlüssel in die Tabelle dispo.

Das heißt, Du möchtest Personen zu Projekten zuordnen - und das in verschiedenen Rollen?

id    projekt   projektleiter      technik      grafik    ...
4711  2         --                 3
4712  2         --                 -            5

Ich denke nicht, dass das der Normalisierungsrausch war - eher was Unstrukturierteres ... ;-)
Magst du recht haben, aber es ist doch schon eine Normalisierung, wenn ich die einzelnen Bereiche in eigene Tabellen auslagere.

Nein, ist es nicht. Normalisierung bedeutet (ugs. gesprochen), dass gleichARTIGE (nicht gleiche!) Daten in separate Tabellen ausgelagert werden, um einerseits zwar Redundanzen zu vermeiden - andererseits ist es aber auch Ziel, nicht wegen des Einfügens oder Änderns von Daten immer Tabellenstrukturen ändern zu müssen ... und das müsstest Du - so oder so:

Ursprünglich: Du müsstest immer, wenn eine neue "Rolle" hinzukommt, die Tabelle "dispo" um zusätzliche Spalten erweitern.

Jetzt: Du müsstest immer, wenn eine neue "Rolle" hinzukommt, eine komplett neue Tabelle anlegen.

Projekt     Projektleiter     Technik      Grafik
blabla      Hans              Peter        Klaus
blubb       Jochen            Hans         Peter

bzw

User        Projektleiter       technik    Grafik
Hans        blabla              blubb
Peter                           blabla     blubb
Klaus                                      blabla

OK, dann ist meine Vermutung bzgl. der Rollen richtig. Ich würde Dir folgende Struktur vorschlagen:

Projekt
ID | Name   | ...
---+--------+-----
 1 | blabla |
 2 | blubb  |

Benutzer
ID | Name   | ...
---+--------+-----
 1 | Hans   |
 2 | Jochen |
 3 | Peter  |
 4 | Klaus  |

Rolle
ID | Name          | ...
---+---------------+-----
 1 | Projektleiter |
 2 | Technik       |
 3 | Grafik        |

Dispo
ID | Projekt_ID | Benutzer_ID | Rolle_ID | ...
---+------------+-------------+----------+-----
 1 |          1 |           1 |        1 |
 2 |          1 |           3 |        2 |
 3 |          1 |           4 |        3 |
 4 |          2 |           2 |        1 |
 5 |          2 |           1 |        2 |
 6 |          2 |           3 |        3 |

So kannst Du zu jedem Projekt beliebig viele Benutzer in beliebigen Rollen zuordnen und mit geeigneten Abfragen jederzeit herausfinden, wer in welcher Rolle in welchem Projekt steckt und in welchem Projekt wer in welcher Rolle steckt und und und ...

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|