Verwandtschaftsmodell

Das Verwandtschaftsmodell für das Datenbankmanagement ist ein Datenbankmodell, das auf der Prädikat-Logik der ersten Ordnung zuerst gestützt ist, formuliert und vorgeschlagen 1969 von Edgar F. Codd.

Der Zweck des Verwandtschaftsmodells ist, eine Aussagemethode zur Verfügung zu stellen, um Daten und Abfragen anzugeben: Direkt staatliche Benutzer, was Information die Datenbank enthält, und welche Information sie davon wollen, und lassen die Datenbankverwaltungssystemsoftware darauf aufpassen, Datenstrukturen zu beschreiben, für die Daten und Wiederauffindungsverfahren zu versorgen, um auf Abfragen zu antworten.

Die ursprüngliche Durchführung von IBM der Ideen von Codd war System R. Es hat mehrere kommerzielle und offene Quellprodukte gegeben, die auf den Ideen von Codd, einschließlich des DB2 von IBM, Sybase Adaptive Server Enterprise (ASE), Orakel-Datenbank, Microsoft SQL Server, PostgreSQL, MySQL und viele andere gestützt sind. Die meisten von diesen verwenden die SQL Datendefinition und fragen Sprache. Ein Tisch in einem SQL Datenbankdiagramm entspricht einer Prädikat-Variable; der Inhalt eines Tisches zu einer Beziehung; Schlüsseleinschränkungen, andere Einschränkungen und SQL-Abfragen entsprechen Prädikaten. Jedoch gehen SQL Datenbanken, einschließlich DB2, vom Verwandtschaftsmodell in vielen Details ab; Codd hat wild gegen Abweichungen argumentiert, die die ursprünglichen Grundsätze in Verlegenheit bringen.

Übersicht

Die Hauptidee des Verwandtschaftsmodells ist, eine Datenbank als eine Sammlung von Prädikaten über einen begrenzten Satz von Prädikat-Variablen zu beschreiben, Einschränkungen auf die möglichen Werte und Kombinationen von Werten beschreibend. Der Inhalt der Datenbank ist zu jeder vorgegebenen Zeit ein begrenztes (logisches) Modell der Datenbank, d. h. eine Reihe von Beziehungen, ein pro Prädikat-Variable, solch, dass alle Prädikate zufrieden sind. Eine Bitte um die Information von der Datenbank (eine Datenbankabfrage) ist auch ein Prädikat.

Alternativen zum Verwandtschaftsmodell

Andere Modelle sind das hierarchische Modell und Netzmodell. Einige Systeme mit diesen älteren Architekturen sind noch im Gebrauch heute in Datenzentren mit hohen Datenumfang-Bedürfnissen, oder wo vorhandene Systeme so kompliziert und abstrakt sind, würde er untersagend gekostet, um zu Systemen abzuwandern, die das Verwandtschaftsmodell verwenden; auch des Zeichens sind neuere objektorientierte Datenbanken.

Eine neue Entwicklung ist das Modell des Typ-Gegenstands der Gegenstand-Beziehung, das basiert in der Annahme, dass jede Tatsache in der Form von einer oder mehr binären Beziehungen ausgedrückt werden kann. Das Modell wird in Object Role Modeling (ORM), RDF/Notation 3 (N3) und in Gellish Englisch verwendet.

Das Verwandtschaftsmodell war das erste in formellen mathematischen Begriffen zu beschreibende Datenbankmodell. Hierarchisch und Netzdatenbanken hat vor Verwandtschaftsdatenbanken bestanden, aber ihre Spezifizierungen waren relativ informell. Nachdem das Verwandtschaftsmodell definiert wurde, gab es viele Versuche, die verschiedenen Modelle zu vergleichen und ihnen gegenüberzustellen, und das hat zum Erscheinen von strengeren Beschreibungen der früheren Modelle geführt; obwohl die Verfahrensnatur der Datenmanipulationsschnittstellen für den hierarchischen und die Netzdatenbanken das Spielraum für die Formalisierung beschränkt hat.

Durchführung

Es hat mehrere Versuche gegeben, eine wahre Durchführung des Verwandtschaftsdatenbankmodells, wie ursprünglich definiert, durch Codd zu erzeugen, und durch das Datum, Darwen und andere erklärt, aber niemand ist populäre Erfolge bis jetzt gewesen. Rel ist einer der neueren Versuche, das zu tun.

Geschichte

Das Verwandtschaftsmodell wurde von E.F. (Ted) Codd als ein allgemeines Modell von Daten erfunden, und nachher aufrechterhalten und von Chris Date und Hugh Darwen unter anderen entwickelt. Im Dritten Manifest (zuerst veröffentlicht 1995) zeigen Date und Darwen, wie das Verwandtschaftsmodell bestimmte gewünschte objektorientierte Eigenschaften anpassen kann.

Meinungsverschiedenheiten

