2016-05-08 5 views
1

Ich kenne die Grundregeln für jeden Schritt, aber ich finde sie sehr verwirrend, wenn ich sie anwenden muss. Ich arbeite gerade an diesem BeispielNormalisieren einer Datenbank zu 1nf, 2nf, 3nf, bcnf?

Diese Tabelle wird für eine Autovermietung verwendet. Kunden können Autos von verschiedenen Verkaufsstellen mieten, ein bestimmtes Fahrzeug ist nur an einer bestimmten Verkaufsstelle erhältlich und kann nur an einem bestimmten Kunden zu einem bestimmten Zeitpunkt gemietet werden. Die 1nF Tabelle hat Felder:

carreg, HireDate, Marke, Modell, CustNo, CustName, OutletNo, OutletLoc

Primärschlüssel sind (carreg, HireDate)

Kann mir bitte jemand sprechen durch Umwandlung, dies zu bcnf Schritt für Schritt? und die Ergebnisse bei jedem Schritt produziert? Dank

Meine Antworten:

2NF

carreg, HireDate, CustNo, CustName (pk: carreg, HireDate)

carreg, Marke, Modell, OutNo, outLoc (pk: carreg)

3NF

carreg, HireDate, CustNo (pk: carreg, HireDate)

CustNo, CustName (pk: CustNo)

carreg, Modell, OutNo (pk: carreg)

Modell Make (pk: Modell)

OutNo, outLoc (pk: OutNo)

Sind meine Antworten richtig? und wie konvertiere ich das in bcnf?

+1

Zumindest beschreiben, was Sie versucht haben. Was sind die Entitäten, die du normalisieren kannst? –

+0

bei 2nf ich habe: carReg, HireDate, custNo, CustName (erste zwei Primärschlüssel) und CarReg, Marke, Modell, OutNo, Outloc (erster Primärschlüssel) – Csbk

+0

ill fügen den Rest meiner Frage hinzu – Csbk

Antwort

0

Sie müssen die Definitionen aller NFs kennen, die Sie gut aufgelistet haben, um das zu tun. Also lassen Sie uns rekapitulieren:

  • 1NF: Einfach gesagt - wir keine mehrwertig oder Composite-Attributen auf dem Tisch mit anderen zusammen wollen. Also trennen wir sie in eine neue Tabelle und fügen einen Schlüssel hinzu, um den ursprünglichen Tisch mit dem neuen zu verbinden.

  • 2NF: Dieses ist ein bisschen schwierig, aber hier ist, wie Sie es tun können: Wenn es eine Abhängigkeit von einem zusammengesetzten Schlüssel gibt, muss es auf den gesamten Schlüssel und nicht nur etwas davon. Dies ist nur wichtig, wenn Sie einen zusammengesetzten Schlüssel in Ihrer Tabelle haben.

  • 3NF: Dieser sagt, dass wir keine Transitivität in unseren Attributen der Tabelle haben können. Was das bedeutet ist dies: Kann ich von einem Attribut alle anderen Attribute unabhängig vom Schlüssel wissen? Beispiel: Angenommen, Sie haben ein Restaurant und einen Tisch für das Essen. Essen hat was drin? Ein Preis, Name und sagen wir eine ID. Ab dem Namen der Mahlzeit, wenn die Mahlzeiten einzigartige Namen haben, können Sie den Preis und die ID finden. Es wird angenommen, dass ID der Schlüssel ist, daher ist dies in 3NF nicht erlaubt. Aber nehmen wir jetzt an, dass Sie einen Tisch für Ihre Kunden haben. Angenommen, es hat eine eindeutige Nummer, einen Namen, eine Adresse und eine Kontaktnummer. Wenn wir nun davon ausgehen, dass die eindeutige Zahl der Schlüssel ist, können Sie von ihrem Namen die anderen Attribute finden? Was ist, wenn sie denselben Namen haben? Oder sogar die gleiche Adresse? Natürlich sind diese in diesem Fall nicht transitiv.

  • BCNF: Kurz gesagt, das heißt, dass für jede Art von Abhängigkeit, es nur auf den Schlüssel und nur den Schlüssel sein muss. Beispiel: Angenommen, Sie haben eine Tabelle für die Rechnungen in einem Restaurant, die Folgendes enthält: bill_number, customer_number, waiter_ID, meal_number und eine Beschreibung. Angenommen, alles außer der Beschreibung sind Schlüssel und einzigartig. Schau, was jetzt passiert: waiter_ID hängt von der bill_number ab, damit wir es finden können. Wir brauchen nicht einmal die meal_number oder die customer_number und umgekehrt. Die Sache ist, dass es hier einige unnötige Beziehungen gibt, deshalb müssen sie weiter getrennt werden, da die Abhängigkeit nicht vom gesamten Schlüssel abhängt. (Beachten Sie, dass die Beschreibung jedoch auf alle von ihnen abhängt. Vielleicht ist der gleiche Kellner nahm den gleichen Kunden Rechnung einer Schüssel. Sehen Sie, was in diesem Fall passiert? Nur bill_number verwendet werden können, zu identifizieren)

I‘ Ich bin ein bisschen rostig in diesen Themen, aber diese sollten nicht zu falsch sein. Alles in allem, wenn Sie die Definitionen richtig verstehen, sollten Sie in der Lage sein, es gut zu machen. Es gibt viele gute Beispiele auf youtube von dem, was ich gefunden habe.

+0

ich bin verwirrt zwischen 3nf und bcnf obwohl . Wenn es bei 3nf ist, dann hast du die partielle und transitive Abhängigkeit entfernt, also sollte nicht alles jetzt nur vom Schlüssel abhängen? – Csbk

+0

Ich suchte schnell nach der Antwort Ihrer Frage, dieser Beitrag scheint es recht gut zu erklären: http://StackOverflow.com/A/19750427/5672740 – SenselessCoder