Lore: Datenbankdesign

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

  1. 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

  2. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. 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.

  4. 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.

    1. 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