Codd selbst, einige Jahre nach der Veröffentlichung seines 1970-Modells, hat eine drei geschätzte Logik (Stimmt, Falsch, Fehlend oder UNGÜLTIG) Version davon vorgeschlagen, um sich mit fehlender Information, und in seinem Das Verwandtschaftsmodell für die Datenbankverwaltungsversion 2 (1990) zu befassen, er ist ein Schritt weiter mit einer vier geschätzten Logik (Stimmt, Falsch, Fehlend, aber Anwendbar, Fehlend, aber Unanwendbar) Version gegangen. Aber diese, sind vermutlich wegen des Beachtens Kompliziertheit nie durchgeführt worden. Die UNGÜLTIGE Konstruktion von SQL war beabsichtigt, um ein Teil eines drei geschätzten Logiksystems zu sein, aber ist dahinter wegen logischer Fehler im Standard und in seinen Durchführungen zurückgeblieben.

Verwandtschaftsmusterthemen

Das Modell

Die grundsätzliche Annahme des Verwandtschaftsmodells ist, dass alle Daten als mathematische n-stufige Beziehungen, eine n-stufige Beziehung vertreten werden, die eine Teilmenge des Kartesianischen Produktes von n Gebieten ist. Im mathematischen Modell, über solche Daten vernünftig urteilend, wird in der zwei geschätzten Prädikat-Logik getan, bedeutend, dass es zwei mögliche Einschätzungen für jeden Vorschlag gibt: Entweder wahr oder falsch (und insbesondere kein dritter Wert solcher als unbekannt, oder nicht anwendbar, von denen jeder häufig mit dem Konzept von UNGÜLTIGEN vereinigt werden).

Daten werden auf mittels einer Verwandtschaftsrechnung oder Verwandtschaftsalgebra, diese bedient, in der ausdrucksvollen Macht gleichwertig seiend.

Das Verwandtschaftsmodell von Daten erlaubt dem Datenbankentwerfer, eine konsequente, logische Darstellung der Information zu schaffen. Konsistenz wird durch das Umfassen offen erklärter Einschränkungen im Datenbankdesign erreicht, das gewöhnlich das logische Diagramm genannt wird. Die Theorie schließt einen Prozess der Datenbanknormalisierung ein, wodurch ein Design mit bestimmten wünschenswerten Eigenschaften von einer Reihe logisch gleichwertiger Alternativen ausgewählt werden kann. Die Zugriffspläne und anderen Durchführungs- und Operationsdetails werden durch den DBMS Motor behandelt, und werden im logischen Modell nicht widerspiegelt. Das hebt sich von der üblichen Praxis für SQL DBMSs ab, in dem Leistungsoptimierung häufig Änderungen zum logischen Modell verlangt.

Der grundlegende Verwandtschaftsbaustein ist das Gebiet oder der Datentyp, gewöhnlich abgekürzt heutzutage, um zu tippen. Ein Tupel ist ein bestellter Satz von Attribut-Werten. Ein Attribut ist ein befohlenes Paar des Attribut-Namens und Typ-Namens. Ein Attribut-Wert ist ein spezifischer gültiger Wert für den Typ des Attributes. Das kann entweder ein Skalarwert oder ein komplizierterer Typ sein.

Eine Beziehung besteht aus einem Kopfstück und einem Körper. Ein Kopfstück ist eine Reihe von Attributen. Ein Körper (einer n-stufigen Beziehung) ist eine Reihe von N-Tupeln. Das Kopfstück der Beziehung ist auch das Kopfstück von jedem seiner Tupel.

Eine Beziehung wird als eine Reihe von N-Tupeln definiert. Sowohl in der Mathematik als auch im Verwandtschaftsdatenbankmodell ist ein Satz eine nicht eingeordnete Sammlung von einzigartigen, nichtkopierten Sachen, obwohl einige DBMSs eine Ordnung zu ihren Daten auferlegen. In der Mathematik hat ein Tupel eine Ordnung, und berücksichtigt Verdoppelung. E.F. Codd hat ursprünglich Tupel mit dieser mathematischen Definition definiert. Später war es einer der großen Einblicke von E.F. Codd, dass, Attribut-Namen statt einer Einrichtung verwendend (im Allgemeinen) auf einer auf Beziehungen gestützten Computersprache so viel günstiger sein würde. Diese Scharfsinnigkeit wird noch heute verwendet. Obwohl sich das Konzept geändert hat, hat der Name "Tupel" nicht. Eine unmittelbare und wichtige Folge dieses Unterscheidungsmerkmals ist, dass im Verwandtschaftsmodell das Kartesianische Produkt auswechselbar wird.

Ein Tisch ist eine akzeptierte Sehdarstellung einer Beziehung; ein Tupel ist dem Konzept der Reihe ähnlich, aber bemerken Sie, dass auf der Datenbanksprache SQL die Säulen und die Reihen eines Tisches bestellt werden.

