Begriff der Datenbank:
Eine Datenbank ist eine integrierte Ansammlung von Daten, die allen Benutzern eines Anwendungsbereiches als gemeinsame Basis aktueller Information dient.
DBMS: Datanbankmanagementsystem
Das DBMS ist ein Softwaresystem, das es ermöglicht, eine Datenbank zu definieren, Daten zu speichern, zu verändern und zu löschen, sowie Anfragen an die Datenbank zu stellen.
Ein DBMS isoliert die DB von den Anwendungsprogrammen, sodass der Programmierer die Details der Datenbank nicht kennen muss.
Dateisysteme (file systems), als konventionelle Form der Verwaltung großer Datenmengen.
COBOL wurde in den 70er 80er entwickelt, und hat eine wichtige Rolle bei der Datenverarbeitung gespielt vor der Einführung von Relationen Datenbanken.
Satz: ist eine Gruppierung von Datenelementen a.k.a. Felder.
Satztyp: definiert welche Datenelementen den Satz aufbauen. z.B.:
Satztyp ANGESTELLTER
Datenelemente ANGNR Angestelltennummer
NAME Name des Angestellten
W-ORT Wohnort
GEHALT Gehalt
PERS Persönliche Daten;
Zahl der Kinder usw
Datei: ist eine benannte Sammlung von Sätzen.
Dateisystem
Ein Dateisystem ist ein Softwarepaket, das den Zugriff auf einzelne Sätze in einer Datei besorgt, wenn das Anwendungsprogramm die entsprechenden Parameter liefert.
Schlüssel werden benutzt um Dateien aufzurufen.
Dateiorganisation
Die Speicherung der Sätze einer Datei kann unterschiedlich organisiert werden, üblich sind: sequentielle Organisation, index-sequentielle Organisationen, direkte Organisationen (z. B. Hash-Verfahren).
FD ANGESTELLTEN-DATEI
DATA RECORD IS ANGESTELLTER; ... .
01 ANGESTELLTER; ... .
02 ANGNR PIC 9(5);
02 NAME PIC X(30);
02 W-ORT PIC X(30);
02 PERS; ... .
02 GEHALT; ... .
Es herrscht also eine enge Kopplung zwischen Programm und Datei, dies führt zu schwierige Probleme:
- Redundanz
Da die Daten jeweils speziell für bestimmte Anwendungen entworfen werden, werden dieselben Daten in verschiedenen Dateien wieder auftauchen. Redundanz führt zu Speicherverschwendung und zu erhöhten Verarbeitungskosten, vor allem bei Änderungen. Schlimmer jedoch ist es, dass diese Redundanz in der Regel nicht zentral kontrolliert wird, so dass Konsistenzprobleme auftreten.
- Inkonsistenz
Die Konsistenz der Daten (d.h. die logische Übereinstimmung der Datei-Inhalte) kann nur schwer gewährleistet werden. Bei der Änderung einer Größe müssten alle Dateien geändert werden, die diese Größe beinhalten. und diese verschiedene Programme zum selben Zeitpunkt unterschiedliche Werte derselben Größe sehen können.
- Daten-Programm-Abhängigkeit
Ändert sich der Aufbau einer Datei oder ihrer Organisationsform, so müssen darauf basierende Programme geändert werden. [...]
- Inflexibilität
Da die Daten nicht in ihrer Gesamtheit, sondern nu anwendungsbezogen gesehen werden, ist es in vielen Fällen sehr kompliziert, neue Anwendungen oder Auswerungen vorhandener Daten zu realisieren. Dies gilt insbesondere für Auswertungen, die Daten aus verschiedenen Dateien benötigen würden. Die Organisation nach diesem konventionellen Vorgehen ist sehr wenig anpassungsfähig an die sich verändernden Anforderungen in einem Unternehmen.
Um die Probleme zu lösen wurden Daten als eingensdtändiges Betriebsmittel eines Unternehmens. Dazu ist auch die Trennung von Programm und Daten, die Datenunabhängigkeit, zentral.
Integrität der Daten: Korrektheit und Vollständigkeit der abgesicherten Daten.
Die zentrale Verwaltung der Daten durch das DBMS ermöglicht es, bei Änderung von Daten Kontrollroutinen einzuschalten oder von Zeit zu Zeit mit Hilfe spezieller Prüfprogramme nach Integritätsverletzungen zu suchen.
-
Es gibt eine gemeinsame Basis für alle Anwendungen.
-
Redundanz entfällt.
-
Keine Konsistenzprobleme der traditioneller Dateiorganisationen. (wegen pt. 2)
-
Die Anwendungsprogrammierung wird einfacher. Der Programmierer muss nur die Eigenschaften der Daten kennen, nicht wie die gespeichert sind.
-
Application-Data Abhängigkeit wird reduziert.
-
DBS verschafft mehr Flexibilität für die Datenauswertung.
-
Das DBS kann zentral die Korrektheit von Daten überprüfen.
Die Beschreibung der Gesamtheit der Daten des betrachteten Anwendungsbereiches. Alle Daten werden auf logischer Ebene in Form von Informationseinheiten und deren Beziehungen untereinander beschrieben.
Wie die Daten auf den Speichern organisiert werden. Muss für die Zugriffsanforderungen der verschiedenen Benutzer optimiert werden.
Verschiedene Darstellung der Daten für verschiedene Benutzergruppen.
- Der Benutzer arbeitet Ausschließlich über die Externe Schicht. Das DBMS übernimmt die notwendigen Umsetzungen von einer externen Schicht -> logische Gesamtsicht -> Interne Sicht
- Schema: Jede Ebene Besitzt ein Daten Model was mit einer Datenbescheibungsspache beschrieben weird. Es gibt also:
- Verschiedene externe Schemata
- Ein konzeptuelles Schema
- Internes Schema
- Logische Gesamtsicht.
- Versucht die Realität abzubilden: alle Daten, und alle Beziehungen dieser Daten.
- Integritätsbedingungen: Beschreiben die Vorschriften zur Existenz dieser Daten, und zur Änderung dieser Daten. (Preconditions & Effects)
- Die Operationen die auf die Daten ausgeführt werden werden hier auch festgelegt.
Bei den heute verbreiteten Relationen Datenbanksystemen gibt es diese Spezifikation von Operationen im konzeptuellen Schema der Datenbank nicht. Alle diese Systeme bieten sogenannte generische Operationen an, also Operationen, die auf alle Datentypen in der Datenbank anwendbar sind. Dies sind unter anderem speichern, lesen, löschen und modifizieren. Der Zugriff auf die Datenbank erfolgt mittels einer Datenmanipulationssprache, die diese Operationen zur Verfügung stellt.
- Objektorientierten Datenbanken: jüngere Datenbanken wo Operationen als teil vom Schema festgelegt wurden.
- Datenbescheibungsprache data definition language, DDL ist für die Beschreibung des konzeptuelle Model geeignet.
Beachten Sie den Unterschied zwischen den Begriffen „Datenbanksystem“ und „Informationssystem“. Leider werden beide Begriffe oft synonym verwendet. Das Informationssystem eines Unternehmens ist die Gesamtheit aller Instanzen und Prozesse, die die für das Unternehmen wichtige Information von außen aufnehmen, verarbeiten und entsprechende Information nach außen wieder abgeben. Das Datenbanksystem ist damit nur ein Teil des Informationssystems, nämlich derjenige Teil, in dem die Informationsbasis des Unternehmens verwaltet wird.
- Bietet einen stabilen Bezugspunkt für alle Anwendungen dar.
- Stellt eine einheitliche Dokumentation wesentlicher Aspekte des Unternehmens dar.
- Gebrauch der Daten kann zentral kontrolliert werden.
- Schafft die wesentliche Vorraussetzungen für Datenunabhängigkeit der Anwendungsprogramme.
- Der Datenbankadministrator muss eine physische Datenorganisation entwickeln.
- Folgende Punkte müssen betrachtet werden bei dem Entwurf
- Repräsentation von Attributwerten.
- Aufbau gespeicherter Sätze.
- Zugriffsmethoden auf Sätze.
- zusätzliche Zugriffspfade(Indexe, Verkettung, usw.)
- Verschiedene Benutzergruppen bekommen ihre eigene View.
- Benutzer müssen eine Sprache bekommen um die Daten zu benutzen, z.B. SQL, oder eine GUI
Wenn ein Anwendungsprogramm Daten von von DBMS verlangt:
- Das DBMS empfängt den Befehl des Anwendungsprogrammes, ein bestimmtes Objekt eines externen Modells zu lesen.
- Das DBMS holt sich die benötigten Definitionen des entsprechenden Objekt-typs aus dem zugehörigen externen Schema.
- Mit Hilfe der Transformationsregeln externes/konzeptuelles Schema stellt das DBMS fest, welche konzeptuellen Objekte und Beziehungen benötigt wer-den.
- Mit Hilfe der Transformationsregeln konzeptuelles/internes Schema stellt das DBMS fest, welche physischen Objekte zu lesen sind, es ermittelt die auszu-nützenden Zugriffspfade.
- Das DBMS übergibt dem Betriebssystem die Nummern der zu lesenden Spei-cherblöcke.
- Das Betriebssystem übergibt die verlangten Blöcke an das DBMS in einem Systempuffer.
- Mit Hilfe der Transformationsregeln stellt das DBMS aus den vorhandenen physischen Sätzen das verlangte externe Objekt zusammen.
- Das DBMS übergibt das externe Objekt dem Anwendungsprogramm in sei-nen Arbeitsspeicher.
- Das Anwendungsprogramm verarbeitet die vom DBMS übergebenen Daten.
Alternativ kann aus das Binden benutzt werden:
Um den Befehl eines Anwendungs-programms auszuführen, müssen die Objekte des externen Modells ausgedrückt werden durch Objekte des konzeptuellen Modells und schließlich durch Objekte des internen Modells. Sobald der Befehl, der sich auf ein externes Objekt bezieht, ersetzt ist durch Befehle, die sich auf das konzeptuelle Modell beziehen, sind die entsprechenden Daten des Anwendungsprogrammes an das konzeptuelle Modell „gebunden“, entsprechend für das interne Modell
Der Bindezeitpunkt kenn entweder zur Übersetzungszeit (compilation) oder zur Laufzeit (Interpretation) stattfinden.
Für ein SQL befehlt wie
SELECT ANGNR, NAME, GEHALT
FROM ANG
WHERE ANGNR = 12
geht die Abarbeitung wie folgt vor:
- Der DML-Befehlt wird an das DBMS übergeben.
- Befehlt wird interpretiert, zugehörige konzeptionelle Beschreibung werden ermittelt.
- Speicherstruktur wird ermittelt (internes Schema), die Abfrage wird optimiert.
- Das DBMS ermittelt die Datenseite auf der der gesuchte Satz gespeichert ist. Es prüft ob die Seite im Systempuffer gespeichert ist. If yes, then continue from 8.
- Auswahl einer Seite im Systempuffer, die durch die benötigte Seite überlagert werden kann. Falls die zu ersetzende Seite verändert wurde, muss sie in die Datenbank geschrieben werden.
- Das DBMS ruft das Betriebssystem für zwei E/A-Vorgänge auf:
- Schreiben der zu ersetzenden Seite in die Datenbank (entfällt gegebenen-falls)
- Einlesen der gesuchten Seite.
- Das Betriebssystem führt die physischen E/A-Aufträge durch und speichert die angeforderte Seite an der vorgegebenen Adresse im Systempuffer.
- Das DBMS liest den gesuchten Satz aus dem Systempuffer, transformiert ihn in die durch das externe Schema definierte Form und überträgt ihn in den Arbeitsbereich (user work area - UWA) des Anwendungsprogrammes. In der UWA ist ein Speicherbereich für diesen Satztyp reserviert.
- Das DBMS hinterlegt Status-Information über den Ausgang der Operation in einem speziellen Bereich der UWA. Diese Status-Information ist dem Anwendungsprogramm zugänglich.
- Das Anwendungsprogramm verarbeitet den Satz. (Wir betrachten hier nicht die Abläufe auf der Sprachebene, wenn - wie in diesem Beispiel angedeutet - SQL in ein Programm in einer klassischen Programmiersprache eingebettet ist; s. unter relationale Datenbanken).
- Das DBMS muss Datendefinitionen in den zugehörigen DDLs akzeptieren und interpretieren können. Dazu gehört:
- externe Schemata
- das konzeptuelle Schema,
- das interne Schema
- die zugehörigen Transformationsregeln
- Meta-Daten. z.B:
- Objekttypen
- Attribute
- Die Daten werden im Katalog a.k.a. Data Dictionary des DBMS gespeichert.
- Das DBMS soll soweit wie möglich Integritätsverletzungen verhindern.
- Fehlern: Abbrüche von Anwendungsprogrammen, Systemzusammenbruch, Plattenfehler, etc.
- Das DBMS muss in der Lage sein die Datenbank nach Fehlern wieder in einen konsistenten Zustand zu versetzen.
- Das DBMS muss dafür Sorgen das die parallel arbeitenden Programme nicht gegenseitig stören oder infolge unkoordinierter Parallelarbeit die Integrität der Datenbank zerstören.
- Hierzu gehören alle technischen Maßnahmen zum Datenschutz, d.h. zum Schutz der Daten gegen Missbrauch jeglicher Art.
Typische Tools sind
- Abfragesysteme
- Report-Writer
- Spreadsheets und Business Graphics Tools
- Tools für den Datenbankentwurf
- 4GL Entwicklungsumgebungen. 4GL (fourth generation language, Da-tenbanksprachen der vierten Generation) integrieren imperative Sprach-konzepte mit SQL. Sie unterstützen typischerweise die interaktive Pro-grammierung von Menüs, Masken und Formularen mit dahinterliegenden Prozeduren (Auslöseregeln und Aktionen).
- CASE Tools (computer aided software engineering) für den Entwurf von Datenbankanwendungen
- „nützliche Sachen“
- Hilfsprogramme für den Datenbankadministra-tor.
- Typische Utilities sind:
- Laderoutinen (für das erstmalige Laden der Datenbank)
- statistische Routinen
- Routinen zur Fehleranalyse
- Routinen zur Reorganisation (der Daten auf den Speichern)
- Kopier- und Archivierungsroutinen
Funktionen:
- Es dient dem DBMS zur Speicherung der Daten zur Verwaltung der Datenbank (Schema-Informationen, Sichten, Zugriffsrechte, Informationen zur Optimierung von Anfragen wie etwa Statistiken usw.).
- Es dient dem Anwendungsprogrammierer zur Suche nach Informationen über gespeicherte Daten und deren Struktur (Schema-Informationen) sowie zur Analyse bei Leistungsproblemen.
- Data Dictionary ist eine Datenbank.
- Data Dictionaries wachsen heutzutage zu Repositories wo alle wesentliche Informationen über die Daten, Programme und Benutzer des Informationssystems gespeichert werden.
- Ein modernes Data Dictionary System wird etwa folgende Informationen verwalten:
- Beschreibungen der Daten
- Angaben zu den Beziehungen zwischen den Daten
- Beschreibungen der Programme (Transaktionen)
- Angaben darüber, welche Programme welche Daten nutzen
- Konsistenzbedingungen
- Angaben über Zugriffsbefugnisse
- Entwurfsdaten (grafische konzeptuelle Modelle, Dokumentation der Entwurfsschritte usw.)
- Verantwortlichkeiten
- Entwurfsdokumente, Quell-Code zu Anwendungsprogrammen
- Die dreischichtige Betrachtungsweise der Daten ist der Schlüssel zur Datenunabhängigkeit.
- Änderungen innerhalb einer Ebene können in gewissem Umfang von den übrigen Ebenen ferngehalten werden, indem man die Änderungen durch die zwischengelagerten Transformationsregeln auffängt.
Physische Datenunabhängigkeit bedeutet Isolierung der Anwendungsprogramme von Änderungen der physischen Datenorganisation.
- Da das konzeptuelle Modell unberührt bleibt, bleiben auch die externen Modelle und damit alle Benutzerprogramme von Änderungen der Datenorganisation unberührt. So führen also Änderungen von Dateiorganisationen, das Umstrukturieren von Sätzen (z. B. Zerlegen von großen Sätzen in separate Teilsätze), das Anlegen von Indexen, usw. nicht mehr zu Änderungen bestehender Programme.
Logische Datenunabhängigkeit bedeutet Isolierung der Anwendungsprogramme von Änderungen des konzeptuellen Modells.
- Praktisch alle Systeme weisen jedoch noch kleinere oder größere Schwächen in diesem Punkte auf.
Der Begriff der Datenunabhängigkeit muss auch unter dem Gesichtspunkt des Bindens gesehen werden. Im Falle des Bindens zur Übersetzungszeit bleibt das Anwendungsprogramm nach Änderungen des internen oder konzeptuellen Schemas unverändert, muss aber neu übersetzt werden. Man spricht von statischer Datenunabhängigkeit. Im Falle des Bindens zur Zugriffszeit ist auch diese Abhängigkeit aufgehoben, man spricht von dynamischer Datenunabhängigkeit.
- Die Beschreibung der Datenwelt des Unternehmens erfolgt in den Begriffen eines Datenmodells.
- Das Datenmodell muss mächtig genug sein, um alle wichtigen Aspekte der Realwelt beschreiben zu können, zugleich muss es möglich sein, in einfacher Weise eine effiziente Implementierung auf der internen Ebene abzuleiten.
- Relationalen Datenbanksysteme bieten mit relationalen Modell kein befriedigendes Datenmodell.
- Neuere Modelle sind das objektrelationale und das objektorientierte Datenmodell.
- Semantische Datenmodelle werden benutzt um die Welt zu beschreiben, dann werden die vereinfacht und als das konzeptuelles Model für das DBS abgeleitet.
- Das ER-Modell kennt folgende Basiskonstrukte
- Entity-Typ (entity type)
- Beziehungstyp (relationship type)
- Entity-Typen und Beziehungstypen haben Attribute
- Zu jedem Typ gibt es dann beliebig viele Instanzen, also Entities und Beziehungen.
- Objekte der realen Welt.
- Zwischen den Entities gibt es Beziehungen.
- Ein Entity-Typ repräsentiert die Menge aller Entities, die die gleichen charakteristischen Eigenschaften besitzen
- Entity-Typen stehen zugleich für die Menge aller Entities die zu diesen Typ gehören.
- Beziehungen
- Ein Beziehungstyp kann mehrere Entity Typen umfassen; wir schreiben $$$B(E_1, E_2, ... E_k)$$$ .
- In der praktischen Anwendung ist die Mehrzahl der Beziehungen zweistellig.
- Jedes Attribut kann Werte aus einem bestimmten Wertebereich annehmen.
- Normalerweise einen Integer.
- Primärschlüssel wenn mehrere Schlüssel für ein Objekt existieren.
- 1:1-Beziehung
- n:1-Beziehung
- n:m-Beziehung
Es kommt vor, dass eine Entity nicht durch ihre eigenen Attribute allein identifiziert werden kann, sondern dass die eindeutige Identifizierung die Ausnutzung einer Beziehung erfordert. Ein Beispiel: Über die Kinder der Angestellten eines Unternehmens sollen die Attribute NAME und ALTER abgespeichert werden. Die Kinder sind eigene Entities, zur Identifizierung ist jedoch die Personalnummer des Vaters notwendig. Mit anderen Worten: die Identifizierung ist möglich über den Beziehungstyp VATER-VON, der den Entity-Typ ANGESTELLTE mit dem Entity-Typ KIND verbindet.
- Rechtecke repräsentieren Entity-Typen.
- Rauten repräsentieren Beziehungstypen.
- Doppelt umrandete Rechtecke bezeichnen schwache Entity-Typen.
- Das klassische ER-Modell kann einige Aspekte der Daten auf konzeptueller Ebene nur unvollkommen beschreiben.
- z.B: Spezialisierung und Generaliserung
- Vererbung: Da jeder Angestellte (Freie Mitarbeiter) zugleich ein Mitarbeiter ist, hat er natürlich auch die Attribute des Mitarbeiters; wir sprechen von Vererbung der Attribute.
- Das hier gewählte Beispiel ist eine Partition.
Falls wir beispielsweise die Angehörigen einer Universität spezialisieren zu Mitarbeitern und Studierenden, so wäre diese Spezialisierung nicht disjunkt: ein Studierender kann zugleich studentische Hilfskraft sein, also auch Mitarbeiterstatus besitzen. Die Partition unseres Beispiels ist total, es ist nämlich jeder Mitarbeiter entweder Angestellter oder Freier Mitarbeiter (andere Typen von Mitarbeitern gebe es nicht).
- Meist verbreitete Datenmodel was von DBMS unterstützt wird.
- Außerordentliche Einfache Struktur.
- Hat eine komplette formale Basis. (im Gegensatz zu die andere praktische bedeutsame Modelle)
- Entities und Realtionen werden als als Tabellen modelliert.
- Definition einer Relation:
Sind $$$D_1, D_2, ..., D_n$$$ Mengen von Werten, so ist $$$R \times D_1 \times D_2 \times ... \times D_n$$$ eine n-stellige Relation über den Mengen (domains) und n ist der Grad (degree) der Relation. Ein Element $$$r = (d_1, d_2, ..., dn) /times R (d_i /times D_i, i = 1, ..., n)$$$ ist ein Tupel der Relation $$$R$$$ (n-Tupel). di ist die i-te Komponente des Tupels.
- Relationenschema $$$R(A_1, ..., A_n)$$$ spefiziert eine Relation mit Namen R und mit paarweise verschiedenen Attributen $$$A_1,...,A_n$$$.
- $$$dom(A_i)$$$ ist der Wertebereich für das Attribut $$$A_i$$$
- Jede Zeile der Tabelle entspricht ein Tupel.
- Die Spalten der Tabelle werden entsprechend den Attributnamen benannt.
- Erse Normalform:
Eine Relation bei der jedes Attribut elementar ist, ist in der ersten Normalform (1NF). Sämtliche theoretischen Arbeiten über relationale Datenbanken gehen von Relationen in 1. Normalform aus.
- Die Gesamtheit der Relationenschemata einer Datenbank heißt Schema der (relationalen) Datenbank. Dazu gehören auch die Menge der Integritätsbegingungen
- Es gibt keinen Unterschied zwischen Entities und Beziehungen zwischen Entities: beide werden durch Relationen ausgedrückt.
- Die Entity-Typen ANGESTELLTER und PROJEKT können wir durch die Relationenschemata
ANGEST (ANGNR, NAME, WOHNORT, BERUF, GEHALT, ABTNR)
undPROJEKT (PNAME, PNR, P_BESCHR, P_LEITER)
darstellen. Die m:n-Beziehung zwischen beiden stellen wir durch ein weiteres Relationenschema ANG_PRO dar:ANG_PRO (PNR, ANGNR, PROZ_ARB)
.
- Ein Schlüssel ist eine Attributenmenge womit ein Tupel identifiziert wird.
- Minimalitätseigenschaft von Schlüsseln: Ist X ein Schlüssel von R, so ist keine Teilmenge von X ebenfalls Schlüssel von R.
- Sprachen müssen es erlauben:
- gewünschte Relationen zu spezifizieren.
- Veränderungen von Relationen erlauben.
- Einführung/Löschen neuer/vorhandener Relationen erlauben.
- Alle Sprachen können können folgendermassen unterteilt werden (oder sind eine mischung):
- Relationenalgebra
Spezifikation von gewünschten Relationen durch Angabe einer Folge von Operationen, mit der die Relationen aufgebaut werden sollen. Der Benutzer wendet spezielle Operationen auf Relationen an, um seine gewünschte Relation zu konstruieren.
- Relationenkalkül
Spezifikation von gewünschten Relationen in deskriptiver Weise, d. h. ohne Angabe, welche Operationen zum Aufbau der Relation verwendet werden sollen. Mit Hilfe des Prädikatenkalküls wird die Menge der gewünschten Tupel beschrieben: es wird ein Prädikat (eine Bedingung) angegeben, das die Tupel erfüllen müssen.
- Relationenalgebra
- Data-retrieval ist der Kern jeder Datenmanipulationssprache.
- Algebra: ein system, das aus einer nichtleeren Menge un einer Familie von Operationen auf dieser Menge besteht.
- Relational vollständig nur wenn diese Operationen verfügbar sind, kann man mit der relationalen Algebra dieselben abfragen ausdrücken wie mit dem Relationenkalkül.
NOTE: The definitions from the book are already so compressed, that I will just add images of them, instead of rewriting them.
- Sei B eine Bedingung, wobei nur Attribute von R als freie Variablen vorkommen. Für ein Tupel $$$t \in R$$$ sei B(t) der (Wahrheits-)Wert von B, wenn für die Attribute in B die entsprechenden Attributwerte aus t eingesetzt werden. Dann heißt $$$S = σ_B (R)$$$ die Selektion auf R bzgl. der Selektionsbedingung B und ist folgendermaßen definiert:
- S hat das Schema $$$(R_1, ..., R_n)$$$.
- $$$s = (a_1, ..., a_n) \in S$$$, falls $$$s \in R$$$ und $$$B(s)$$$ gilt.
- Mit dem natürlichen Verbund werden diejenigen Tupel aus zwei Relationen so kombiniert, dass jeweils die Werte der Attribute gleichen Namens aus beiden Relationen übereinstimmen. Im Ergebnis sind diese Attribute nur einmal vorhanden.
-
Der Relationenkalkül lässt sich unterteilen in den Werte-orientierten Relationenkalkül und den Tupel-orientierten Relationenkalkül.
-
Werte-orientierten Relationenkalkül
- Variablen bezeichnen einzelne Komponenten eines Tupels.
-
Tupel-orientierten Relationenkalkül
- Variablen bezeichnen ganze Tupel.
-
Der Relationenkalkül ist nichts anderes als eine formale Sprache zur Definition einer neuen Relation in den Begriffen schon gegebener Relationen.
FINDE DIE WOHNORTE ALLER ANGESTELLTEN, DIE PROGRAMMIERER SIND
wird
{(ANGEST.WOHNORT) | ANGEST.BERUF = 'PROGRAMMIERER'}
- Ein Ausdruck im Relationenkalkül hat also die Form {t | q}, wobei t eine Liste von Attributnamen (Schema der gewünschten Relation) und q ein Prädikat (Qua-lifikationsteil, der die gewünschten Tupel für t spezifiziert) ist.
Das Prädikat q ist ein logischer Ausdruck von beliebiger Komplexität, der in üblicher Weise aufgebaut ist aus Attributnamen, Konstanten, Vergleichsoperatoren $$$('=', '\neq', '>', ...)$$$, Booleschen Operatoren $$$('\vee', '\wedge' bzw. AND, OR, NOT)$$$, Exis-tenzquantoren $$$'\exists'$$$ („es existiert“), Allquantoren $$$'\forall'$$$ („für alle“) und Tupelvariablen.
Eine Tupelvariable ist in einem Ausdruck gebunden, wenn sie durch einen $$$'\exists'$$$ oder $$$'\forall'$$$ Quantor eingeführt wird, ansonsten ist sie frei.
Man bezeichnet eine Abfragesprache als relational vollständig (complete), wenn mit ihr alles ausgedrückt werden kann, was im Relationenkalkül ausgedrückt werden kann.
Für die praktische Anwendung sind Sprachmöglichkeiten wichtig, die im „reinen“ Kalkül und in der „reinen“ Algebra nicht vorhanden sind. Hierzu gehören Mög-lichkeiten zur sortierten Ausgabe, arithmetische Operationen etwa bei Verglei-chen (A < B + 10) und vor allem Aggregierungsfunktionen wie Zahl der Tupel einer Relation, Durchschnitt, Summe, Maximalwert, Minimalwert, usw. Diese Funktionen sind wichtig, um Abfragen der Art
WIEVIELE ANGESTELLTE MIT EINER BESTIMMTEN EIGENSCHAFT GIBT ES?
formulieren zu können. Derartige Erweiterungen werden
blablabla need to update.
- Am weitesten Verbreitet.
- SEQUEL: Structured English QUEry Language
Relationales Modell | SQL | SQL English |
---|---|---|
Relation | Tabelle | Table |
Attribut | Spalte | Column |
- Ergänzungen gegenüber dem vorgestellten Realtionen modell:
- Aggregierungsfunktionen,
- NULL-Werte
SELECT $$$A_1, ..., A_n$$$
FROM $$$R_1, ..., R_n$$$
WHERE Prädikat($$$R_1, ..., R_n$$$)
kann mann folgendermassen übersetzen:
Selektiere aus dem Kreuzprodukt der Relationen $$$R_1, ..., R_n$$$ alle Tupel, die die Bedingung Prädikat($$$R_1, ..., R_n$$$) erfüllen, und projiziere die so entstehende Relation auf die Attribute $$$A_1, ..., A_n$$$.
- Duplikate in SQL:
DISTINCT
muss benutzt werden.
Der Grund hierfür liegt darin, dass es zusätz-lichen Rechenaufwand kostet, aus jeder Ergebnistabelle Duplikate zu eliminieren, während viele praktische Anwendungen (insbesondere aber auch die Berechnung von Zwischenergebnissen) diese Anforderung gar nicht stellen.
- Tupel-variablen (Correlation Names) (using
AS
which is optional btw)
Tupelvariablen sind immer dann erforderlich, wenn der JOIN einer Tabelle mit sich selbst gebildet werden soll.
- LEFT OUTER JOIN: Es bleiben die nicht der JOIN-Bedingung ent-sprechenden Zeilen der Tabelle erhalten, die links (vom Schlüsselbe-griff OUTER JOIN) steht.
- RIGHT OUTER JOIN: Es bleiben die nicht der JOIN-Bedingung ent-sprechenden Zeilen der Tabelle erhalten, die rechts steht.
- FULL OUTER JOIN: Es bleiben die nicht der JOIN-Bedingung ent-sprechenden Zeilen der Tabellen erhalten, die links und rechts stehen.
- Syntax: in vielen Systemen nicht Standardkonform
- Null-werte
- NOT NULL Outer Joins setzen sich über NOT NULL-Constraints hinweg -> ein Attribut, das Sie als
NOT NULL
definiert haben kann in einem Outer Join durchausNULL
werden. - NULL Es ist nicht möglich zu erkennen, ob ein NULL-Wert in der ursprünglichen Tabelle schon vorhanden war, oder ob er durch den Outer Join eingefügt wurde.
- NOT NULL Outer Joins setzen sich über NOT NULL-Constraints hinweg -> ein Attribut, das Sie als
- Performance immer langsamer als Inner Joins
- Verkettung und kognitive Überlastung fucking difficult man to know what you want and what to expect! fuckity fuck fuck fuck.
- Standard-Satz an logische und Vergleichsopeatoren:
AND OR NOT = != < > ...
SUBSTRING LIKE BETWEEN ...
+ - * / ...
IN
Prädikat
- Äußere Abfrage
- innere Abfrage aka SUBQUERY aka SUBSELECT
- Korrelierten Subqueries: subqueries die tebelen/spalten aus die äussere Queries referenieren. z.B in der
WHERE
Klausel.
- Checks if the result contains any values at all.
SUM
AVG
COUNT
MAX
MIN
EVERY
: returnsfalse
if any of the results returnsfalse
ANY
,SOME
returnstrue
if any of the results returnstrue
GROUP BY
HAVING
-> kind of likeWHERE
after usingGROUP BY
-- FÜGE EINEN NEUEN ANGESTELLTEN ´MEIER´ EIN
-- lautet in SQL
--
INSERT INTO ANGEST
VALUES ( 128, ´MEIER´, ´HAGEN´, ´INGENIEUR´, 5400 , 3 )
-- reihenfolde der values, muss mit der definition der Tabele übereinstimmen.
--
-- Oder, besser ausgedrückt:
--
INSERT INTO ANGEST
(ANGNR, NAME, WOHNORT, BERUF, GEHALT, ABTNR)
VALUES ( 128, ´MEIER´, ´HAGEN´, ´INGENIEUR´, 5400 , 3 )
-- ERHÖHE DAS GEHALT DER MITARBEITER AM PROJEKT NUMMER 17 ABHÄNGIG VON DER BETEILIGUNG UM 10 %
-- lautet in SQL
UPDATE ANGEST SET
GEHALT = GEHALT + GEHALT * 0.1 *
(SELECT PROZ_ARB
FROM ANG_PRO
WHERE ANG_PRO.ANGNR=ANGEST.ANGNR
AND ANG_PRO.PROJEKT = 17) /100
WHERE ANGNR IN (SELECT ANGNR
FROM ANGPRO
WHERE PNR = 17)
-- DER ANGESTELLTE 'MÜLLER' ARBEITET NICHT MEHR AN DEM PROJEKT NUMMER 10 MIT
-- lautet in SQL:
DELETE FROM ANG_PRO
WHERE PNR=10 AND
ANGNR = (SELECT ANGNR
FROM ANGEST
WHERE NAME = 'MÜLLER')
CREATE TABLE ANG_PRO
(PNR INTEGER,
ANGNR INTEGER,
PROZ_ARB INTEGER,
CONSTRAINT ANG_PRO_PK PRIMARY KEY (PNR, ANGNR),
CONSTRAINT ANG_PRO_ANGNR_FK FOREIGN KEY (ANGNR) REFERENCES ANGEST(ANGNR),
CONSTRAINT ANG_PRO_PROJEKT_FK FOREIGN KEY (PNR) REFERENCES PROJEKT(PNR))
- Referentielle Integrität: Es kann in
ANG_PRO
kein Angestellter aufgeführt werden, der nicht tatsächlich inANGEST
existiert. - Schlüsselwor
CONSTRAINT
ist optional.
DROP TABLE ANG_PRO
- Base Tables Basistabellen
- Die Sichten in SQL stellen für den Anwender wiederum Tabellen dar.
CREATE VIEW ZAHL_DER_ANGEST (ABTNR, ANZAHL) AS
SELECT ABTNR, COUNT (ANGNR)
FROM ANGEST
GROUP BY ABTNR
- Sichten stellen abgeleitete Tabellen (im Standard derived tables) dar.
- Sichten werden dynamisch erzeugt, sie existieren nur durch ihre Definition.
- Können nur erlaubt werden wenn die Grundelegen die Basistupel ansprechen.
- Transaktionskonzept: Das zentrale Konzept zur Sicherung der Korrektheit der Parallelen benutzung der datenbank.
- Recovery: Wiederherstellung.
- Beispiele von Inkonsistenz:
- Referenz ins Leere (jemand löscht ein Tupel, ohne dass die darauf verweisen-den Referenzen korrigiert werden)
- Eine Buchung X ist vom Konto A abgebucht, aber nicht dem Zielkonto B gutgeschrieben
- Ein Summenfeld gibt nicht die korrekte Summe der Einzelelemente (z.B. Ge-haltssumme)
- Ein negatives Alter
- Bei Mehrfachspeicherung derselben Daten in versc hiedenen Sätzen: Ände-rung ist an einer Stelle erfolgt, nicht an der anderen.
- Konsistenzverletzungen können verschiedene Ursachen haben, beispielsweise:
- Falsche Eingabedaten
- Fehler im Anwendungsprogramm (falsche Programmierung, etwa im Fall b oder d)
- Falsche Behandlung paralleler Anwendungsabläufe
- Abstürze des Betriebssystems oder des DBMS
- Ausfälle von Massenspeichern
- Falsche Schemadefinitionen (z.B. ein den Daten nicht angemessener Daten-typ
- Mann kann Integritätsbedingungen definieren.
- Transaktionsmanagement: parallelen Abläufe werden so organisiert, dass sie nicht zu Inkonsistenzen führen können.
- Eine Transaktion ist also eine Folge von Befehlen, die entweder vollständig und korrekt ausgeführt wird oder überhaupt nicht.
- Der Recovery-Manager legt Sicherungsko-pien von Datenbeständen an und protokolliert Transaktionen in sog. Logfiles mit, so dass
- Ergebnisse abgeschlossener Transaktionen nach Fehlern wieder in die Daten-bank eingespielt werden können,
- Änderungen in der Datenbank, die durch nicht abgeschlossene Transaktionen bewirkt wurden, rückgängig gemacht werden können,
- Im Falle von Speicherfehlern (Platten) der jüngste konsistente Zustand der Datenbank wiederhergestellt werden kann.
- ACID: Atomicity, consistency, isolation, durability
- Unteilbarkeit (atomicity)
Eine Transaktion ist eine unteilbare Verarbeitungseinheit; sie wird entweder ganz oder überhaupt nicht ausgeführt.
- Konsistenz (consistency)
Eine korrekte Ausführung der Transaktion führt die DB von einem konsistenten zu einem konsistenten Zustand.
- Isolation (isolation)
Eine Transaktion muss so ablaufen, als sei sie die einzige im System. Zwischenzustände (die ja inkonsistent sein können) dürfen für andere Transaktionen nicht sichtbar sein.
- Dauerhaftigkeit (durability)
Ergebnisse einer erfolgreich beendeten Transaktion sind dauerhaft, d.h. überleben jeden nachfolgenden Fehler.
- Unteilbarkeit (atomicity)
- Folgende Statements started eine Transaktion:
- SQL-Schema Statements:
ALTER
CREATE
DROP
GRANT
REVOKE
- SQL-Daten Statements
OPEN
CLOSE
FETCH
INSERT
UPDATE
DELETE
FREE LOCATOR
HOLD LOCATOR
- Transaktions-Statements
START STATEMENT
COMMIT AND CHAIN
ROLLBACK AND CHAIN
- SQL-Kontroll Statement
RETURN
- SQL-Schema Statements:
- Embeded SQL hat sich als die Kopplungsart durchgesetzt.
- Ein precompiler übersetzt den SQL in die Wirtsprache erst, vor das Program kompiliert wird.
- Es gibt kaum einen Einheitlichkeit in der Syntax der Prozeduralen Sprachelementen.
- Folgendes ist vom PL/SQL. Der Syntax lehnt sich an die Sprache ADA.
- Sind in der Datenbank gespeicherte Operationen. (nicht generisch)
- Vorzüge:
- Einmal geschrieben, mehrmals benutzt. PL/SQL können IO parameter haben.
- Durch die Trennung der Definition und Benutzung, kann der zugriffsplan Optimiert werden.
- Reduktion der Übertragungszeit -> nur der Pruzedur-Name muss übertragen werden.
- Wenn mann den Benutzer die generische Funktionen verbieten, und vor-difinierte denn kann mann den Benutzer nur bestimmte Änderung im Datenbestand durchführen.
CREATE PROCEDURE <Prozedurname>(<Parameterliste>)
IS
BEGIN
<Anweisungen>
END
- Der unterschied ist, dass ein ausgezeichneter Rückgabeparameter dazu gehört.
CREATE FUNCTION <Funktionsname>(<Parameterliste>)
RETURN <Typ des Rückgabewertes>
IS
BEGIN
<Anweisungen>
END
Beispiel:
CREATE PROCEDURE AssignToProject
(Angestellter IN INTEGER,
Projekt IN INTEGER,
proz_Arbeit IN INTEGER,
Gehaltsaufschlag IN INTEGER)
IS
BEGIN
INSERT INTO ANG_PRO
VALUES (Projekt, Angestellter, proz_Arbeit);
UPDATE ANGEST
SET Gehalt = Gehalt + Gehaltsaufsc
WHERE ANGNR = Angestelter;
END;
CREATE TRIGGER <Triggername> [BEFORE|AFTER]
[INSERT, UPDATE, DELETE] ON <Tabellenname>
[FOR EACH ROW]
BEGIN
<Anweisungen>
END;
Cursor sind ein Hilfsmittel, um bei der imperativen Programmierung, welche tupel-orientiert ist, einen Zugriff auf die Ergebnisse der SQL-Queries, welche mengenorientiert sind, zu erhalten (siehe auch Abschnitt 3.3.3). Zunächst wird der Cursor definiert, dann in der OPEN-Anweisung geöffnet, und anschließend wer-den die Elemente der Ergebnismenge in einer Folge von FETCH-Anweisungen durchlaufen und bearbeitet. Mit dem FOUND-Attribut des Cursors kann man fest-stellen, ob das FETCH noch ein weiteres Element geliefert hat oder ob die Ergeb-nismenge bereits vollständig durchlaufen wurde.
-- Der folgende Trigger prüft, ob bei den Einfügungen
-- in der Tabelle ANG_PRO berücksichtigt wurde,
-- dass der prozentuale Anteil an der Ar-beitszeit zwischen 0
-- und 100 Prozent liegt. Zusätzlich prüft der Trigger,
-- ob auch die Summe der Arbeitszeit eines jeden
-- Angestellten in diesem Be-reich liegt.
CREATE TRIGGER ANGPROCHECK BEFORE INSERT ON
ANG_PRO
FOR EACH ROW
DECLARE
CURSOR Arbeitszeit_Cursor IS
SELECT SUM(PROZ_ARB)
FROM ANG_PRO
GROUP BY ANGNR;
Arbeitszeit INTEGER;
BEGIN
IF :new.PROZ_ARB < 0 OR :new.PROZ_ARB > 100
-- :new.PROZ_ARB ist der Wert des Attributs PROZ_ARB im
-- neu einzufügenden Tupel
THEN
RAISE INVALID INSERT;
ELSE
OPEN Arbeitszeit_Cursor;
FETCH Arbeitszeit_Cursor INTO Arbeitszeit;
WHILE Arbeitszeit_Cursor%FOUND
LOOP
IF Arbeitszeit < 0 OR Arbeitszeit > 100 THEN
CLOSE Arbeitszeit_Cursor;
RAISE INVALID Arbeitszeit-Summe;
ELSE
FETCH Arbeitszeit_Cursor INTO Arbeitszeit;
END IF;
END LOOP;
CLOSE Arbeitszeit_Cursor;
END IF;
END
- der Query-Prozessor muss Abfrageoptimierung betreiben.
- Abfrageoptimierung ist ein sehr komplexes Problem - und in Wirklichkeit optimieren die Systeme nicht, sondern ermitteln lediglich eine mit großer Wahrscheinlichkeit gute Ausführungsstrategie.
- Die Rechtecke stellen Relationen.
- Die Ellipsen Operationen dar.
- Selektionen auf dem gleichen Operanden werden zu komplexen Selektionen zusammengefasst.
- Selektionen werden soweit als möglich zu den Blattknoten des Operatorbaumes verschoben. Mit anderen Worten: Selektionen werden möglichst früh ausgeführt. -> Alle Selektionen, die sich auf jeweils eine Relation beziehen, werden vor dem Join ausgeführt.
- Projektionen, die keine Eliminierung von Duplikaten erfordern, werden so früh wie möglich, jedoch nicht vor jeiner Selektion durchegeführt. Eine Projektion erfordert dann keine Elimination von Duplikaten, wenn dabei zumindest ein Schlüssel des Relationenschemas erhalten bleibt.
- Projektionen, die eine Eliminierung von Duplikaten erfordern, sind also so-weit als möglich zur Wurzel des Operatorbaumes zu verschieben.
- Suche gemeinsame Teilbäume des Operatorbaums. Wenn das Ergebnis des gemeinsamen Teilausdruckes eine Relation ist, die vom Sekundärspeicher in sehr viel kürzerer Zeit gelesen werden kann, als zu ihrer Berechnung notwendig ist, so lohnt es sich, diese Zwischenrelation nur einmal zu berechnen und abzuspeichern (Hier kommt es also nicht auf eine Umstrukturierung der Ab-frage an, sondern auf das Erkennen gleicher Teilbäume).
- Ein Sekundärindex ist eine Datenstruktur, mit welcher der Zugriff auf einzelne Datensätze einer Menge von Datensätzen beschleunigt wird.
- Diese Daten-struktur beinhaltet ein Verzeichnis von Wertpaaren (s, p). s ist die Ausprägung des Merkmals, für welches der Index aufgebaut wird, p ist der Ort des Datensatzes, welcher diese Merkmalsausprägung besitzt.
Zum Sortieren von n Tupeln werden bei Verwendung effizienter Sortierverfahren in der Größenordnung (n log n) Schritte benötigt. Das anschließende Erstellen des Verbundes ist dann sehr schnell: sind R und S sortiert, so werden sie einfach pa-rallel durchlaufen, wobei jeweils auf gleiche Werte für A und B zu prüfen ist.
- Es geht bei der Schichtenbildung nicht nur um die Abbildung von Relationen auf speicherbezogene Datenstrukturen, sondern auch um die geeignete Anordnung der funktionalen Komponenten
- Abfrageoptimierer,
- Autorisierung und Integritätskontrolle,
- Recovery sowie
- Synchronisation.
- Aufgabe des Systempuffer-Manager:
die Chance möglichst groß zu halten, dass eine Seite, auf die zugegriffen werden muss, sich bereits im Arbeitsspeicher befindet
- Der Datentransport zwischen Arbeitsspeicher und Externspeicher geschieht in Einheiten von Seiten fester Größe.
- Die Seitenverwaltung in Datenbanksystemen muss jedoch zusätzliche Anforderungen erfüllen:
- Pinned Pages: Im Zusammenspiel mit der Recovery (Wiederherstellung nach Fehlern) dürfen Seiten nicht beliebig in die Datenbank geschrieben werden. Solche Seiten nennen wir pinned (festgeheftet). Beispielsweise ist Recovery nach einem Fehler sehr einfach, wenn die betroffenen Seiten noch nicht in die Datenbank zurückgeschrieben wurden.
- forces output: Ebenfalls im Zusammenhang mit der Recovery müssen gelegentlich Seiten auf den Externspeicher zurückgeschrieben werden, obwohl der Platz im Systempuffer gar nicht benötigt wird.
-
Stellt eine Schnittstelle zur Verfügung, in der einzelne Tupel und logische Zugriffspfade angesprochen werden können.
-
Objekte der Ein-Tupel-Schnittstelle
-
Tupel
-
Indexe
-
Indexe definieren eine logische Ordnung der Tupel einer Relation, so dass man über den Index auf ein erstes, zweites usw. Tupel entsprechend dieser Ordnung zugreifen kann.
- Der Zugriffsmanager muss folgende Operatoren zur Verfügung stellen:
- Zugriff auf Tupel mit gegebenen Attributwerten
- ZUgriff auf Tupel aufgrund ihrere Position.
FIND NEXT
- Bereitstellen eines Tupels in einem Übergabebereich.
- Einfügen, Löschen eines Tupels
- Verändern von Attributwerten eines Tupels.
- Wenn die verlangte seiten nicht im Systempuffer sind, dann verlang der Zugriffsmanager die daten vom Systempuffer-Manager.
- Zu diesen Operatoren auf Tupeln kommen solche für das Lesen von Schemaeinträgen, für das Anlegen und Löschen solcher Einträge
- Die Ein-Tupel-Schnittstelle muss ferner geeignete Operatoren für das Transakti-onsmanagement zur Verfügung stellen.
- Die Schnittstelle zwischen Anwendungsprogramm und Datensystem ist mengenorientiert, d.h. die Objekte dieser Schnittstelle sind Relationen und Tupel, die Operatoren sind relationale Sprachen, etwa SQL.
- Übersetzt und OptimierT die Benutzerabfragen.
- Überprüft die Zugriffsberechtigungen der Benutzer zu allen in den Anweisungen referenzierten Daten.
- Integritätskontrollen durchführen.
- Der Datenbank-Entwurf ist in der Regel Teil eines umfassenderen Prozesses, in dem ein Informationssystem (etwa eines Unternehmens) entwickelt wird.
- Der Entwurfprozess der Datenbank wird als Bestandteil des Software-Entwurfprozesses für das Informationssystem des Unternehmens.
- Machbarkeitsanalyse: wirtschaftlich und technisch durchführbar?
- Erfassung und Analyse der Anforderungen
- Entwurf
- Implementierung
- Validierung und Abnahmetests
- Installation, Betrieb, Wartung
- Ziele
- Erfüllung der Anforderungen, die an die Dateninhalte gestellt werden.
- Bereitstelung einer natürlichen un verständlichen Strukturierung der Informationen.
- Unterstützung der Verarbeitungsanforderungen
- Das Ergebnis des Entwurfsprozesses ist ein Datenbank-Schema, das die Basis für die Implementierung der Datenbank darstellt.
- Phasen des Datenbank-Entwurfsprozess.
- Erfassung und Analyse der Anforderungen
- Konzeptueller Datenbankentwurf
- Wahl des DBMS
- Abbildung des Entwurfes auf das Datenmodell / a.k.a. logischer Entwurf
- Physischer Datenbank-Entwurf
- Implementierung des Datenbanksystems und Tuning.
- Vorteile von Erstellung eines DBMS-unabhängigen konzeptuellen Modells:
- Die Modelle von Datenbanksystemen haben typischerweise spezielle Ein-schränkungen, die den konzeptuellen Entwurf nicht beeinflussen sollten
- Das konzeptuelle Schema bleibt stabil, selbst wenn sich das eingesetzte Da-tenbanksystem ändern sollte.
- Das konzeptuelle Modell stellt eine wichtige Kommunikationsplattform zwi-schen Datenbank-Designern, Anwendungsentwicklern und Benutzern dar.
- Bei der Erstellung eines komplexen Datenbankschemas kann man zwei prinzipiel-le Ansätze unterscheiden:
- Zentraler SChema-Entwurf
- View-Integration
- Aktivitäten der Integrationsphase:
- welche Objekte in den unter-schiedlichen Teilschemata dieselben Real-Welt-Konzepte darstellen. Es ist damit zu rechnen, dass diese Objekte nicht immer auf dieselbe Art und Weise modelliert worden sind. Beispiele für mögliche Unterschiede
- Unterschiedliche Benennungen zur Beschreibung desselben Konzeptes (Synonyme), aber auch dieselbe Benennung für unterschiedliche Konzepte (Homonyme).
- Modellierung eines Konzeptes durch unterschiedliche Modellierungskonstrukte, z.B. als Entity-Typ in Teilschema 1 und als Attribut in Teilschema 2.
- Zuordnung von unterschiedlichen Wertemengen, z.B. bei Benutzung von unterschiedlichen Einheiten für Attribute.
- Definition unterschiedlicher Constraints; so kann eine Beziehung in Teil-schema 1 etwa als 1:n Beziehung, in Teilschema 2 aber als n:m Beziehung definiert sein.
- Bei Vorliegen von derartigen Unterschieden müssen Teilschemata modifiziert werden, um sie untereinander konform zu machen.
- Mischen von Teilschemata: Sind die übereinstimmenden Konzepte gleichartig modelliert worden, so können die Teilschemata in ein globales Schema inte-griert werden, indem jedes Konzept nur noch einmal dargestellt wird. Dies ist sicher der komplexeste Schritt und erfordert eine intensive Zusammenarbeit der verschiedenen Benutzergruppen zur Lösung von Konflikten.
- Schließlich kann das entstandene globale Schema umstrukturiert werden, um Redundanzen und unnötige Komplexität zu eliminieren
- welche Objekte in den unter-schiedlichen Teilschemata dieselben Real-Welt-Konzepte darstellen. Es ist damit zu rechnen, dass diese Objekte nicht immer auf dieselbe Art und Weise modelliert worden sind. Beispiele für mögliche Unterschiede
Jeder starke Entity-Typ A wird in eine Relation bzw. Tabelle RA überführt, die die Schlüsselattribute und die Nichtschlüsselattribute des entsprechenden Entity-Typs A enthält. Der Name der Relation bzw. der Tabelle RA entspricht dem Namen des Entity-Typen A. Die Attribute des Entity-Typs A werden die Attribute der Relation bzw. die Spaltennamen der entsprechenden Tabelle RA
Jeder n:m-Beziehungstyp X zwischen zwei Entity-Typen A und B wird in eine eigene Relation bzw. Tabelle RX überführt. Die Primärschlüssel der Relationen RA und RB werden als Fremdschlüssel in RX eingesetzt, wobei deren Kombination den Primärschlüssel von RX bildet. Die übrigen Attribute von X werden ebenfalls in RX übernommen.
Bei dieser Art von Beziehungstypen muss keine neue zusätzliche Relation eingeführt werden. Stattdessen wird der Primärschlüssel der Relation, die dem Entity Typen auf der 1-Seite entspricht, als Fremdschlüssel mit in die Relation aufge-nommen, die dem Entity-Typen auf der n-Seite entspricht.
Diese Transformation wird ähnlich wie die der 1:n-Beziehungstypen gehandhabt. Auch hier muss keine neue zusätzliche Relation eingeführt werden. Seien A und B zwei Entity-Typen. Dann kann man entweder den Primärschlüssel der Relation RA in RB als Fremdschlüssel einfügen, um die Beziehung auszudrücken, oder umge-kehrt den Primärschlüssel der Relation RB in RA.
Schwache Entity-Typen werden ebenfalls auf Relationen abgebildet. Jeder schwa-che Entity-Typ A wird in eine Relation RA überführt, die zunächst alle Attribute des Entity-Typen A enthält. Kann dieser Entity-Typ A nur durch einen anderen starken Entity-Typen B identifiziert werden, man spricht in diesem Zusammen-hang auch vom Owner-Typen B, so wird der Primärschlüssel der Relation RB als Fremdschlüssel in RA eingefügt. Dieser sowie der partielle Schlüssel des schwa-chen Entity-Typen A bilden den Primärschlüssel von RA.. (Unter dem partiellen Schlüssel eines schwachen Entity-Typen versteht man die Menge der Attribute, die ein Entity innerhalb der Menge der schwachen Entitäten, die zu einem Owner gehören, identifiziert.)
Bei den zuvor betrachteten Beziehungstypen sind wir immer davon ausgegangen, dass diese binärer Natur (n=2) sind. Mehrwertige Beziehungstypen, (n>2), werden grundsätzlich in eine eigene Relation überführt. Sei X ein Beziehungstyp sowie A1, ..., An die n beteiligten Entity-Typen. Die Primärschlüssel der n Relationen RA1, ..., RAn werden als Fremdschlüssel in die neue Relation RX eingeführt, ebenso werden alle Attribute des Beziehungstypen X in die neue Relation RX übernommen. Der Primärschlüssel von RX entspricht der Kombination aller Fremdschlüssel, die auf die Relationen RA1, ..., RAn verweisen.
Sei der Entity-Typ A der Supertyp der beiden Entity-Typen B und C. Alle an dieser Hierarchie beteiligten Entity-Typen werden in eigene Relationen RA, RB bzw. RC überführt. Jede dieser Relationen enthält als Attribute nur die Eigenschaften, die auf der entsprechenden Stufe der Typhierarchie definiert sind und die an die darunterliegenden Subtypen weitervererbt werden können. Die Relationen enthalten nicht die von oben geerbten Attribute. Die Relationen RB und RC haben als Primärschlüssel den Primärschlüssel der Relation RA, wobei diese auch als Fremdschlüssel agieren um auf RA zu verweisen.
Ein Relationenschema sollte gerade einen Entity-Typ oder einen Beziehungstyp beschreiben.
- Web das obrige nicht eingehalten wird, dann tauchen folgende Anomalien auf:
- Insertion Anomaly Einfüge-Anomalie
- Deletion Anomaly lösch-Anomalie
- Update Anomaly Änderungs-Anomalie
- Functional Dependency:
Sei $$$R(A_1, A_2, ..., A_n)$$$ ein Relationenschema und X und Y Teilmengen von $$${A_1, A_2 , ..., A_n}$$$. Dann ist Y funktional abhängig von X, geschrieben $$$X \arrow Y$$$, wenn es keine Relation vom Typ R geben kann, in der zwei Tupel denselben Wert für X, aber verschiedene Werte für Y haben.
- Fd-Menge: Menge funktionaler Abhängigkeiten
- Die Menge F+ aller funktionalen Abhängigkeiten, die von F impliziert werden, heißt Closure von F.
-
Existieren um die Anomalien zu entferden/auszuweichen.
-
Volle Funktionale Abhängigkeit:
Für eine Fd-Menge F und eine funktionale Abhängigkeit $$$X /arrow Y \in $$$ F+ heißt Y voll funktional abhängig von X, genau dann wenn es keine echte Teilmenge X' von X gibt, so dass $$$X \arrow Y /belongsto F+$$$.
-
Schlüssel:
X ist Schlüssel von $$${A_1, ..., A_n}$$$ genau dann, wenn $$$X \arrow {A_1, ..., A_n} \in F+$$$ und $$${A_1, ..., A_n}$$$ ist voll funktional abhängig von X.
-
Erste Normalform (1NF)
Die Werte der Wertebereiche jedes At-tributes unteilbare Werte sind und nicht ihrerseits wieder aus Mengen oder Tupeln bestehen.
-
Zweite Normalform (2NF)
Eine Relation R ist in zweiter Normalform, wenn jedes Nichtschlüsselattribut A von R voll funktional abhängig von jedem Schlüssel X von R ist.
-
Dritte Normalform (3NF)
Ein Relationenschema R mit Fd-Menge F ist in dritter Normalform, wenn für alle $$$X \arrow A \arrow F+ mit A \notin X$$$ gilt: X enthält einen Schlüssel für R oder A ist Schlüssel-attribut.
-
Boyce-Codd Normalform (BCNF)
Eine Relation R ist in Boyce-Codd Normalform, wenn für jede funktionale Abhängigkeit $$$X \arrow A \in F+, A \notin X $$$gilt: X enthält einen Schlüssel für R.
- BCNF zerleggung ist nicht immer fd-treu
- Entwurf von Datenbanken-Schemata:
- Started mit dem datenbank-unabhängigen konzeptuellen Schema -> relationales Datenbank-Schema
- Gütekriterien für relationale Datenbankschemata.
- Normalformen für das Ziel, möglichst nur einen Entity-Typ oder einen Beziehungstyp innerhalb eines Relationenschemas zu beschreiben, um so Anoma-lien zu vermeiden.
- Fd-Treue und Verlustlosigkeit garantieren, dass die entstehenden Zerlegungen dieselbe se-mantische Information enthalten wie die Ausgangsrelation.