Frage

Was ist eine KISS (Keep it simple, stupid) Art und Weise zu erinnern, was Boyce-Codd Normalform ist und wie ein nicht-normierte Tisch zu nehmen und BCNF es?

Wikipedia 's. Info: nicht sehr hilfreich für mich

War es hilfreich?

Lösung

Chris Datum Definition ist eigentlich recht gut, so lange, wie Sie verstehen, was er meint:

Jedes Attribut

Ihre Daten müssen in separaten, unterschiedlichen Attributen / Spalten / Werte gebrochen werden, die auf anderen Attributen nicht abhängen. Ihr voller Name ist ein Attribut. Ihr Geburtsdatum ist ein Attribut. Ihr Alter ist kein Attribut, das auf dem aktuellen Datum abhängt, die nicht Teil Ihrer birth ist.

muss eine Tatsache

darstellen

Jedes Attribut ist eine einzige Tatsache, nicht eine Sammlung von Fakten. Ändern eines Bits in einem Attribut ändert sich die ganze Bedeutung. Ihr Geburtsdatum ist eine Tatsache. Ist Ihr vollständiger Name eine Tatsache? Nun, in einigen Fällen ist es, denn wenn Sie Ihren Nachnamen Ihren vollständigen Namen anders ändern, nicht wahr? Aber Genealoge haben Sie einen Namen und einen Familiennamen, und wenn Sie Ihren Namen ändern Sie Ihren Familiennamen nicht ändern, so dass sie getrennt sind Fakten.

über den Schlüssel,

Ein Attribut ist etwas Besonderes, es ist ein Schlüssel. Der Schlüssel ist ein Attribut, das für alle Informationen in Ihrer Daten muss eindeutig sein und darf sich nie ändern. Ihr voller Name ist kein Schlüssel, weil es ändern kann. Ihre Sozialversicherungsnummer ist kein Schlüssel, weil sie wiederverwendet erhalten. Ihre SSN und Geburtsdatum ist kein Schlüssel, auch wenn die Kombination kann nie wiederverwendet werden, da ein Attribut nicht eine Kombination aus zwei Tatsachen sein kann. Ein GUID ist ein Schlüssel. Eine Nummer, die Sie erhöhen und nie wieder verwenden ist ein Schlüssel.

die ganzen Schlüssel,

Der Schlüssel allein muss ausreichend sein, um [ und notwendig !] Ihre Werte zu identifizieren; Sie können nicht die gleichen Daten, die von verschiedenen Tasten dargestellt haben, noch eine Teilmenge der Schlüsselspalten ausreichen, um die Tatsache zu identifizieren sein. Angenommen, Sie mit einem GUID-Schlüssel, Namen und Adresse Werten ein Adressbuch hatten. Es ist OK, um die gleichen Namen haben zweimal mit verschiedenen Schlüsseln erscheinen, wenn sie unterschiedliche Menschen darstellen und sind nicht die „gleichen Daten“. Wenn Mary Jones in der Buchhaltung ihren Namen Mary Smith ändert, Mary Jones im Vertrieb nicht ihren Namen auch ändern. Auf der anderen Seite, wenn Mary Smith und John Smith die gleiche Adresse haben, und es ist wirklich der gleiche Ort, ist dies nicht erlaubt. Sie haben ein neues Schlüssel / Wert-Paar mit der Adresse und einen neuen Schlüssel erstellen.

Sie sind auch den Schlüssel zu verwenden für diese neue Single Adresse als Wert im Adressbuch, da jetzt der gleiche Adresse Schlüssel vertreten würde zweimal nicht erlaubt. Stattdessen müssen Sie mit den Werten des Adressbuchs Schlüssel und der Adresse Schlüssel einen dritten Schlüssel / Wert-Paar bilden; Sie finden eine Adresse einer Person durch ihre Buchtaste und Adressschlüssel in dieser Gruppe von Werten entsprechen.

und nichts als die Taste

Es darf nichts anderes als der Schlüssel sein, der Ihre Werte identifiziert. Zum Beispiel werden, wenn Sie eine Adresse von „The Taj Mahal“ (vorausgesetzt, es ist nur eine) Sie sind nicht erlaubt, eine Stadt Wert in demselben Datensatz erlaubt, da, wenn Sie die Adresse kennen würden Sie wissen, auch die Stadt. Hierdurch ergäben sich auch die Möglichkeit, es in einer anderen Stadt mehr als ein Taj Mahal ist. Stattdessen müssen Sie wieder einen sekundären Standort Schlüssel mit eindeutigen Werten wie das Taj schaffen, das Weißen Haus in DC, und so weiter, und ihre Städten. Oder verbieten „Adressen“, die zu einer Stadt einzigartig sind.

helfen Sie mir also Codd.

Andere Tipps

Hier sind einige hilfreichen Auszüge aus der Wikipedia-Seite über dritte Normalform :

Bill Kent definiert dritte Normalform auf diese Weise:

  

Jedes Nicht-Schlüsselattribut „muss vorsehen,   eine Tatsache, über den Schlüssel, der ganze Schlüssel,   und nichts als die Schlüssel. "

     

Die Forderung, dass Nicht-Schlüsselattribut sein   abhängig von „der gesamten Schlüssel“, sicher   dass eine Tabelle ist in 2NF; des Weiteren   erfordern, dass Nicht-Schlüsselattribut sein   abhängig von „nichts anderes als der Schlüssel“   stellt sicher, dass die Tabelle in 3NF ist.

Chris Datum passt sich Kents mnemonic Boyce-Codd-Normalform zu definieren:

  