Ein relvar ist eine genannte Variable von einem spezifischen Beziehungstyp, dem zu jeder Zeit etwas Beziehung dieses Typs zugeteilt wird, obwohl die Beziehung Nulltupel enthalten kann.

Das Kernprinzip des Verwandtschaftsmodells ist der Informationsgrundsatz: Die ganze Information wird durch Datenwerte in Beziehungen vertreten. In Übereinstimmung mit diesem Grundsatz ist eine Verwandtschaftsdatenbank eine Reihe von relvars, und das Ergebnis jeder Abfrage wird als eine Beziehung präsentiert.

Die Konsistenz einer Verwandtschaftsdatenbank wird beachtet, nicht durch Regeln, die in die Anwendungen eingebaut sind, die sie, aber eher durch Einschränkungen, erklärt als ein Teil des logischen Diagramms und beachtet durch den DBMS für alle Anwendungen verwenden. Im Allgemeinen werden Einschränkungen mit Verwandtschaftsvergleich-Maschinenbedienern ausgedrückt, von denen gerade ein, "Teilmenge" () ist, ist theoretisch genügend. In der Praxis, wie man erwartet, sind mehrere nützliche Schnellschriften verfügbar, von denen die wichtigsten Kandidat-Schlüssel (wirklich, Superschlüssel) und Auslandsschlüsseleinschränkungen sind.

Interpretation

Um das Verwandtschaftsmodell von Daten völlig zu schätzen, ist es notwendig, die beabsichtigte Interpretation einer Beziehung zu verstehen.

Der Körper einer Beziehung wird manchmal seine Erweiterung genannt. Das ist, weil es als eine Darstellung der Erweiterung von einem Prädikat, dieser interpretiert werden soll, der Satz von wahren Vorschlägen seiend, die durch das Ersetzen jeder freien Variable in diesem Prädikat durch einen Namen gebildet werden können (ein Begriff, der etwas benennt).

Es gibt eine isomorphe Ähnlichkeit zwischen den freien Variablen des Prädikats und den Attribut-Namen des Beziehungskopfstücks. Jedes Tupel des Beziehungskörpers stellt Attribut-Werte zur Verfügung, um das Prädikat durch das Ersetzen von jeder seiner freien Variablen zu realisieren. Das Ergebnis ist ein Vorschlag, der, wie man hält, wegen des Äußeren des Tupels im Beziehungskörper, wahr ist. Im Gegenteil, wie man hält, ist jedes Tupel, dessen sich Kopfstück dieser der Beziehung anpasst, aber das im Körper nicht erscheint, falsch. Diese Annahme ist als die geschlossene Weltannahme bekannt: Es wird häufig in praktischen Datenbanken verletzt, wo die Abwesenheit eines Tupels bedeuten könnte, dass die Wahrheit des entsprechenden Vorschlags unbekannt ist. Zum Beispiel kann die Abwesenheit des Tupels ('John', 'Spanier') von einem Tisch von Sprachsachkenntnissen nicht als Beweise notwendigerweise genommen werden, dass Unbekannte nicht Spanisch sprechen.

Für eine formelle Ausstellung dieser Ideen, sieh die Abteilung mit dem Satz theoretische Formulierung unten.

Anwendung auf Datenbanken

Ein Datentyp, wie verwendet, in einer typischen Verwandtschaftsdatenbank könnte der Satz von ganzen Zahlen, der Satz von Charakter-Schnuren, der Satz von Daten sein, oder die zwei boolean schätzen wahr und falsch und so weiter. Die entsprechenden Typ-Namen für diese Typen könnten die Schnuren "interne Nummer", "Rotforelle", "Datum", "boolean" usw. sein. Es ist wichtig, aber zu verstehen, dass Verwandtschaftstheorie das nicht diktiert, welche Typen unterstützt werden sollen; tatsächlich, heutzutage, wie man erwartet, sind Bestimmungen für benutzerbestimmte Typen zusätzlich zu den eingebauten durch das System zur Verfügung gestellten verfügbar.

Attribut ist der Begriff, der in der Theorie dafür gebraucht ist, was allgemein eine Säule genannt wird. Ähnlich wird Tisch im Platz der theoretischen Begriff-Beziehung allgemein verwendet (obwohl in SQL der Begriff mit der Beziehung keineswegs synonymisch ist). Eine Tabellendatenstruktur wird als eine Liste von Säulendefinitionen angegeben, von denen jede einen einzigartigen Säulennamen und den Typ der Werte angibt, die für diese Säule erlaubt werden. Ein Attribut-Wert ist der Zugang in einer spezifischen Säule und Reihe, wie "Unbekannter" oder "35".

Ein Tupel ist grundsätzlich dasselbe Ding wie eine Reihe, außer in einem SQL DBMS, wo die Säulenwerte hintereinander bestellt werden. (Tupel werden nicht bestellt; statt dessen wird jeder Attribut-Wert allein durch den Attribut-Namen und nie durch seine Ordnungsposition innerhalb des Tupels identifiziert.) Ein Attribut-Name könnte "Name" oder "Alter" sein.

