php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Normalisierung auf Beispiel anwenden


 
einermeiner
11-03-2012, 20:12 
 
Tabelle Modell


ID (PK)
Modellname
Hersteller_ID (FK)

Dabei ist der Modellname aber auch eindeutig (jeder Modellname genau 1 Hersteller, 1 Hersteller n Modelle), könnte also auch Schlüssel sein.


Ist dadurch eine Normalform, ich vermute die 3., verletzt? Denn aus Modellname könnte man ja funktional Hersteller_ID ableiten.
Modellname als PK möchte ich allerdings aus diversen Gründen (Speicher, Inkonsistenz) nicht, denn denn die ID dient als FK in anderen Tabellen.

Oder müsste es so sein:
Tabelle Modell


ID (PK)
Hersteller_ID (FK)

Tabelle connect_Modellname_ID


Modell_ID (PK, FK)
Modellname

 
Woerni
11-03-2012, 21:03 
 
Naja, Normalisierungsregeln sind schön und gut. Aber letztlich kommt es immer auch darauf an, was man mit der Datenbank-Struktur abbilden will/soll.
Gerade aus Performanz-Überlegungen werden nicht selten gerade die höheren Normalisierungen oft denormalisiert. Solange Du Dir dessen bewusst bist, was Du warum machst, ist das eine bewusste Design-Entscheidung und kann dann entsprechend gegen die Thesen geprüft werden, d.h. bringt es mir wirklich die Ersparnis, die ich gedacht habe oder ist die Normalisierung doch besser.

In Deinem konkreten Fall wäre Modellname als ganzes ja auch kein korrekter FK in anderen Tabellen, da die HerstellerId erst aus dem Modellnamen berechnet werden müsste (wie auch immer). Daher ist Dein Ansatz in meinen Augen korrekt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:17 Uhr.