Ich habe die Definition von 1NF gelesen, die lautet: „Wenn jedes Attribut der Beziehung atomar ist“. Bitte sagen Sie mir, was Atomic ist.
Kommentare
Antwort
1NF erfordert, dass jede Attributposition in jedem Tupel in jeder Beziehung einen einzelnen Wert des entsprechenden Typs enthält . Die Typen können beliebig komplex sein. Tatsächlich können die Typen Beziehungen sein. (CJ Dates Buch Datenbank im Detail: Relationale Theorie für Praktiker behandelt dieses Problem auf eine Weise, die ziemlich einfach zu verstehen ist.)
„Atomic“ hat nie wirklich gemeint „unteilbar“, weshalb dieser Begriff endgültig in Ungnade fällt. Grob gesagt bedeutet „atomar“, wenn ein Wert Bestandteile enthält, die Datenbank entweder die Existenz dieser Teile ignoriert oder Funktionen bereitstellt, um sie zu manipulieren. Ein Zeitstempelwert enthält beispielsweise diese Teile.
- Jahr
- Monat
- Monat
- Tag
- Stunden
- Minuten
- Sekunden
- Millisekunden
Diese Art von Wert ist offensichtlich teilbar, und alle Datenbankverwaltungssysteme bieten Funktionen zum Bearbeiten dieser Teile. Sie bieten auch die Möglichkeit, einen Zeitstempel als einzelnen Wert auszuwählen. (Was es natürlich ist.)
Antwort
„Atomic“ bezieht sich auf Codds ursprüngliche Vorstellung von 1969, dass Jedes Attribut in jedem Tupel innerhalb einer Beziehung sollte aus einem einzelnen Wert bestehen und keine mehrwertigen Strukturen zulassen, wie sie in Datenbanken wie dem CODASYL-Modell unterstützt werden.
In modernen SQL-DBMS ist die Atomizität kein wirkliches Problem. SQL-Tabellen erlauben keine mehrwertigen Spalten und Werte sind immer „atomar“.
Kommentare
- Technisch gesehen, aber SQL-Tabellen erlauben große Zeichenfolgen als Werte , was in der Praxis eine Lücke ist. Ein Zeichenfolgenfeld, das mehrere durch Kommas getrennte Dezimalzahlen, ASCII-Daten usw. enthält, scheint sicherlich die Absicht der Atomizität zu verletzen, unabhängig davon, ob es dem Buchstaben folgt oder nicht ….
Antwort
Atom bedeutet Daten, die nicht weiter unterteilt werden können.
Atomregel:
- Regel 1: Eine Spalte mit Atomdaten darf nicht mehrere Werte desselben Datentyps in derselben Spalte enthalten.
- Regel 2: Eine Tabelle mit Atomdaten darf nicht mehrere Spalten mit demselben Datentyp enthalten.
Wie eine Vollnamenspalte kann man nicht sagen, dass sie atomar sein könnte, da sie weiter in Nachname, Vorname unterteilt werden kann. Eine Spalte mit Interesse könnte auch weiter unterteilt werden, also eine Spalte, die “ t geteilt werden wird als atomar bezeichnet.
Antwort
Dies bedeutet, dass der Schlüssel nicht zerlegt werden kann. Nehmen wir an, Sie haben eine Tabelle mit drei Spalten, Vorname, Nachname und Telefonnummer. Sie deklarieren einen zusammengesetzten Primärschlüssel für (Vorname, Nachname). Dieser Primärschlüssel ist nicht atomar, weil er tatsächlich ist Bestehend aus zwei Spalten. Nehmen wir nun an, Sie ändern Ihre Tabelle in zwei Spalten, full_name und phone_number, mit einem Primärschlüssel für full_name. Ist der Schlüssel jetzt atomar? Nein, denn in Ihrer Anwendung können Sie sie auf dem Platz immer noch in Vor- und Nachnamen aufteilen. Lassen Sie uns nun unsere Tabellen-ID, den vollständigen Namen und die Telefonnummer, den Primärschlüssel für die ID (die eine Ganzzahl ist) festlegen. Das ist atomar, da die Ganzzahl nicht sinnvoll zerlegt werden kann.
Kommentare
- Ihr Beispiel beginnt jedoch mit der Aussage, dass Atomizität “ bedeutet, dass der Schlüssel nicht zerlegt werden kann „. Das ‚ ist nicht das, was es bedeutet. Es bedeutet, dass Attribute aus einem einzigen Wert bestehen. Es gibt nichts “ nichtatomar “ über einen Schlüssel, der aus mehreren Attributen besteht.
Antwort
Codd scheint ursprünglich bedeutet zu haben, dass kein Wert selbst eine Menge ist. Dies ist ein nützlicher Ausgangspunkt, aber „atomar“ hat keine ontologische Bedeutung, wenn es um Datenbanken geht (etwas, das CJ Date stimmt Codd versuchte, die Definition als etwas zu formalisieren, das außerhalb der Spezifikation nicht weiter zerlegt werden konnte Datenbankoperationen (d.h. Ein Zeitstempel ist atomar, da das Extrahieren des Jahres eine spezielle Datenbankoperation ist. Mit anderen Worten, wenn die Datenbank Unterwerte aufteilen kann, ist das in Ordnung. Sie sollten jedoch keine Mengen (ungeordnete Listen) oder Objekte haben, für deren Ausfall die Anwendungslogik erforderlich ist.
Im Laufe der Zeit und mit diesem Problem in Betriebsumgebungen zu kämpfen, würde ich eine Zwischendefinition der Atomizität vorschlagen, eine strengere als Codd und ohne das Kaninchenloch, das Date bespricht:
Ein Wert ist für Zwecke der ersten Normalform genau dann atomar, wenn:
- Der Wert ist keine Menge (ja, Ich weiß, dass Datum nicht übereinstimmt) und
- Es gibt keine Fremdschlüsselverweise auf einen Teil des Feldes.
Insbesondere kann die Darstellung eines Wertes seine Atomizität nicht bestimmen. Die Darstellung einer IP-Adresse als „10.0.0.1“ gegenüber ARRAY [10,0,0,1] gegenüber 167772161 spielt für die 1NF-Analyse keine Rolle, da sich alle drei auf denselben Atomwert beziehen.
Insbesondere häufig (und manchmal nützlich!) Zu den 1NF-Verstößen in Bezug auf die Atomizität gehören:
- Speichern eines Arrays von Tags in einem Blog-Beitrag oder Kommentar.
- Speichern von Tabellen in Tabellen, in denen sich die innere Tabelle befindet hat eine referenzielle Integritätsanforderung für eine andere Beziehung an anderer Stelle.
Diese Probleme erzeugen mehr oder weniger dieselben Datenanomalien.
Antwort
Betrachten Sie einen Ort auf der Erde. Ich kann es mit (Längen-, Breitengrad-) Paaren oder mit dem HTM-Code (Hierarchical Triangular Mesh) finden. Da beide die gleichen Daten messen. Dies ist eine physikalische Tatsache, die wir mit einem Handy messen können. Es übersetzt eine Gitternummer in [Längen- und Breitengrad] für Sie. Beide müssen in Ihrem Modell entweder atomar oder zusammengesetzt sein.
Verwechseln Sie nicht die Skala, die für die Messung und Notation zur Anzeige der Daten verwendet wird. mit Art der Daten.
Kommentare
- Ich habe diesen Beitrag für ein paar Tippfehler bearbeitet. Ich ‚ glaube nicht, dass dieser Benutzer der echte Joe Celko ist, aber ich habe auf meta.stackexchange.com nach Identitätswechsel gesucht und diesen Thread . Schauen Sie sich die Antworten der Herren Atwood und Spolsky an, die Gründer von stackexchange. Es scheint zulässig zu sein.
Antwort
Atomschlüssel ist diese Art von Primärschlüssel, die nicht zerlegt werden kann bedeutet, dass dieser Schlüssel nicht weiter unterteilt ist, wie z. B. Student_ID, Employee_ID.