Eine Beziehung ist eine Tabellenstruktur-Definition (eine Reihe von Säulendefinitionen) zusammen mit den Daten, die in dieser Struktur erscheinen. Die Struktur-Definition ist das Kopfstück, und die Daten, die darin erscheinen, ist der Körper, eine Reihe von Reihen. Eine Datenbank relvar (Beziehungsvariable) ist als eine Basistabelle allgemein bekannt. Das Kopfstück seines zugeteilten Werts wird so jederzeit in der Tabellenbehauptung angegeben, und sein Körper ist, dass am meisten kürzlich zugeteilt ihm durch das Hervorrufen eines Aktualisierungsmaschinenbedieners (normalerweise, EINSATZ, AKTUALISIERUNG, oder LÖSCHEN). Das Kopfstück und der Körper des Tisches, der sich aus Einschätzung von einer Abfrage ergibt, werden durch die Definitionen der im Ausdruck dieser Abfrage verwendeten Maschinenbediener bestimmt. (Bemerken Sie, dass in SQL das Kopfstück nicht immer eine Reihe von Säulendefinitionen, wie beschrieben, oben ist, weil es für eine Säule möglich ist, keinen Namen und auch für zwei oder mehr Säulen zu haben, um denselben Namen zu haben. Außerdem ist der Körper nicht immer eine Reihe von Reihen, weil in SQL es für dieselbe Reihe möglich ist, mehr zu erscheinen, als einmal in demselben Körper.)

SQL und das Verwandtschaftsmodell

SQL, am Anfang gestoßen als die Standardsprache für Verwandtschaftsdatenbanken, geht vom Verwandtschaftsmodell in mehreren Plätzen ab. Der Strom ISO SQL Standard erwähnt das Verwandtschaftsmodell nicht oder gebraucht Verwandtschaftsbegriffe oder Konzepte. Jedoch ist es möglich, eine Datenbank zu schaffen, die sich dem Verwandtschaftsmodell mit SQL anpasst, wenn man bestimmte SQL-Eigenschaften nicht verwendet.

Die folgenden Abweichungen vom Verwandtschaftsmodell sind in SQL bemerkt worden. Bemerken Sie, dass wenige Datenbankserver den kompletten SQL Standard durchführen und insbesondere einige dieser Abweichungen nicht erlauben. Wohingegen UNGÜLTIG zum Beispiel allgegenwärtig ist, ist das Erlauben von Doppelsäulennamen innerhalb einer Tabelle oder anonymer Säulen ungewöhnlich.

Doppelreihen

:The dieselbe Reihe kann mehr erscheinen als einmal in einem SQL Tisch. Dasselbe Tupel kann mehr nicht erscheinen als einmal in einer Beziehung.

Anonyme Säulen

Die:A-Säule in einem SQL Tisch kann namenlos und so unfähig sein, in Ausdrücken Verweise angebracht zu werden. Das Verwandtschaftsmodell verlangt, dass jedes Attribut genannt wird und referenceable.

Doppelsäule nennt

:Two oder mehr Säulen desselben SQL Tisches können denselben Namen haben und können deshalb wegen der offensichtlichen Zweideutigkeit nicht Verweise angebracht werden. Das Verwandtschaftsmodell verlangt, dass jedes Attribut referenceable ist.

Säulenordnungsbedeutung

Die:The-Ordnung von Säulen in einem SQL Tisch wird definiert und, eine Folge bedeutend, die ist, dass die Durchführungen von SQL des Kartesianischen Produktes und der Vereinigung beide nichtauswechselbar sind. Das Verwandtschaftsmodell verlangt dort, um keine Bedeutung zu jeder Einrichtung der Attribute einer Beziehung zu sein.

Ansichten ohne KONTROLLE-AUSWAHL

:Updates zu einer ohne KONTROLLE-AUSWAHL definierten Ansicht kann akzeptiert werden, aber die resultierende Aktualisierung zur Datenbank hat die ausgedrückte Wirkung auf sein Ziel nicht notwendigerweise. Zum Beispiel kann eine Beschwörung des EINSATZES akzeptiert werden, aber die eingefügten Reihen könnten in der Ansicht nicht alle erscheinen, oder eine Beschwörung der AKTUALISIERUNG kann auf Reihen hinauslaufen, die von der Ansicht verschwinden. Das Verwandtschaftsmodell verlangt Aktualisierungen zu einer Ansicht, dieselbe Wirkung zu haben, als ob die Ansicht eine Basis relvar war.

Tische von Columnless unerkannter

:SQL verlangt, dass jeder Tisch mindestens eine Säule hat, aber es gibt zwei Beziehungen der Grad-Null (cardinality ein und Null), und sie sind erforderlich, um Erweiterungen von Prädikaten zu vertreten, die keine freien Variablen enthalten.

