Hilfe bei der Datenbankentwurfsnormalisierung benötigt (5nf)

8
Können Sie mir zeigen, wie man diese ERD in der 5. Normalform bekommt? Gestern haben wir eine Klassenaufgabe gemacht, bei der ein echter Klient hereinkam und uns erklärte, dass meine Gruppe dieses Modell entwickelt hatte. Ich versuche es noch einen Schritt weiter zu gehen und zu sehen, ob ich es in die 5. Normalform bringen kann kann es besser verstehen, als nächste Woche werden wir eine andere Gruppe ERD machen, die in 5nf sein muss, die Sache ist, ich weiß nicht, wo ich anfangen soll und das Buch erreicht mich nicht. Kannst du mir helfen? Erd Model http://img534.imageshack.us/img534/2118/capturekk.jpg

Neue Information "Fake Clients Needs"

  

Der Kunde hat 2 Abteilungen "Labor 1,   Lab 2 ", die medizinische Artikel aus bestellen   ihn, wie Handschuhe und Pi-Pets usw.   Die Abteilungen sind gewachsen und er   will wissen, was drin ist   Inventar, was die Verkäufer verkaufen   wer hat den besten Preis und was kostet   Zentrum kam es her.

     

Wie er   erklärte es der Gegenstand ist bestellt ist das   Eine Person geht zu ihm und fragt nach   liefert er dann auf, was für ein Labor   Die Person stammt vom Namen der Person   und welche Kostenstelle wird in Rechnung gestellt. aber er   möchte auch verfolgen, was gewesen ist   gekauft nach Datum und was auf Lager ist   und was muss gekauft werden. Er auch   gab ein Beispiel, dass einige Benutzer wollen   Artikel von einem bestimmten Anbieter, der   vielleicht nicht die besten Preise und er   erhält auch einige Kataloge in der   Mails mit Preisen auch, die er will   verfolgen.

Ich entschuldige mich, wenn es durcheinander ist, aber das ist alles aus der Erinnerung.

    
Michael Quiles 05.08.2010, 14:37
quelle

2 Antworten

4

Ich werde meinen Hals herausstrecken und sagen, dass dein aktuelles Schema nicht wirklich für 5NF geeignet ist. Ein Zitat aus Wikipedia sagt, dass die meisten 4NF-Tabellen bereits 5NF entsprechen:

  

Verwendung Nur in seltenen Situationen a   4NF Tabelle entspricht nicht 5NF. Diese   sind Situationen, in denen ein Komplex   Real-Welt-Einschränkung der   gültige Kombinationen von Attributwerten   in der 4NF-Tabelle ist nicht implizit in   die Struktur dieser Tabelle. Wenn solch ein   Tabelle ist nicht auf 5NF normalisiert, die   Last der Aufrechterhaltung der logischen   Konsistenz der Daten innerhalb der   Der Tisch muss teilweise von der. getragen werden   Anwendung verantwortlich für   Einfügen, Löschen und Aktualisieren von   es; und es besteht ein erhöhtes Risiko   dass die Daten in der Tabelle werden   uneinheitlich werden. Im Gegensatz dazu, die   5NF Design schließt die Möglichkeit aus   solche Inkonsistenzen.

Ссылка

Vielleicht ist der Zweck nicht, Ihre Datenbank 5NF zu machen, sondern ihre Struktur im Vergleich zu 5NF zu verstehen und ein Argument dafür zu machen, warum sie bereits in 5NF sein könnte.

Update: Lesen Sie eine Form von Konsens aus den Kommentaren, es scheint, dass Ihr Design bereits in 5NF sein könnte, sei es durch Design oder zufällig aus einem früheren Normalisierungspass.

    
Adam Houldsworth 05.08.2010, 15:45
quelle
1

Haftungsausschluss: Ohne Ihre Geschäftslogik zu kennen, könnte ich mit einigen der folgenden Vorschläge völlig falsch liegen.

Ok, ein paar Dinge, die ich in Ihrem Datenbankschema gesehen habe.

  1. Ihre Kostenstellentabelle scheint sowohl eine Nachschlage- als auch eine Zuordnungstabelle zu sein. Wenn Sie also eine bestimmte Anzahl von Kostenstellen haben, sagen wir beispielsweise 5, aber 1000 Benutzer, dann hat diese Tabelle 5000 Datensätze, die alle den Namen der Kostenstelle speichern (vorausgesetzt, die Kostenstellenzuweisung ist nicht für jeden Benutzer eindeutig). Möglicherweise möchten Sie die Benutzerzuordnung in eine separate Tabelle mit eigenen PKs und FKs von costcenterId und userId abspalten.
  2. Ihre Inventurtabelle, von der ich annehme, dass die Lagerbestandsmenge für einen Artikel verfügbar ist, sollte nur eine Stichprobe benötigen, die nicht sicher ist, wofür die Beschreibung steht. Wenn die Beschreibung nicht für jede Artikelbestandsliste eindeutig ist, möchten Sie diese möglicherweise in ihre eigene Nachschlagetabelle aufteilen und sie in der Bestandstabelle referenzieren.
  3. Sie speichern "lineQuantity" in der Kreditorentabelle. Wofür ist diese Spalte? Es klingt wie es sich auf eine bestimmte Bestellung in irgendeiner Weise bezieht (Menge des gekauften Artikels?) Wenn dies der Fall ist, werden Sie es in seine eigene Tabelle aufteilen und sie der Bestellung und nicht dem Verkäufer zuordnen wollen. ohne genau zu wissen, was lineQuantity ist, könnte dieser Vorschlag völlig falsch sein.
  4. Der letzte Vorschlag ist nicht sicher, ob dies für Ihre Klasse von Bedeutung ist. Sie definieren alle Ihre Datentypen als CHAR (10), die Sie möglicherweise zu den tatsächlichen Datentypen ändern möchten, die Sie für die Datenbank verwenden würden.
Adrian 05.08.2010 16:41
quelle

Tags und Links