Was ist ein relationales Schema? Wie erstellt man eine effiziente Datenbank?
Es gibt keine einzelne Datenbankstruktur, die immer effizienter ist als eine andere. Das liegt daran, daß die Art und Menge der gespeicherten Daten die optimale Struktur der Datenbank verändert.
Es besteht jedoch ein großer Unterschied zwischen der Erstellung einer leistungsoptimierten Datenbank und einer Datenbank, die für das Datenvolumen optimiert ist.
Mit Hilfe des relationalen Schemas in MySQL können Sie eine Datenbank erstellen, die für das Datenvolumen optimiert ist. Dies ist ideal in Situationen, in denen die Kosten für Speicherung, Verarbeitung und Speicher unerschwinglich sind.
Auch wenn dies bei der Standardelektronik nicht mehr der Fall ist, gibt es immer noch viele Situationen, in denen Programmierer und Entwickler ein relationales Schema verwenden möchten. Obwohl Speicher, Rechenleistung und Arbeitsspeicher für Benutzer herkömmlicher Computer preiswert sind, sind diese Dinge in der Welt des Quantencomputings massiv teuer.
Auch ist ein relationales Schema in MySQL-Datenbanken wichtig, die auf Beziehungen angewiesen sind, um Bedeutung zu erzeugen. Mitarbeiter- und akademische Datensätze beispielsweise lassen sich leicht als Beziehungsnetze betrachten, die mit einem relationalen Schema besser beschrieben werden können als beispielsweise mit Schlüsselwert- oder Graphdatenbanken.
Das relationale Schema ist das Hauptelement der relationalen Datenbank. Diese Datenbanken werden mit einer Sprache und Struktur verwaltet, die mit der Logik erster Ordnung konsistent ist. Dies ermöglicht eine Datenbankverwaltung auf der Grundlage von Entitätsbeziehungen, wodurch sie leicht nach Umfang organisiert werden können.
Das relationale Schema bezieht sich auf die Metadaten, die die Struktur der Daten innerhalb eines bestimmten Bereichs beschreiben. Es ist der Bauplan einer Datenbank, der die Art und Weise beschreibt, wie die Struktur die Daten in Tabellen organisiert.
Wenn Ihre Datenbank zum Beispiel Angestelltendatensätze für ein großes Unternehmen enthält, dann haben Sie vielleicht Entitätsbeziehungen, die jeden Angestellten als starke Entität beschreiben, etwa so:
- Name des Mitarbeiters
- ID-Nummer
- Adresse
- Fähigkeiten des Mitarbeiters
- Einstellungsdatum
- Dienstjahre
In diesem Beispiel hätten Sie zwei Attribute von relationalen Schemadaten. Zum einen das Attribut „Mitarbeiter“, das der Primärschlüssel der Tabelle ist (da sich alles auf den Mitarbeiter bezieht) und ein Attribut „Adresse“, das ein zusammengesetztes Attribut ist, das aus verschiedenen Elementen besteht.
Das Attribut Adresse würde aus den folgenden Werten bestehen:
- Stadt
- Straße
- Adressnummer
- Postleitzahl
Damit sind Sie bereit, ein Entity-Relationship-Diagramm auf ein relationales Schema abzubilden. Es sollte wie folgt aussehen:
- Mitarbeiter (Name, ID-Nummer, Adressnummer, Straße, Ort, Postleitzahl, Einstellungsdatum)
- Mitarbeiterfähigkeiten (ID-Nummer, Fähigkeiten)
Sie werden feststellen, dass Dienstjahre von dieser Liste ausgeschlossen sind. Das liegt daran, dass es sich um ein abgeleitetes Attribut handelt, das durch Subtraktion des Einstellungsdatums vom aktuellen Datum berechnet werden kann. Der Grund dafür, dass Employee Skillset ein eigenes Schema hat, ist, dass es sich um ein mehrwertiges Attribut handelt.
Bei relationalen Schemata wird jeder Entitätstyp zu einer eigenen Tabelle, und jedes einwertige Attribut ist eine Spalte innerhalb dieser Tabelle. Abgeleitete Attribute können getrost ignoriert werden, während mehrwertige Attribute zu separaten Tabellen werden.
Die Methode zur Konvertierung von schwachen Entitätstypen in das relationale Schema ähnelt dem oben beschriebenen Prozess, außer dass schwache Entitätstypen zu eigenen Tabellen werden und der Primärschlüssel der starken Entität als Fremdschlüssel in der Tabelle fungiert.
Das bedeutet, dass Sie für die starke Entität Employee einen zusammengesetzten Primärschlüssel erstellen würden, der aus dem Fremdschlüssel Dependent und dem Schlüssel der schwachen Entität selbst besteht. Damit würde das Schema wie folgt aussehen:
- Angestellter (Name, ID-Nummer, Adressnummer, Straße, Ort, Postleitzahl, Einstellungsdatum)
- Abhängig (Angestellter, abhängige ID, Name, Adresse)
Die Korrelation besteht hier zwischen der ID-Nummer in der Tabelle „Angestellter“ und dem Element „Angestellter“ der Tabelle „Abhängig“.
Nach dieser Arbeit können Sie mit der Konvertierung von Beziehungen beginnen. Dazu müssen Sie die Kardinalität und den Grad jeder Beziehung verstehen.
- Es gibt drei mögliche Kardinalitäten – 1:1, 1:M, 1:N
- Es gibt drei mögliche Grade – unär, binär und ternär.
Weiterführend zum obigen Beispiel könnte Employee mit einer neuen Tabelle Department kombiniert werden, um eine binäre 1:1-Beziehung zu bilden. Wenn der Mitarbeiter eine bestimmte Abteilung leitet, dann kann er als Teilbeteiligter beschrieben werden, während die Abteilung als Gesamtbeteiligter beschrieben würde.
Das relationale Schema würde wie folgt aussehen:
- Mitarbeiter (Name, ID-Nummer, Adressnummer, Straße, Ort, Postleitzahl, Einstellungsdatum)
- Abteilung (ID-Nummer des Managers, Abteilungs-ID, Name, Adresse)
In diesem Fall wird der Primärschlüssel des Teilnehmers zum Fremdschlüssel des Gesamtteilnehmers. Die ID-Nummer des Managers korreliert mit der ID-Nummer des entsprechenden Mitarbeiters.
Hier wird ein wichtiger Teil der Erstellung des relationalen Schemas deutlich. Der Primärschlüssel eines Beteiligten in einer binären 1:1-Beziehung kann zum Fremdschlüssel des anderen werden. Eine andere Möglichkeit, die obige Beziehung zu beschreiben, wäre die Verwendung von „Manages“ als Fremdschlüssel unter „Employee“, der mit dem Primärschlüssel „Department ID“ unter „Department“ korreliert.
Ein Beispiel für eine binäre 1:N-Beziehung wäre die Beziehung zwischen einem Lehrer, der ein Fach unterrichtet. In einem bestimmten Klassenzimmer können Lehrer mehr als ein Fach für eine Vielzahl von Schülern unterrichten, aber alle Fächer haben dieselbe Beziehung zu dem Lehrer.
In der binären 1:1-Beziehung oben hatte jede Abteilung einen eindeutigen Manager. Bei dieser binären 1:N-Beziehung kann eine variable Anzahl von Schülern denselben Lehrer haben. Der Primärschlüssel des Lehrers wäre die ID des Lehrers, die mit dem Fremdschlüssel des Fachs unter Lehrer korreliert.
Um eine binäre M:N-Beziehung zu beschreiben, stellen Sie sich einen Studenten vor, der sich für einen Kurs einschreibt. Erstellen Sie eine neue Tabelle, die den Studenten beschreibt, und eine weitere, die den Kurs beschreibt. Beide Tabellen sind durch den Akt der Einschreibung miteinander verbunden, und beide haben Fremdschlüssel.
- Der Fremdschlüssel für Student ist die Studenten-ID.
- Der Fremdschlüssel für Kurs ist die Kurs-ID.
Der Primärschlüssel der neuen Tabelle ist die Kombination der Fremdschlüssel der einzelnen Einheiten. Sie würden ihn als (Studenten-ID, Kurs-ID) beschreiben. Dies ist ein eindeutiges binäres M:N-Beziehungsschema, das einzelne Studenten mit Kursen verknüpft.
Dies funktioniert, weil IDs von Natur aus für den Zweck erstellt werden, Fremdschlüssel in relationalen Datenbanken zu sein.
Sie können ein relationales Schema verwenden, um selbstreferenzierende Beziehungen zu beschreiben. Beispielsweise könnten zwei miteinander verheiratete Mitarbeiter den Fremdschlüssel Ehepartner aufweisen. Für die beiden Fremdschlüssel dieser Mitarbeiter wird auf die Mitarbeiter-ID des anderen Mitarbeiters verwiesen, die der Primärschlüssel der jeweiligen Tabelle des Mitarbeiters ist.
Dies funktioniert auch in Beziehungsschemata mit einer Kardinalität von 1:N. Das Primärschlüsselfeld selbst würde in diesem Fall zum Fremdschlüssel der gleichen Tabelle werden. Dies ist dasselbe wie ein unäres 1:1-Schema.
Ein Mitarbeiter, der der Vorgesetzte eines Untergebenen ist, kann zum Beispiel den Vorgesetzten als Fremdschlüssel haben. In diesem Fall wäre die Mitarbeiter-ID der Primärschlüssel in derselben Tabelle.
Die Selbstreferenzierung einer M:N-Beziehung erfordert zwei Tabellen. Die eine muss die betreffende Entität darstellen und die andere die M:N-Beziehung.
Stellen Sie sich einen Mitarbeiter vor, der für die Qualität eines bestimmten Produkts oder einer Dienstleistung verantwortlich ist. Diese Beziehung müsste sowohl den Bürgen als auch den Begünstigten als Fremdschlüssel enthalten, die zusammen mit der Mitarbeiter-ID der Tabelle Mitarbeiter korrelieren. Sowohl der Bürge als auch der Begünstigte würden als Primär- und Fremdschlüssel in der neu erstellten Tabelle des relationalen Schemas fungieren.
Binäre und unäre Beziehungen lassen sich zwar einfach mit dem relationalen Schema mit einer oder zwei Tabellen beschreiben. Ternäre Tabellen erfordern eine dritte, neue Tabelle.
Der Primärschlüssel dieser neuen Tabelle besteht aus den Fremdschlüsseln aller beteiligten Entitäten, die addiert werden. Das bedeutet, dass die neue Tabelle drei Fremdschlüssel enthalten muss, mit denen sie korreliert.
Zum Beispiel besteht die Beziehung zwischen einer Ärztin und ihrem Patienten aus drei Entitäten: Der Arzt, der Patient und das Medikament. Um diese Beziehung korrekt als relationales Schema zu beschreiben, müssen Sie jeder dieser Entitäten Fremdschlüssel zuweisen und sie mit einer neuen Tabelle mit dem Titel Prescription korrelieren.
Das ist eine einfache Art, die Funktionsweise einer ternären Tabelle zu veranschaulichen. Der Primärschlüssel der neu erstellten Tabelle „Rezept“ lautet (Arzt-ID, Patienten-ID, Medikamenten-ID). Jedes Schema, das diese drei wichtigen Daten nicht enthält, lässt einen wichtigen Teil des Puzzles vermissen.
Dieser Ansatz würde es einem Datenbankverwalter ermöglichen, ein organisiertes Archiv von Rezepten zu erstellen, das bestimmte Medikamententypen berücksichtigt, die unmittelbar mit den Namen der Patienten korreliert sind, die sie verwenden, und die Namen der Ärzte anbietet, die sie verschrieben haben.
Der Vollständigkeit halber möchten Sie vielleicht das Ablaufdatum in die Medikamententabelle aufnehmen, damit diese Daten innerhalb der Hauptmatrix verfügbar sind. Sie können das Datum des nächsten Termins oder das Datum der Wiederauffüllung in die Tabelle „Rezept“ aufnehmen. Sie würden logischerweise Geburtsdatum, Adresse und andere wichtige relationale Daten in die Patiententabelle einfügen wollen.
Alle diese Werkzeuge zusammen ermöglichen die Erstellung von beziehungsorientierten Datenbanken in MySQL. Mit SQLDBM können Sie die Erstellung eigener MySQL-Datenbanken online mit jedem Browser üben.