UNGÜLTIGER

Spezielles Zeichen von:This kann statt eines Werts erscheinen, wo auch immer ein Wert in SQL insbesondere im Platz eines Säulenwerts in einer Reihe erscheinen kann. Die Abweichung vom Verwandtschaftsmodell entsteht aus der Tatsache, dass die Durchführung dieses Ad-Hoc-Konzepts in SQL mit dem Gebrauch der drei geschätzten Logik verbunden ist, unter der der Vergleich von UNGÜLTIGEN mit sich wahr nicht trägt, aber stattdessen den dritten Wahrheitswert, unbekannt nachgibt; ähnlich trägt der Vergleich, der mit etwas anderem ungültig ist als sich, falsch nicht, aber trägt stattdessen unbekannt. Es ist wegen dieses Verhaltens in Vergleichen, das UNGÜLTIG als ein Zeichen aber nicht ein Wert beschrieben wird. Das Verwandtschaftsmodell hängt vom Gesetz der ausgeschlossenen Mitte ab unter der irgendetwas ist das nicht wahr ist falsch und irgendetwas, was nicht falsch ist, ist wahr; es verlangt auch, dass jedes Tupel in einem Beziehungskörper einen Wert für jedes Attribut dieser Beziehung hat. Diese besondere Abweichung wird von einigen wenn nur weil E.F diskutiert. Codd selbst hat schließlich den Gebrauch von speziellen Zeichen und einer 4 geschätzten Logik verteidigt, aber das hat auf seiner Beobachtung basiert, dass es zwei verschiedene Gründe gibt, warum man ein spezielles Zeichen im Platz eines Werts könnte verwenden wollen, der Gegner des Gebrauches solcher Logik dazu gebracht hat zu entdecken, dass verschiedenere Gründe und mindestens nicht weniger als 19 bemerkt worden sind, der eine 21 geschätzte Logik verlangen würde. SQL selbst verwendet UNGÜLTIG zu mehreren Zwecken anders als, "unbekannten Wert" zu vertreten. Zum Beispiel ist die Summe des leeren Satzes UNGÜLTIG, Null bedeutend, der Durchschnitt des leeren Satzes ist UNGÜLTIG, bedeutend, dass das unbestimmte und UNGÜLTIGE Erscheinen im Ergebnis einer LINKEN VERBINDUNGSLINIE "keinen Wert bedeuten kann, weil es keine zusammenpassende Reihe im rechten operand gibt".

Verwandtschaftsoperationen

Benutzer (oder Programme) bitten um Daten von einer Verwandtschaftsdatenbank, indem sie ihm eine Abfrage senden, die auf einer speziellen Sprache, gewöhnlich ein Dialekt von SQL geschrieben wird. Obwohl SQL für Endbenutzer ursprünglich beabsichtigt war, ist es für SQL-Abfragen viel üblicher, in die Software eingebettet zu werden, die eine leichtere Benutzerschnittstelle zur Verfügung stellt. Viele Websites, wie Wikipedia, führen SQL-Abfragen durch, wenn sie Seiten erzeugen.

Als Antwort auf eine Abfrage gibt die Datenbank einen Ergebnis-Satz zurück, der gerade eine Liste von Reihen ist, die die Antworten enthalten. Die einfachste Abfrage soll gerade alle Reihen von einem Tisch zurückgeben, aber öfter werden die Reihen irgendwie gefiltert, um gerade die gewollte Antwort zurückzugeben.

Häufig werden Daten von vielfachen Tischen in einen, durch das Tun einer Verbindungslinie verbunden. Begrifflich wird das durch die Einnahme aller möglichen Kombinationen von Reihen (das Kartesianische Produkt), und dann das Herausfiltern von allem außer der Antwort getan. In der Praxis schreiben Verwandtschaftsdatenbankverwaltungssysteme um (optimieren) Abfragen, um schneller mit einer Vielfalt von Techniken zu leisten.

Es gibt mehrere Verwandtschaftsoperationen zusätzlich zur Verbindungslinie. Diese schließen Projekt (der Prozess ein, einige der Säulen zu beseitigen), schränken (der Prozess ein, einige der Reihen zu beseitigen), Vereinigung (eine Weise, zwei Tische mit ähnlichen Strukturen zu verbinden), Unterschied (der die Reihen in einem Tisch verzeichnet, die im anderen nicht gefunden werden), schneiden Sie sich (der die Reihen verzeichnet, die in beiden Tischen gefunden sind), und Produkt (erwähnt oben, der jede Reihe eines Tisches mit jeder Reihe vom anderen verbindet). Abhängig von dem andere Quellen Sie sich beraten, gibt es mehrere andere Maschinenbediener - von denen viele in Bezug auf diejenigen definiert werden können, die oben verzeichnet sind. Diese schließen ein schließen sich, Außenmaschinenbediener wie äußere Verknüpfung und Außenvereinigung und verschiedene Formen der Abteilung halban. Dann gibt es Maschinenbediener, um Säulen und zusammenfassende oder ansammelnde Maschinenbediener umzubenennen, und wenn Sie Beziehungswerte als Attribute (RVA - geBeziehungsschätztes Attribut), dann Maschinenbediener wie Gruppe und Ungruppe erlauben. Die AUSGESUCHTE Behauptung in SQL dient, um alle von diesen abgesehen von den Gruppen- und Ungruppenmaschinenbedienern zu behandeln.