"Jedes Attribut muss eine Tatsache darstellen   über den Schlüssel, den gesamten Schlüssel und   nichts anderes als die Schlüssel.“Hier ist die   Anforderung wird mit jedem betroffenen   Attribut in der Tabelle, nicht nur   Nicht-Schlüsselattribute.

Das kommt ins Spiel, wenn eine Tabelle mehr Verbindung Kandidatenschlüssel hat, und ein Attribut innerhalb eines Kandidatenschlüssels hat eine Abhängigkeit von einem Teil eines anderen Kandidatenschlüssels. Dritte Normalform wäre dies nicht verbieten, weil sie Schlüsselattribute ausschließt. Aber BCNF gilt die Regel, als auch auf wichtige Attribute.

Was, wie eine Tabelle erfüllen BCNF zu machen, müssen Sie die zusätzliche Abhängigkeit darstellen, mit einem anderen Attribute und möglicherweise durch Spalten Attribute in einer anderen Tabelle.

gegoogelt I „Boyce Codd Normalform“ und nach wikipedia dies ist das zweite Ergebnis. Mein Lehrbuch gibt eine sehr einfache Definition in Bezug auf den relationalen Datenbank-Management-Systeme:

  

Die linke Seite jedes nicht-triviale FD muss Superkey sein.

-. "Datenbanksysteme The Complete Book" von Garcia-Molina, Ullman und Widom

Die beste informelle Antwort, die ich gelesen habe, ist, dass in BCNF, jeder „Pfeil“ in jeder funktionalen Abhängigkeit ist ein „Pfeil“ aus einem Kandidatenschlüssel. Ich die Quelle nicht mehr erinnern, aber es war wahrscheinlich etwas Chris Datum geschrieben.

Im Grunde Boyce-Codd ist "fünfte Normalform". Es ist optisch erkennbar durch das Vorhandensein von „Attributive entities“ in dem Datenmodell, für Dinge wie Typen (z.B. Rollen, Status, Prozesszustand, location-Typ, Telefon-Typ, etc). Die attributiven Einheiten (Unter Subtypen) sind Listen von endlichen Mengen von Werten, die weiterhin eine Klassenstufe Entität kategorisieren. So können Sie einen Telefon-Typen haben ( 'mobilen', 'Schreibtisch', 'VoIP') E-Mail-Account-Typen ( 'Business', 'persönlich', 'Gaming'), Rolle (Projektmanager, Daten-Modellierer, super-Modell) usw. . Ein weiterer morphologischer Anhaltspunkt ist die Existenz von Super-Typen (aka. Master-Klassen, super-Klassen, Meta-Einheiten), wie Parteien (Subtypen seines Unternehmen, Person, etc.).

Es ist im Grunde Taxonomy wild gegangen (..no das Video nicht so aufregend ist) mit der atomaren oder Blattebene; siehe Bill Karwin Kommentar oben für eine technische Erklärung.

Boyce-Codd Level-Modelle sind im Wesentlichen sehr logische Modelle detailliert, abgeleitet von einfacheren Business-basierten konzeptuellen Modellen. ** Sie sind in der Regel nicht ver BATIM in dem physikalischen Modell implementiert, weil PDM-Optimierung für die Leistung (oder funktionale Einfachheit) in den Super-Typen führen und Prädikat Entitäten als Dropdown-Listen in UIs verwaltet werden, oder in hinter den Kulissen Logik in der Anwendung oder in Datenbankbeschränkungen und Methoden referentielle Integrität zu erzwingen. (Das heißt, sie können als Nachschlagetabellen im PDM-Schema am Ende, oder sie können durch Code und nicht dargestellt in der Datenbank behandelt werden).

Also - warum tun sie, wenn sie in der PDM kann am Ende nicht? Aus dem gleichen Grunde bauen Sie ein gutes Modell 3NF, bevor Sie ‚optimieren‘, so dass die Datenbankstruktur, die reale Welt spiegelt und ist daher stabiler als die typischen kludges wir erben und hat heroische Taten zu tun Arbeit als unser Geschäft / Kunden zu machen Anforderungen ändern.

Oft ist es am einfachsten zu Ihrem Darm zu hören, und dies wird natürlich kommen. Generell, wenn Sie treffen 3NF Sie BCNF getroffen haben. Dies gilt nicht für eine detaillierte Analyse eines ERD oder Beispiele, aber es gibt dreizehn Regeln nach Codd. Ich finde es am besten, diese Regeln zu folgen, aber immer daran denken, niemand richtige Weg ist, lose ihnen Dinge zu tun, so folgen. Also in Bezug auf die RDBMS, hier sind die Regeln:

http://www.87android.com / 12-Regeln-of-relational-Datenbank-Modell-by-codd /

Dies kann die Frage nicht direkt zu beantworten, aber wenn Sie fragen, wie es zu bekommen, um zu BCNF oder eine einfache Möglichkeit, daran zu erinnern, dann verstehen Sie nicht Normalisierung gut genug. Das ist jedoch nicht von Belang. Relationale Datenbanken viele Formen annehmen und nur sehr wenige sind gut gemacht. Das Beste, was man tun kann, ist, wissen, was es bedeutet, relational zu sein, folgt den Regeln oben, und keine Sorge über das Niveau der Normalisierung. Der Prozess der Normalisierung eliminiert die Duplizierung von Daten. Jede Ebene mehr so, indem sie in der Migration von funktionalen Abhängigkeiten. Denken Sie daran, und Sie werden in Ordnung, Ihr Darm und Intellekt wird den Rest erledigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top