Datenbankdesign
Lore
- datenbank
0 Kalle_B0 Cheatah0 Steel0 King^Lully
Hallo
Wie kann man denn so eine Beziehung sinnvoll in Tabellen stecken?
Für ein Produkt (mit Nr und Name) werden exakt 4 Produktionsschritte benötigt. Für Produktionsschritte 1 und 2 müssen ein Datum (Soll und Ist) und ein Hyperlink eingetragen werden. Für die Produktionsschritte 3 und 4 braucht es nur ein Datum.
Tabellen: Produkt
Spalten: Nr, Name
Tabelle: Datum
Spalten: Soll, Ist
soweit klar, aber wie kann ich jetzt das Verhältnis: Produkt mit exakt 4 Produktionsschritten abbilden. Ich könnte jedem Produktionsschritt eine Spalte geben, aber dann kann ich dem Produktionsschritt nicht mehr mit einem Datum verlinken :(
Vielleicht so:
Tabelle: Produktion (Join-Tabelle)
Spalten: ProduktNr, Schritt1, Schritt2, Schritt3, Schritt4
Tabelle: Schritt1und2
Spalten: Datum, Hyperlink
Tabelle: Schritt3und4
Spalten: Datum
Aber dann müsste ich die Tabelle Schritt1und2 sowohl mit der Spalte Schritt1 als auch mit der Spalte Schritt2 der Join-Tabelle verbinden. - Auch nicht wirklich elegant???
Kennt jemand sich mit solchen Problemen aus und weiß Rat für mich?
Lieben Dank und
viele Grüße
Lore
Hallo, Lore,
du brauchst in jeder Tabelle für jeden Datensatz eine id (Identifikationsnummer), die von der DB automatisch vergeben wird, wenn du die Spalte als auto_increment definierst.
Dann hast du also
Tabelle Produkt
id nr name
---- ---- ----
4711 0815 Pömpel
n der Datumstabelle verweist du mit einem Feld auf das Produkt und kannst vier oder mehr Kalenderdaten eingeben:
Tabelle datum
id produkt_id soll ist
---- ---- ------ ------
1234 4711 05.06. 10.06.
1235 4711 15.06. 15.06.
...
Wenn du noch die Produktionsschritte unterscheiden willst (sofern sie sich nicht aus dem steigenden Datum ergeben) ergänzt du um eine Spalte.
Gruß, Kalle
Hi,
soweit klar, aber wie kann ich jetzt das Verhältnis: Produkt mit exakt 4 Produktionsschritten abbilden.
hierzu haben zumindest die neuesten relationalen Datenbank-Systeme ein bahnbrechendes Konzept implementiert. Es trägt den Namen "Spalte".
Ich könnte jedem Produktionsschritt eine Spalte geben,
Eine oder mehrere.
aber dann kann ich dem Produktionsschritt nicht mehr mit einem Datum verlinken :(
Wieso sollte das nicht mehr gehen?
Cheatah
Du darfst gerne alles in eine Tabelle kloppen...
ID, Produkt, datum prod1 soll, datum prod1 ist, link prod 1, ...
Hab gehoert sowas soll funktionieren. :)
DU kannst natuerlich fuer jeden Produktionsschritt eine Tabelle machen und die dan ueber die Ids mit dem Produkt verlinken. Wie Du magst und was dir sinnig erscheint. Um zu sagen was effektiverist fehlen Details. Ich finde aber die erster Loesungmit nur einer Tabelle garnicht soo doof fuern Anfang.
Wie kann man denn so eine Beziehung sinnvoll in Tabellen stecken?
Für ein Produkt (mit Nr und Name) werden exakt 4 Produktionsschritte benötigt.
Das riecht nach einer "1:n"-Beziehung (bzw. "1:4"-Beziehung ;), vermutlich bist Du scharf darauf, dass für jedes Produkt immer exakt 4 Produktionsschritte bereit stehen.
Nun, ich würde das INSERTen eines Produkts und seiner vier P.Schritte in eine Transaktion in einer stored procedure packen, um so diese besondere Beziehung zu pflegen.
Im Datendesign würde ich aber eine "1:n" halten.
soweit klar, aber wie kann ich jetzt das Verhältnis: Produkt mit exakt 4 Produktionsschritten abbilden. Ich könnte jedem Produktionsschritt eine Spalte geben, aber dann kann ich dem Produktionsschritt nicht mehr mit einem Datum verlinken :(
Klar, Du kannst die "1:4"-Beziehung über 4 Datenfelder verzeigern, was mir aber sehr uncool erscheint.
Solltest Du das machen, dann sehe ich im Gegensatz zu Dir allerdings keine weiteren Probleme.
Kennt jemand sich mit solchen Problemen aus und weiß Rat für mich?
Lieben Dank und
viele Grüße
Lore
Ja, ich, LG.
Hi,
eine relationale Datenbank ist per se nicht dazu gedacht, Geschäftsprozesse zu modellieren. (Wann immer ich soetwas in live gesehen habe, war es gründlich gegen den Baum gelaufen)
Benutze die Datenbank dazu Informationen zu den einzelnen Schritten zu speichern (vorallem intrinsische Attribute) und baue darüber eine Geschäftslogik, die zum Bleistift überprüft, dass es genau 4 Schritte sind. (oder später mal 27einhalb)
In dem Sinne kann ich Ludger Recht geben, modelliere nicht 1:4 (in welcher Form auch immer) sondern 1:n und abstrahiere deine "Prozesschritte" nach Bedarf.
Greetings
Frank