Die Flexibilität von Verwandtschaftsdatenbanken erlaubt Programmierern, Abfragen zu schreiben, die von den Datenbankentwerfern nicht vorausgesehen wurden. Infolgedessen können Verwandtschaftsdatenbanken durch vielfache Anwendungen auf Weisen verwendet werden, wie die ursprünglichen Entwerfer nicht vorausgesehen haben, der für Datenbanken besonders wichtig ist, die seit langem (vielleicht mehrere Jahrzehnte) verwendet werden könnten. Das hat die Idee und Durchführung von bei Geschäften sehr populären Verwandtschaftsdatenbanken gemacht.

Datenbanknormalisierung

Beziehungen werden gestützt auf den Typen von Anomalien klassifiziert, für die sie verwundbar sind. Eine Datenbank es ist in der ersten normalen Form, ist für alle Typen von Anomalien verwundbar, während eine Datenbank es ist im Gebiet/Schlüssel normale Form, keine Modifizierungsanomalien hat. Normale Formen sind in der Natur hierarchisch. D. h. der Tiefststand ist die erste normale Form, und die Datenbank kann den Anforderungen für das höhere Niveau normale Formen nicht entsprechen, ohne zuerst allen Anforderungen der kleineren normalen Formen entsprochen zu haben.

Beispiele

Datenbank

Ein idealisiertes, sehr einfaches Beispiel einer Beschreibung von einem relvars (Beziehungsvariablen) und ihre Attribute:

  • Kunde (Steuerpersonalausweis, Name, Adresse, Stadt, Staat, Schwirren, Telefon, E-Mail)
  • Ordnung (Datum gelegt, Datum versprochen, Begriffe, Status)
  • Ordnungslinie (Qty)
  • Rechnung (Datum, Status)
  • Rechnungslinie (Qty verladen)
  • Produkt (Produktbeschreibung)

In diesem Design haben wir sechs relvars: Kunde, Ordnung, Ordnungslinie, Rechnung, Rechnungslinie und Produkt. Die kühnen, unterstrichenen Attribute sind Kandidat-Schlüssel. Die nichtkühnen, unterstrichenen Attribute sind Auslandsschlüssel.

Gewöhnlich wird ein Kandidat-Schlüssel willkürlich gewählt, um den primären Schlüssel genannt und in der Vorliebe über die anderen Kandidat-Schlüssel verwendet zu werden, die dann abwechselnde Schlüssel genannt werden.

Ein Kandidat-Schlüssel ist ein einzigartiger Bezeichner, der geltend macht, dass kein Tupel kopiert wird; das würde die Beziehung in etwas anderes, nämlich eine Tasche, durch das Verletzen der grundlegenden Definition eines Satzes machen. Sowohl Auslandsschlüssel als auch Superschlüssel (der Kandidat-Schlüssel einschließt) können zerlegbar sein, d. h. kann aus mehreren Attributen zusammengesetzt werden. Unten ist ein tabellarisches Bild einer Beziehung unseres Beispiel-Kunden relvar; von einer Beziehung kann als ein Wert gedacht werden, der einem relvar zugeschrieben werden kann.

Kundenbeziehung

Kundenpersonalausweis Steuer-ID-Namenadresse [Mehr Felder....]

1234567890 555-5512222 Munmun 323 Broadway...

2223344556 555-5523232 List E. 1200 die Main Street...

3334445563 555-5533323 Ekta 871 1. Straße...

4232342432 555-5325523 E. F. Codd 123 Es Weg...

</pre>

Wenn wir versuchen würden, einen neuen Kunden mit dem Personalausweis 1234567890 einzufügen, würde das das Design des relvar verletzen, da ein primärer Schlüssel ist und wir bereits einen Kunden 1234567890 haben. Der DBMS muss eine Transaktion wie das zurückweisen, das die durch eine Übertretung einer Integritätseinschränkung inkonsequente Datenbank machen würde.

Auslandsschlüssel sind Integritätseinschränkungen, die geltend machen, dass der Wert des Attribut-Satzes von einem Kandidat-Schlüssel in einer anderen Beziehung gezogen wird. Zum Beispiel in der Ordnungsbeziehung ist das Attribut ein Auslandsschlüssel. Eine Verbindungslinie ist die Operation, die sich auf Information von mehreren Beziehungen sofort stützt. Indem wir uns relvars vom Beispiel oben angeschlossen haben, konnten wir die Datenbank für alle Kunden, Ordnungen und Rechnungen fragen. Wenn wir nur die Tupel für einen spezifischen Kunden wollten, würden wir dieses Verwenden einer Beschränkungsbedingung angeben.

