Ist eine Tabelle ohne Primärschlüssel normalisiert?


9

In einer Vorlesung zeigte mir mein Dozent einen Tisch ohne Primärschlüssel. Bei einer Befragung sagte er, dass es in 3NF in Ordnung ist, eine Tabelle ohne Primärschlüssel zu haben, wenn Sie transitive Abhängigkeiten entfernen.

Kein Primärschlüssel impliziert jedoch, dass es keine funktionalen Abhängigkeiten gibt - aber 3NF ist das Entfernen von transitiven Abhängigkeiten, und mir wurde beigebracht, dass jede Tabelle einen Primärschlüssel für die Normalisierung haben muss, da es nur um funktionale Abhängigkeiten geht.

Ich weiß, dass es durchaus möglich ist, eine Tabelle ohne Primärschlüssel zu erstellen. Wird diese Datenbank jedoch als normalisiert betrachtet, wenn diese Tabelle vorhanden ist?

Ich sollte hinzufügen, die Tabelle hat keinen "eindeutigen Schlüssel", keinen primären, keinen zusammengesetzten, keinen fremden.

Die gezeigte Tabelle enthält drei Attribute, von denen keines als primär oder eindeutig gekennzeichnet ist. Ich fragte, ob es ein Fehler sei und er sagte, es sei in Ordnung, keinen zu haben. Ich stellte die Bemerkung in Frage, da keine der Informationen in der Tabelle eindeutig identifiziert werden kann und er behauptete, es sei in Ordnung, so zu sein. Dies widerspricht dem, was mir über Normalisierung beigebracht wurde.

Antworten:


15

Wenn eine Relation keinen Kandidatenschlüssel hat (und der Primärschlüssel nur einer der Kandidatenschlüssel ist), kann sie doppelte Zeilen haben, also ist es tatsächlich keine Relation! (da Beziehungen immer Mengen sind).

In diesem Fall ist es korrekter, es als Tabelle und nicht als Beziehung zu bezeichnen, wie Sie es in Ihrer Frage getan haben, und zu beachten, dass mehrere RDBMS tatsächlich Nicht-Beziehungen verwalten können, sodass Tabellen auch in diesem Fall ohne Einschränkung der Eindeutigkeit zulässig sind ist sehr ungewöhnlich und führt zu Problemen (Anomalien) beim Bearbeiten der Daten.

In diesem Fall ist es jedoch nicht angebracht, über Normalformen zu sprechen: Die gesamte Normalisierungstheorie basiert auf der Grundannahme, dass die interessierenden Objekte Beziehungen und keine Multisets sind. Tatsächlich basiert diese Theorie auf der (etwas diskutierten) universellen Beziehungsannahme, die davon ausgeht, dass alle Beziehungen einer Datenbank eine Teilmenge einer Projektion einer solchen Beziehung sind, die alle Attribute in jeder Beziehung enthält. Und dieses Objekt ist in der Tat eine Beziehung (dh eine Menge), keine Multiset.

Die Tatsache, dass wir, wenn wir über Daten des relationalen Datenmodells sprechen, manchmal die beiden Begriffe Tabellen und Beziehungen austauschen, bedeutet nicht, dass sie tatsächlich synonym sind, und dieser Unterschied ist grundlegend, wenn wir über die Normalisierungstheorie sprechen. Denken Sie daran, dass in den Büchern, wenn eine normale Form eingeführt wird, immer etwas gesagt wird wie:

Eine Beziehung ist in xxx normaler Form, wenn ...


Ist ein Multiset nicht isomorph zu einer Menge, in der Sie countden Elementen ein zusätzliches Attribut hinzufügen ?
Barmar

3
@Barmar ja, aber dann fügen Sie einen Kandidatenschlüssel und alle relevanten funktionalen Abhängigkeiten hinzu, sodass Sie sich aus Sicht der Normalisierungstheorie in einem völlig anderen Fall befinden.
Renzo

1
Wenn Personen relationale Operationen an nicht relationalen Tabellen ausführen, erwarten sie relationale Ergebnisse. Wenn sie sie nicht bekommen, erscheinen diese anomal.
Walter Mitty

0

3NF bezieht sich auf eine Tabelle, die den ersten 3 Regeln der Datennormalisierung entspricht.

  1. Beseitigung sich wiederholender Gruppen
  2. Beseitigung redundanter Daten
  3. Eliminierung von Spalten, die nicht vom Schlüssel abhängig sind

Die dritte Regel erfordert einen Schlüssel. Sie haben Recht, der Tisch des Dozenten war nicht 3NF.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.