SQL/Datenbanken Klausur: Basics Kapitel 1: Einführung in Datenbanken 1.1 Historische Entwicklung Dateisysteme Nach und nach wurde in Unternehmen immer mehr EDV eingesetzt, diese gewachsenen EDV-Systeme arbeiteten mit Dateien und waren zunächst nicht für den Parallelzugriff verschiedener Prozesse sondern für Batch-Abläufe, in denen immer ein Prozess auf eine Datei zugreift. Wurden neue Anforderungen gestellt, so musste eine neue Datei erzeugt werden, die oft auch Informationen enthielt, die bereits in anderen Dateien gespeichert waren. Wesentliche Nachteile dieser gewachsenen Dateisysteme: a) Redundanz (Mehrfachspeicherung ein und derselben Information in verschiedenen Dateien = höherer Speicherplatzbedarf, höherer Aktualisierungsaufwand!) b) Inkonsistenz (Bei Redundanz wird eine Information nicht in allen Dateien aktualisiert!) c) Logische Datenabhängigkeit (Veränderungen an den Record-Schnittstellen, z.B. Erweiterung um ein neues Feld im Record, betrifft alle diesen Record benutzenden Programme, diese müssen alle geändert werden!) d) Physikalische Datenabhängigkeit (Veränderungen der Dateizugriffsart betreffen alle diese Datei verwendenden Programme, z.B. Umstellung von sequentiell auf indexsequentiell, diese Programme müssen alle geändert werden!) e) Ablaufsicherheit (Parallelzugriffe verschiedener Programme auf ein und dieselbe Datei müssen synchronisiert werden, sonst kommt es zu inkonsistenten Zuständen! (Sehr schwierig, da es keine zentrale Instanz gibt!) ) f) Datenschutz/Datensicherheit (Datenschutz muss jedes Programm selbst realisieren, da es keine zentrale Instanz gibt, dies ist unsicher, jedes Programm macht es anders! Datensicherheit außer genereller Sicherheitskopien ist ohne zentrale Instanz nicht möglich!) 1.2. Konzeption von Datenbanksystemen (A) Zentralisierte Sicht: Man „sieht“ die Daten als ganzes und schafft eine koordinierende zentrale Instanz, die die Daten verwaltet und den Anwendungen zur Verfügung stellt (nicht die Anwendungen oder deren Programmierer bestimmen somit die Datenstruktur, sondern die zentrale Instanz! Entfernen der engen Verzahnung mit dem Dateisystem) (B) Struktur eines Datenbanksystems: 1. Datenbank (DB) := integrierte Sammlung von Daten, nach einheitlichen Regeln gespeichert, als Basis aller Informationsabfragen 2. Datenbankmanagementsystem (DBMS) := einheitliches Softwareprodukt, das eine Datenbank kontrolliert und organisiert, hat exklusiven Zugriff auf die Datenbank, alle Informationsanfragen laufen an das DBMS, welches hierfür Schnittstellen bereitstellt 1.3 Sichten (= spezielle externe/logische Sichtweise auf Daten!) DBMS setzt Daten für bestimmte Anwendungen in bestimmte Sichten um, dies betrifft im wesentlichen Datenstrukturen, Datenmengen und Datenformate! Zwei wesentliche Vorteile hierbei: a) Anwenderfreundlichkeit, da nutzeradäquater Teil der Daten: so viel sehen wie nötig! b) Datenschutz, da Anwendungen keinen Zugriff auf nicht benötige Daten haben: so wenig sehen wie möglich! 1.4 Schema/Data Dictionary Die Strukturbeschreibung einer Datenbank wird selbst in einer Datenbank gespeichert, diese Datenbank wird Schema genannt, für jede Abfrage der Datenbank interpretiert das DBMS zunächst das Schema, dieses wird im Data Dictionary abgelegt, wo auch alle Metainformationen (auch z.B. die über Nutzersichten) der Datenbank in weiteren Schemata gespeichert werden. Vorteil der separaten Speicherung der DB-Struktur: DBMS ist nicht logisch von der Datenbankstruktur abhängig! Ohne Data Dictionary kann eine Datenbank nicht verarbeitet werden! 1.5 Vorteile des Datenbankeinsatzes (A) Logische Datenunabhängigkeit (Auch wenn neue Spalten in eine Tabelle/Datenbank kommen, sind die Sichten der einzelnen Anwendungen nicht betroffen, diese sind logisch unabhängig, eine Anwendung braucht nicht mehr die Gesamtstruktur der Daten zu kennen) (B) Physikalische Datenunabhängigkeit (Nur das DBMS speichert Daten physikalisch; wie es sie speichert, ist den Anwendungen unbekannt, auch wenn es die Daten physikalisch völlig reorganisiert, so sind die Anwendungen hiervon unabhängig) (C) Datenmodelle (Definition Datenmodell: abstrakte, abgeschlossene, logische Definition einer Menge von Objekten (für die Modellierung der Datenstrukturen) und Operatoren (für die Modellierung des Verhaltens bekannteste Modelle: Relationenmodell, objektorientiertes Modell, Netzwerkmodell, hierarchisches Modell Dies alles nur möglich, da nicht an Speicherform gekapselt anwendungsnah!) (B) Datenschutz (Alle Zugriffe auf DB erfolgen über DBMS, strenge Kontrollen möglich, da DBMS nicht zu umgehende Instanz für Benutzerberechtigungen etc. (im Data Dictionary gespeichert) ) (C) Integrität/Konsistenz (Regeln/Domänen für Daten werden im Data Dictionary abgelegt, da DBMS einzige Instanz für Zugriff auf die DB ist, kann es diese Regeln streng auf Einhaltung prüfen, so kommt es zu keinen Inkonsistenzen (Wiederspruch mit abgebildeter Umwelt) Inkonsistente Daten können in DB (bei Dateien nicht) zu Kettenreaktion führen und weitere Daten infizieren! Semantische Integrität!) (D) Kontrollierte Redundanz (gewünschte Redundanz ist dem DBMS bekannt, da im Data Dictionary gespeichert, Änderungen an den Daten betreffen somit immer alle Kopien! so sind die Daten in jedem Fall konsistent!) (E) Standardisierung (Zentralisierung der Daten in einer DB und damit verbundene Gruppe der Datenbankadmins ermöglichst die Festlegung und Einhaltung von Standards, besonders vorteilhaft bei Portierungen oder bei Schnittstellen zu anderen Systemen) 1.6 Verwaltungsfunktionen des DBMS (A) Synchronisation (Gleichzeitig Nutzerzugriffe auf die selben Daten: DBMS trennen alle Nutzerzugriffe dermaßen voneinander, als wenn jeder Nutzer die Datenbank für sich alleine hätte) (B) Transaktionen (Definition Transaktion: Eine Transaktion ist eine logisch zusammenhängende Menge von Änderungs-Operationen, die entweder ganz oder gar nicht ausgeführt werden Alle Änderungen auf der DB laufen unter Transaktionskontrolle ab! Wurde eine Änderung (Transaktion) nicht korrekt beendet (kein „Commit“), wird ein „Rollback“, das Zurücksetzen in den Zustand vor der Transaktion ausgelöst! Weitere Gründe für Rollbacks: 1. Verletzung der Integritätsregeln, 2.Verletzung der Datenschutzkregeln, 3. expliziter Transaktionsabbruch) (C) Datensicherheit (Datensicherung durch Backups jeder Zeit problemlos möglich, zusätzliche durch Transaktionskontrolle („Rollback“ bei Fehlern) jederzeit gewährleistet Datenverlust immer auf letzte Transaktion begrenzt!) 1.7 Nutzerklassen beim Datenbankeinsatz 1. Anwendungsprogrammierer 2. Endnutzer 3. Datenbank-Administratoren Kapitel 2: Das relationale Modell 2.1 Der Begriff des Datenmodells a) Struktur: relationale Strukturen = Tabellen (logische Beschreibung, nicht physikalisch! anwendungsnah!) b) Integritäten: Bedingungen – Constraints c) Datenmanipulation: UNION, JOIN, etc. 2.2 Informale Definition einer Relation Objektklassen: Tabellen Beziehungen: Tabellen Einfachheit des Modells sorgt für Natürlichkeit! (Anzahl der Spalten einer Tabelle: Grad!) 2.3 Formale Definition von Relationen (A) Attribute (Spalten einer Relation/Tabelle, Attribut-Betzeichner = Name des Attributs, müssen im Relationenmodell elementar sein!) (B) Domänen (abgegrenzte Wertebereiche für Attribute, vom DBMS kontrolliert) [Anmerkung: Cardinal: natürliche Zahlen!] (C) Tupel (Zeile einer Tabelle/Relation: besteht aus einer endlichen, geordneten Menge von Werten (mathematisch Tupel) pro Zeile eine Entität) (D) Relationen (Eine Relation ist Teilmenge aus M1 x M2, also: R ⊆ M1 x M2 kartesisches Produkt (= engl. Relation) Eine n-stellige Relation ist also: R ⊆ M1 x M2 x ... x Mn mit den Tupeln (x1,x2,...,xn), wobei xi ∈ Mi ) (E) Relationen und Tabellen (gleich zu verwenden, R ⊆ D1 x D2 x ... x Dn gilt für die verschiedenen Domänen, Tupel sind in DBs nicht wie laut mathematischer Definition vorgeschrieben immer paarweise verschieden!) (F) Relationale Struktur (Anordnung der Attribute macht die relationale Struktur aus! R = R(A1,A2,...,An) ) 2.4 Relationenalgebra Operationenmenge heißt Algebra, daher heißt die Operationenmenge des Relationenmodell Relationenalgebra (1) Mengentheoretische Operationen Vereinigung: T = ∪ (R, S) [in einem von beiden] Durchschnitt: R ∩ (R, S) [in beiden] Differenz: T = \ (R, S) [in R aber nicht ins S] (2) Selektion S = Sel (R, <Bedingung> ) [die aus R, die <Bedingung> erfüllen] (3) Projektion S = Proj ( R, [A1, …, An]) [bestimmte Spalten von R oder neu ordnen der Attribute] (4) Verbund T = Join (R, S, [A1,..., An]) [alle in die […] dieselben Werte haben, natürlicher Verbund, alle weiteren gehen verloren!) 2.5 Relationale Integritäten Relationale Integritäten = Bedingungen, die die Objekte erfüllen müssen (A) Eindeutigkeit von Tupeln (mathematische Definition der Relation als Menge, daher keine doppelten Tupel erlaubt! in SQL aber schon, identische Entitäten werden abgebildet, fragwürdig!) (B) Reihenfolge der Tupel beliebig (auch das aus mathematischer Mengendefinition ableitbar!) (C) Schlüssel Definition Schlüsselattribut: eine minimale Menge von Attributen für eindeutige Identifikation eines Tupels unter allen Tupeln Definition Schlüssel: der konkrete Wert eines/der Schlüsselattributs/e heißt Schlüssel Gibt es mehrere Attributkombinationen, die eindeutig identifizieren so redet man von Schlüsselattributkandidaten und wählt ein passendes Primärschlüsselattribut! (D) Fremdschlüssel Definition: Eine Attributkombination in einer Relation heißt Fremdschlüsselattribut, wenn diese Attributkombination in einer anderen Relation Primärschlüssel ist! Die konkreten Werte dieser Attribute heißen entsprechend Fremdschlüssel Problem der referentiellen Integrität! Fremdschlüssel dürfen nicht ins Leere zeigen! 2.6 Bewertung des Modells Einzige Struktur: Relation: Objekte: sind in Tupeln Beziehungen: realisiert durch Fremdschlüssel Kapitel 3.0 SQL - - - - 1970 Codd veröffentlicht erste Theorien zu relationalen Datenbanken Definition eines relationalen Datenbanksystems nach Codd: 1. Alle Werte nur in Relationen und Zugriff nur über diese Strukturen (keine Zeiger etc.) 2. relationale Operatoren für Selektion, Projektion und Verbund werden unterstützt Unterteilung von SQL: a. DDL (Data Definition Language) [Tabellen, Sichten, Rechte etc. anlegen] b. DDM (Data Manipulation Language) [Eingabe, Änderung, Löschen von Daten etc.] SQL ist nicht prozedural! Gewünschte Daten werden durch Eigenschaften beschrieben, das Ergebnis ist eine Menge von Tupeln, was die Verarbeitung in imperativen Programmiersprachen, die satzorientiert arbeiten, schwierig macht Sprachstandard ANSI/ISO hat Vorteile: 1. Systeme portabel 2. Systeme herstellerunabhängig 3. mehrere DBMS können in einer Umgebung parallel laufen 4. Lebensdauer einer standardisierten Schnittstelle ist wesentlich höher 5. definierte Schnittstellen zwischen Anwendungen und Datenbanken © 2002 by Marc Heubes, auf der Basis des Skripts von Prof. Dr. Krägeloh