Wenn wir alle Ordnungen für den Kunden 1234567890 haben wiederbekommen wollen, konnten wir die Datenbank fragen, um jede Reihe im Ordnungstisch mit 1234567890 zurückzugeben und uns dem Ordnungstisch mit dem Ordnungslinientisch anzuschließen, der darauf gestützt ist.

Es gibt einen Fehler in unserem Datenbankdesign oben. Die Rechnung relvar enthält eine Ordnung Kein Attribut. Also, jedes Tupel in der Rechnung relvar wird eine Ordnung haben Nein, die andeutet, dass es genau eine Ordnung für jede Rechnung gibt. Aber in Wirklichkeit kann eine Rechnung gegen viele Ordnungen, oder tatsächlich für keine besondere Ordnung geschaffen werden. Zusätzlich enthält die Ordnung relvar eine Rechnung Kein Attribut, andeutend, dass jede Ordnung eine entsprechende Rechnung hat. Aber wieder ist das in der echten Welt nicht immer wahr. Eine Ordnung wird manchmal durch mehrere Rechnungen bezahlt, und manchmal ohne eine Rechnung bezahlt. Mit anderen Worten kann es viele Rechnungen pro Ordnung und viele Ordnungen pro Rechnung geben. Das ist eine many-many Beziehung zwischen der Ordnung, und Rechnung (hat auch eine nichtspezifische Beziehung genannt). Um diese Beziehung in der Datenbank zu vertreten, sollte ein neuer relvar eingeführt werden, wessen Rolle die Ähnlichkeit zwischen Ordnungen und Rechnungen angeben soll:

OrderInvoice

Jetzt hat die Ordnung relvar eine one-many Beziehung zum Tisch von OrderInvoice, wie die Rechnung relvar tut. Wenn wir jede Rechnung für eine besondere Ordnung wiederbekommen wollen, können wir für alle Ordnungen fragen, wo in der Ordnung die Beziehung in OrderInvoice gleich ist, und wo in OrderInvoice in der Rechnung gleich ist.

Mit dem Satz theoretische Formulierung

Grundlegende Begriffe im Verwandtschaftsmodell sind Beziehungsnamen und schreiben Namen zu. Wir werden diese als Schnuren wie "Person" und "Name" vertreten, und wir werden gewöhnlich die Variablen verwenden und uns über sie zu erstrecken. Ein anderer grundlegender Begriff ist der Satz von Atomwerten, der Werte wie Zahlen und Schnuren enthält.

Unsere erste Definition betrifft den Begriff des Tupels, das den Begriff der Reihe oder Aufzeichnung in einem Tisch formalisiert:

Tupel

: Ein Tupel ist eine teilweise Funktion von Attribut-Namen bis Atomwerte.

Kopfball

: Ein Kopfball ist ein begrenzter Satz von Attribut-Namen.

Vorsprung

: Der Vorsprung eines Tupels auf einem begrenzten Satz von Attributen ist.

Die folgende Definition definiert Beziehung, die den Inhalt eines Tisches formalisiert, weil es im Verwandtschaftsmodell definiert wird.

Beziehung

: Eine Beziehung ist ein Tupel mit, der Kopfball, und, der Körper, eine Reihe von Tupeln, dass alle das Gebiet haben.

Solch eine Beziehung entspricht nah, was gewöhnlich die Erweiterung eines Prädikats in der Logik der ersten Ordnung genannt wird, außer dass hier wir die Plätze im Prädikat mit Attribut-Namen identifizieren. Gewöhnlich im Verwandtschaftsmodell, wie man sagt, besteht ein Datenbankdiagramm aus einer Reihe von Beziehungsnamen, die Kopfbälle, die mit diesen Namen und den Einschränkungen vereinigt werden, die für jedes Beispiel des Datenbankdiagramms halten sollten.

Beziehungsweltall

: Ein Beziehungsweltall über einen Kopfball ist ein nichtleerer Satz von Beziehungen mit dem Kopfball.

Beziehungsdiagramm

: Ein Beziehungsdiagramm besteht aus einem Kopfball und einem Prädikat, das für alle Beziehungen mit dem Kopfball definiert wird. Eine Beziehung befriedigt ein Beziehungsdiagramm, wenn sie Kopfball hat und befriedigt.

Schlüsseleinschränkungen und funktionelle Abhängigkeiten

Einer der einfachsten und wichtigsten Typen von Beziehungseinschränkungen ist die Schlüsseleinschränkung. Es sagt uns, dass in jedem Beispiel eines bestimmten Verwandtschaftsdiagramms die Tupel durch ihre Werte für bestimmte Attribute identifiziert werden können.

Superschlüssel

: Ein Superschlüssel wird als ein begrenzter Satz von Attribut-Namen geschrieben.

