Datenbankkonzept: Richtige oder falsche Normalisierung?

  1. 2nd

    2nd Thread StarterMacUser Mitglied

    Mitglied seit:
    25.07.2004
    Beiträge:
    8.901
    Zustimmungen:
    242
    Moin,

    ich habe 3 Tabellen mit Inhalten:

    1. Artikel mit: ArtikelID, Name, Preis
    2. Gruppen mit: GruppenID, Gruppenname
    3. Untergruppen mir: UntergruppenID, Untergruppenname

    Diese Tabellen setze ich per ID in Relation zueinander mit jeweils einer Verknüpfungstabelle:

    1. Artikel <-> Gruppen = Artikel_Gruppen mit: ArtikelID, GruppenID

    2. Artikel <-> Untergruppen = Artikel_Untergruppen mit: ArtikelID, UntergruppenID


    Also insgesamt 5 Tabellen.

    Richtiges Konzept?

    Danke für Hilfe,

    2nd
     
  2. ThaHammer

    ThaHammerMacUser Mitglied

    Mitglied seit:
    01.06.2004
    Beiträge:
    3.277
    Zustimmungen:
    13
    Wäre es nicht logischer UntergruppenID <-> GruppenID und ArtikelID <-> UntergruppenID?
     
    ThaHammer, 08.09.2006
  3. 2nd

    2nd Thread StarterMacUser Mitglied

    Mitglied seit:
    25.07.2004
    Beiträge:
    8.901
    Zustimmungen:
    242
    Da die Untergruppen bestimmten Gruppen zugeteilt sind: jo.

    Aber wie realisiere ich das denn bzgl. der Tabellen? So hier?

    Artikel_Gruppen_Untergruppen mit: ArtikelID, GruppenID, UntergruppenID

    Also 3 Fremdschlüssel in einer Tabelle und damit nur 4 Tabellen?

    Hmm, glaube schon oder :kopfkratz: & :kopfrauch:

    2nd
     
  4. msslovi0

    msslovi0MacUser Mitglied

    Mitglied seit:
    20.03.2005
    Beiträge:
    2.714
    Zustimmungen:
    115
    Mir ist nicht so ganz klar, warum du Gruppen und Untergruppen aufteilst auf zwei Tabellen.

    Ich würde hier mit einer Tabelle für die Artikel, einer für die Gruppen und einer Kreuztabelle arbeiten. Die Informationen, welche Gruppe Vater bzw. Kind von welcher anderen Gruppe ist, kannst du ja direkt in der Gruppentabelle ablegen.

    Matt
     
    msslovi0, 08.09.2006
  5. Pinacolada

    PinacoladaMacUser Mitglied

    Mitglied seit:
    26.04.2005
    Beiträge:
    419
    Zustimmungen:
    41
    jup, ich würde hierbei wie folgt vorgehen:

    Gruppe: Gruppen_id, name, parent_gruppen_id
    artikel: artikel_id, etc.

    wenn ein artikel in mehreren gruppen sein soll, dann natürlich noch eine 3. tabelle mit den beiden fremdschlüsseln - ansonsten direkt in die tabelle artikel packen.
     
    Pinacolada, 08.09.2006
  6. 2nd

    2nd Thread StarterMacUser Mitglied

    Mitglied seit:
    25.07.2004
    Beiträge:
    8.901
    Zustimmungen:
    242
    Also in der Gruppentabelle 4 Attribute erzeugen?

    id, gruppenname, untergruppenname , id_to_parent

    Und wenn id_to_parent leer ist, ist es automatisch eine Elterngruppe? Ich bau auch die Menus aus den Datensätzen, deswegen brauche ich die Differenzierung.

    2nd
     
  7. 2nd

    2nd Thread StarterMacUser Mitglied

    Mitglied seit:
    25.07.2004
    Beiträge:
    8.901
    Zustimmungen:
    242
    Ok, stimmt, ich muss gar nicht zwischen Untergruppe und Gruppe differenzieren, das macht der parent_gruppen_id.

    Und meien Bezug zum Artikel bau ich in die Artikeltabelle ein, also 2 zusätzliche Attribute: parent_gruppen_id und child_gruppen_id als Fremdschlüssel auf die Gruppentabelle?

    EDIT: Ich weiss das noch nicht genau, wo die Artikel überall stehen sollen, also werde ich parent_gruppen_id und child_gruppen_id mit einer artikel_id in eine 3. Tabelle tun, richtig? Also 3 Fremdschlüssel in einer Tabelle (artikel, gruppe, untergruppe)?

    2nd
     
  8. Pinacolada

    PinacoladaMacUser Mitglied

    Mitglied seit:
    26.04.2005
    Beiträge:
    419
    Zustimmungen:
    41

    nein, du speicherst einfach die gruppe - in der sich das produkt befindet. Wozu sollte denn auch die parent_gruppen_id mitgespeichert werden? - solche daten können nämlich bei späteren änderungen (untergruppe wird verschoben) extreme probleme verursachen
     
    Pinacolada, 08.09.2006
  9. msslovi0

    msslovi0MacUser Mitglied

    Mitglied seit:
    20.03.2005
    Beiträge:
    2.714
    Zustimmungen:
    115
    Was willst du mit dem Gruppennamen und dem Untergruppennamen?

    Ich hab früher auch viel rumexperimentiert mit Tabellen für Kategorien etc. Aber mit mehreren Tabellen nimmst du die die Flexibilität, wenn du mal eine Unterkategorie unterhalb der Unterkategorie brauchst.
    Deswegen arbeite ich mittlerweile nur noch mit einer Tabelle, die als Nested Set aufgebaut ist. Das ist IMHO die einfachste uns sauberste Lösung.

    Matt
     
    msslovi0, 08.09.2006
  10. 2nd

    2nd Thread StarterMacUser Mitglied

    Mitglied seit:
    25.07.2004
    Beiträge:
    8.901
    Zustimmungen:
    242
    Moment, ich bin ein bisschen langsamer als Ihr :)

    D. h. ich speichere in der Artikeltabelle den Namen als String (Varchar) von der Gruppe und Untergruppe in 2 Extraspalten? Und wenn man mal eine Gruppe umbenennt muss man alle Gruppennamen in der Artikeltabelle umbenennen :kopfkratz:

    @matt: Jo, habs schon verstanden...


    2nd
     
Die Seite wird geladen...
Ähnliche Themen - Datenbankkonzept Richtige oder
  1. Hausbesetzer
    Antworten:
    7
    Aufrufe:
    976
    Deine Mudda
    27.04.2016
  2. Korgo
    Antworten:
    5
    Aufrufe:
    840
  3. reise-enduro
    Antworten:
    10
    Aufrufe:
    1.221
    Olivetti
    15.10.2012
  4. Apfeltasche1
    Antworten:
    9
    Aufrufe:
    4.535
    Apfeltasche1
    17.12.2011
  5. Keek
    Antworten:
    2
    Aufrufe:
    3.488