Datenbanken In 21 Minuten ;-) Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen) Datei- vs. Datenbankorganisation Programm 1 Datei A Datei B Programm 2 Datei C Datenbank Programm 1 Logische Datei A Logische Datei B Programm 2 Datenbankverwaltungssystem Logische Datei C Web-DB-Kopplung, © Till Hänisch 2003 Physikalische Datei X Physikalische Datei Y Datenbanksysteme 2 Benutzer 1 Benutzer 2 Programm A Externes Modell A Externes Modell B DML Transformationsregeln Konzeptionelles Modell (Schema) DDL Transformationsregeln internes Modell (Schema) Speichermedien Web-DB-Kopplung, © Till Hänisch 2003 DSDL hierarchisches Modell Lieferant Adresse Artikel Lager Web-DB-Kopplung, © Till Hänisch 2003 Netzwerk-Modell Lieferant Adresse Warengruppe Artikel Lager Auftrag Web-DB-Kopplung, © Till Hänisch 2003 Lagerposition Relationale Datenbanken 1 Für den Anwender stellen sich die Daten in Form von Tabellen dar mögliche Operationen erzeugen neue Tabellen aus bestehenden Untermenge der Zeilen einer Tabelle Untermenge der Spalten einer Tabelle Mögliche Operationen Tabellen hinzufügen Datensätze hinzufügen (insert) Datensätze holen (select) Datensätze ändern (update) Datensätze löschen (delete) Tabellen löschen Web-DB-Kopplung, © Till Hänisch 2003 Relationale Datenbanken 2 Tabelle Auftragskopf PS Auftragspositionen FS Datensatz Web-DB-Kopplung, © Till Hänisch 2003 Relationale Datenbanken 3 Eigenschaften der Relationen (zweidimensionalen Tabellen) Die Zeilen der Tabelle sind paarweise verschieden Die Reihenfolge der Zeilen ist irrelevant Das Tauschen der Spalten ändert die Relation (Tabelle) nicht Die Attributwerte von Relationen sind atomar Die Spalten der Tabelle sind homogen (= alle Werte einer Spalte sind vom gleichen Datentyp) Web-DB-Kopplung, © Till Hänisch 2003 Normalisierung Normalform Test Abhilfe 1. NF Relation sollte keine mehrwertigen Attribute haben Neue Relation für jedes mehrwertige Attribut 2. NF Bei Relationen mit zusammengesetztem PK sollte kein Attribut von einem Teil des Schlüssels funktional abhängig sein Zerlegung, neue Relation für jeden Teil des Schlüssels mit den abhängigen Attributen. (Achtung: Beziehung zum PK der ursprünglichen Relation und allen abhängigen Attributen muß erhalten bleiben) 3. NF Kein Nicht-Schlüsselattribut sollte von einem anderen NichtSchlüsselattribut funktional abhängig sein Zerlegung, neue Relation mit den Nicht-Schlüsselattributen und ihren abhängigen Attributen "Your attributes shall depend on the key, the whole key and nothing but the key so help me Codd" (Usenet, comp.databases.oracle, Autor unbekannt) Web-DB-Kopplung, © Till Hänisch 2003 Transaktionen Transaktionen stellen ein Bündel logisch und fachlich zusammen gehörender Buchungen dar. Besonderes Kennzeichen transaktionaler Systeme ist die konsistente Veränderung eines gemeinsamen Datenbestandes durch mehrere, parallel ablaufende Dialoganwendungen Beispiel Überweisung: Eine Überweisung besteht in aus zwei Buchungen: Der Soll-Buchung auf dem Konto des Überweisenden, und Der Haben-Buchung auf dem Konto des Empfängers Da es nur sinnvoll ist, wenn beide Buchungen gemeinsam vorgenommen werden, ist dies von einem Transaktionssystem sicherzustellen (Commit vs. Rollback) Web-DB-Kopplung, © Till Hänisch 2003 ACID-Eigenschaften Atomicity Änderungen finden so statt, daß das System konsistent bleibt Beispiel: Der von Konto 1 angehobene Betrag ist der gleiche wie der Konto 2 gutgeschriebene Isolation Beispiel: Geld wird von Konto 1 abgehoben und Konto 2 gutgeschrieben Consistency Die Änderungen an den Daten durch eine Transaktion finden entweder vollständig oder gar nicht statt Für jede Transaktion Ti sieht das System so aus, als ob alle Tj mit i<>j entweder vor oder nach Ti ablaufen Beispiel: Wenn jemand anderes gleichzeitig eine Buchung auf Konto1 oder Konto 2 macht, wird die Überweisung trotzdem korrekt ausgeführt Durability Wenn eine Transaktion abgeschlossen ist, bleiben die Daten auch bei Abstürzen,... erhalten Beispiel: Auch wenn der Geldautomat nach der Auszahlung abstürzt, taucht die Auszahlung im Konto (Auszug) auf Web-DB-Kopplung, © Till Hänisch 2003 Tabellen In relationalen DB werden Daten in Tabellen organisiert Jede Spalte enthält eine bestimmte Art von Information, jede Zeile einen Datensatz Jede Spalte hat einen Datentyp CHAR, VARCHAR, NUMBER, DATE,... Web-DB-Kopplung, © Till Hänisch 2003 Tabellen anlegen CREATE TABLE tabname (columns); z.B. Tabelle Artikel CREATE TABLE Artikel ( Nr INTEGER, Name VARCHAR2(50), Beschreibung VARCHAR2(500), Preis INTEGER ); Löschen mit DROP TABLE tabname; Web-DB-Kopplung, © Till Hänisch 2003 Daten einfügen INSERT INTO tabname(col) values(val) z.B. Tabelle Artikel INSERT INTO Artikel(Nr,Name,Beschreibung) VALUES(1,‘Buch',‘über das Leben'); Strings in einfachen Hochkomma ' Web-DB-Kopplung, © Till Hänisch 2003 Daten abrufen SELECT cols FROM tabname; z.B. Tabelle Artikel SELECT Nr, Name FROM Artikel; Vereinfachung: * = alle Spalten SELECT * FROM Artikel; Auswahl SELECT Name, Preis FROM Artikel WHERE Nr=10; Web-DB-Kopplung, © Till Hänisch 2003 Daten löschen DELETE FROM tabname [WHERE ...]; z.B. Tabelle Artikel DELETE FROM Artikel WHERE Nr=1; Achtung: DELETE FROM Artikel; löscht alle Datensätze der Tabelle ! Web-DB-Kopplung, © Till Hänisch 2003 Tabellen verknüpfen Informationen sind auf mehrere Tabellen verteilt und sollen zusammengefasst werden: Join z.B. Name der Angestellten in EMP, Name der Abteilung in DEPT SELECT E.ENAME,D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO; Web-DB-Kopplung, © Till Hänisch 2003