: Ein Superschlüssel hält in einer Beziehung wenn:

:* und

:* dort bestehen Sie keine zwei verschiedenen solche Tupel dass.

: Ein Superschlüssel hält in einem Beziehungsweltall, wenn er in allen Beziehungen darin hält.

: Lehrsatz: Ein Superschlüssel hält in einem Beziehungsweltall, wenn, und nur wenn und zurückhält.

Kandidat-Schlüssel

: Ein Superschlüssel hält als ein Kandidat-Schlüssel für ein Beziehungsweltall, wenn er als ein Superschlüssel dafür hält und es keine richtige Teilmenge davon gibt, auch hält als ein Superschlüssel dafür.

Funktionelle Abhängigkeit

: Eine funktionelle Abhängigkeit (FD für den kurzen) wird bezüglich begrenzter Sätze von Attribut-Namen geschrieben.

: Eine funktionelle Abhängigkeit hält in einer Beziehung wenn:

:* und

:* Tupel,

: Eine funktionelle Abhängigkeit hält in einem Beziehungsweltall, wenn sie in allen Beziehungen darin hält.

Triviale funktionelle Abhängigkeit

: Eine funktionelle Abhängigkeit ist unter einem Kopfball trivial, wenn sie im ganzen Beziehungsweltall hält.

: Lehrsatz: Ein FD ist unter einem Kopfball wenn und nur wenn trivial.

Verschluss

: Die Axiome von Armstrong: Der Verschluss von einer Reihe von FDs unter einem Kopfball, schriftlich als, ist die kleinste Obermenge von solchen dass:

:* (reflexivity)

:* (transitivity) und

:* (Zunahme)

: Lehrsatz: Die Axiome von Armstrong sind gesund und abgeschlossen; in Anbetracht eines Kopfballs und einer Reihe von FDs, die nur Teilmengen dessen enthalten, wenn, und nur wenn im ganzen Beziehungsweltall hält, in dem alle FDs darin halten.

Vollziehung

: Die Vollziehung eines begrenzten Satzes von Attributen unter einem begrenzten Satz von FDs, schriftlich als, ist die kleinste Obermenge von solchen dass:

:*

: Die Vollziehung eines Attribut-Satzes kann verwendet werden, um zu rechnen, wenn eine bestimmte Abhängigkeit im Verschluss von einer Reihe von FDs ist.

: Lehrsatz: In Anbetracht einer Reihe von FDs, wenn und nur wenn.

Nicht zu vereinfachender Deckel

: Ein nicht zu vereinfachender Deckel von einer Reihe von FDs ist eine Reihe von solchen FDs dass:

:*

:* dort besteht nicht solch dass

:* ist ein Singleton-Satz und

:*.

Algorithmus, um Kandidat-Schlüssel von funktionellen Abhängigkeiten abzuleiten

EINGANG: Ein Satz S FDs, die nur Teilmengen eines Kopfballs H enthalten

PRODUKTION: Der Satz C Superschlüssel, die als Kandidat-Schlüssel in halten

das ganze Beziehungsweltall über H, in dem alle FDs in S halten

beginnen Sie

C: = ;//gefundene Kandidat-Schlüssel

Q: = {H};//Superschlüssel, die Kandidat-Schlüssel enthalten

während Q

lassen Sie K ein Element von Q sein;

Q: = Q - {K};

minimal: = wahr;

für jeden X-> Y in S tun

K': = (K - Y)  X;//leiten neuen Superschlüssel ab

wenn K'  K dann

minimal: = falsch;

Q: = Q  {K'};

enden Sie wenn

Ende für

wenn minimal und es nicht eine Teilmenge von K in C dann gibt

entfernen Sie alle Obermengen von K von C;

C: = C  {K};

enden Sie wenn

enden Sie während

Ende

Siehe auch

  • Gebiet Verwandtschaftsrechnung
  • Lebenszyklus einer Verwandtschaftsdatenbank
  • Liste von Verwandtschaftsdatenbankverwaltungssystemen
  • Anfragensprache
  • Datenbankanfragensprache
  • Informationsgewinnungsanfragensprache
Beziehung
  • Verwandtschaftsdatenbank
  • Verwandtschaftsdatenbankverwaltungssystem
  • The Third Manifesto (TTM)
  • Modell von TransRelational
  • Tupel-versioning

Weiterführende Literatur

  • Datum, C. J., Darwen, H. (2000). Fundament für Zukünftige Datenbanksysteme: Das Dritte Manifest, die 2. Ausgabe, Addison-Wesley Professional. Internationale Standardbuchnummer 0-201-70928-7.
  • Datum, C. J. (2003). Einführung in Datenbanksysteme. 8. Ausgabe, Addison-Wesley. Internationale Standardbuchnummer 0-321-19784-4.

Außenverbindungen

The Third Manifesto (TTM)

Rhodesia / Rathaus Schöneberg
Impressum & Datenschutz