Kapitel 1 Einführung Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München © 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester 2007/08 von Dr. Matthias Schubert 1 Einführung Üb Übersicht i h 1.1 Datenbank-Architektur im Praktikum 1 2 Datenbank-Design 1.2 1.3 ER-Modell und relationales Modell 1.4 Datendefinition in SQL 15 D 1.5 Data t Dictionary Di ti LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 2 1 Einführung O Oracle: l Objekt-Relationales Obj kt R l ti l Datenbanksystem D t b k t (V i 10 (Version 10g)) Client-Server-Architektur o DBMS läuft auf einem dedizierten Serverrechner (flores.dbs.ifi.lmu.de) o Anwendungsprogramme laufen auf Client-Rechner (Linux, Solaris, Windows) o Kommunikation über Netzwerk für den Benutzer transparent o Viele Anwender greifen gleichzeitig auf die Datenbank zu (Transaktionsschutz) o Verteilte Datenbank möglich Zugriff auf die Datenbank über ... o Anfragesprache SQL o Prozedurale Erweiterung PL/SQL (Oracle-spezifisch) Q in den Hostsprachen p C und Java ((auch als Server Stored Procedures)) o SQL o 4 GL-Tools (Fourth-Generation Languages) wie beispielsweise Report- oder Masken-Generator LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 3 1 Einführung Üb Übersicht i h 1.1 Datenbank-Architektur im Praktikum 1 2 Datenbank-Design 1.2 1.3 ER-Modell und relationales Modell 1.4 Datendefinition in SQL 15 D 1.5 Data t Dictionary Di ti LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 4 1 Einführung Datenbanksystem D t b k t (DBS) System (DBS): S t zur Beschreibung, B h ib S Speicherung i h und d Wiedergewinnung umfangreicher Datenmengen, die von verschiedenen Anwendungsprogrammen benutzt werden. Ein DBS besteht aus: o Datenbank: “Sammlung aller gespeicherten Daten” (Skript) • • • Es existiert ein Ziel des Entwurfs und eine Vorstellung über die Nutzung Daten, die einen Ausschnitt der umliegenden Welt beschreiben Es existieren logische Zusammenhänge zwischen den Daten in einer DB o Datenbank-Management-System • Programmsystem, g y , das die DB verwaltet,, fortschreibt und Zugriffe g darauf regelt g LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 5 1 Einführung Ab t kti Abstraktionsebenen b eines i D t b k Datenbanksystems: t Externe Sicht • • Views Ausschnitte aus dem konzeptionellen Schema Benutzergruppe 1 Externe Sicht 1 … Benutzergruppe n Externe Sicht n Konzeptionelle Sicht • • einheitliche Darstellung aller Daten DBS bietet dazu Datenmodell mitit entsprechender t h d DDL Konzeptionelle (logische) Datenbank Interne Sicht • • Implementierung der konzep. DB Dateien, Zugriffspfade, etc. Physische Datenbank LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 6 1 Einführung A ät für Ansätze fü das d Datenbank-Design D t b kD i o Daten-orientiert: Die Entwicklung der Datenbank orientiert sich an den Daten, die im Fokus der Anwendungen stehen stehen. o Funktions-orientiert: Die Entwicklung der Datenbank orientiert sich an den Funktionen (Anwendungen), die von dem Datenbanksystem unterstützt werden sollen. o Objekt-orientiert: Die Entwicklung der Datenbank orientiert sich an der Menge der interagierenden Objekte, die in dem zu modellierenden Ausschnitt der realen Welt auftreten. Objekte vereinen datenspezifische Eigenschaften und funktionsspezifisches Verhalten. LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 7 1 Einführung E t t h Entstehungszyklus kl Anforderungsanalyse Konzeptioneller Entwurf Logischer Entwurf Feedback Physikalischer Entwurf Wartung, Modifikation, Erweiterung LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 8 1 Einführung A f d Anforderungsanalyse l o Analyse und Spezifikation von • • • Daten Datenbeziehungen Transaktionen (Funktionen auf den Daten, die von den Applikationen benötigt werden) o Randbedingungen • • • • Leistungsanforderungen (Antwortzeiten etc.) Sicherheit HW/SW Plattformen HW/SW-Plattformen Anwendungsrichtlinien o Ansätze • • Knowledge Acquisition Design: Der DB-Experte interviewt die zukünftigen Anwender und versucht deren Anforderungen festzustellen. festzustellen Participatory Design: Der DB-Experte und der zukünftige Anwender entwickeln das Design als Team. LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 9 1 Einführung K Konzeptioneller ti ll Entwurf E t f o Basierend auf der Anforderungsanalyse werden die essentiellen Konzepte extrahiert und in einem konzeptionellen Datenmodell (DB (DB-Schema) Schema) beschrieben. o Entity Entity-Relationship Relationship Modell • • Formale Beschreibung der Datenobjekte und ihrer Beziehungen Integration verschiedener Sichten o Beschreibung der Transaktionen (Eingabe, Änderung, Ä ...) o Festlegung von Integritätsbedingungen für die Daten und für die Transaktionen LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 10 1 Einführung L i h Entwurf Logischer E t f o Ausgehend vom DB-Schema (z.B. ER-Modell) wird ein DBS-spezifisches Datenmodell (z.B. (z B Relationales Datenmodell) entwickelt entwickelt. o Wichtige Schritte bei der Transformation des DB-Schemas in das Datemodell: • • • • • Normalisierung N li i und d Denormalisierung D li i Primärschlüssel festlegen Formulierung von Integritätsbedingungen und Transaktionen in DBS-spezifischem Datenmodell (relationale Anfragen, Anfragen rel. rel Algebra etc etc.)) View-Definitionen (externe Sichten) Zugriffsrechte LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 11 1 Einführung Ph ik li h Entwurf Physikalischer E t f (Umsetzung (U t des d Datenmodells) D t d ll ) o konkrete Domäne für Attribute, z.B. CHAR(30), VARCHAR(20), NUMBER(4), NUMBER(7 2) DATE, NUMBER(7,2), DATE … o Erzeugen der Relationen und evtl. Laden mit vorhandenen Daten o Einrichten Ei i ht von Vi Views, B Benutzern, t Z Zugriffsrechten iff ht o Eingabe der Integritätsbedingungen (Anfragen, Prüfprogramme, ...) o Definition geeigneter Indexe Wartung, Modifikation und Erweiterung o Arbeiten mit der Datenbank,, Beseitigung g g von Fehlern o Erweiterung, Erstellen von Anwendungsprogrammen o Re Re-Engineering Engineering, Integration LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 12 1 Einführung Üb Übersicht i h 1.1 Datenbank-Architektur im Praktikum 1 2 Datenbank-Design 1.2 1.3 ER-Modell und relationales Modell 1.4 Datendefinition in SQL 15 D 1.5 Data t Dictionary Di ti LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 13 1 Einführung Das ER-Modell beschreibt einen Ausschnitt der realen Welt durch: Set Instanz Entity Relationship Attribut Menge gleichartiger Obj kt Objekte Beziehungsmöglichkeit Merkmal, Eigenschaft bestimmtes Objektt Obje Konkrete Beziehung zwischen zwei Objekten Eigenschaft eines e es Obje Objekts ts LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 14 1 Einführung K di lität von Relationships: Kardinalität R l ti hi 1:1-Beziehung (“one-to-one”): 1:1 1:n-Beziehung (“one-to-many”): 1:n n:m-Beziehung (“many-to-many”): ( many-to-many ): n:m LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 15 1 Einführung E Erweiterung: it ISA B i h ISA-Beziehungen Beispiel: Name Angestellter Gehalt i is_a Dienstwagen Semantik dieser ISA-Beziehung: Der Manager erbt alle Attribute Und Beziehungen vom Angestellten, auch den Schlüssel Schlüssel. Manager LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 16 1 Einführung B i i l Beispiel: Abteilung Lieferant angestellt liefert arbeitet an Angestellter Projekt verwendet Teil leitet is_a elektronisches Teil LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 mechanisches Teil 17 1 Einführung M d lli Modellierungsentscheidungen t h id 1. Attribut oder Entity? 2. Attribut zu welchem Entity? 3. Schlüsselattribute? 4. Entity oder Relationship? 5. Relationships nur zwischen zwei Entities? 6. Attribut oder Relationship? 7. Einsatz von ISA-Beziehungen? ISA Beziehungen? LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 18 1 Einführung 1 Attribut 1. Att ib t oder d Entity? E tit ? Di Dienstwagen t K Kennzeichen i h ODER Manager Manager fährt Dienstwagen Kriterien: • Ist das Attribut ein atomarer Wert oder aus mehreren Werten zusammengesetzt? • Kann der Wert des Attributs fehlen? • Kann das Attribut mehrere Werte gleichzeitig annehmen? • g ((bzgl. g der Korrektheit des Wertes)? ) Ist die Domäne des Attributs wichtig LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 19 1 Einführung 2 Att 2. Attribut ib t zu welchem l h E tit ? Entity? Telefon Person Telefon ODER Raum Kriterien: • Natürlichkeit, • Änderungsfreundlichkeit 3 Schlüssel-Attribute 3. Schlüssel Attribute • Dürfen auch mehrere sein (zusammengesetzter Schlüssel) • Künstliche IDs (Surrogate) nur dann einsetzen, wenn es keinen konstanten Schlüssel innerhalb des Entity-Typs gibt oder der Schlüssel aus sehr vielen g wäre Attributen zusammengesetzt LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 20 1 Einführung 4 E 4. Entity tit oder d Relationship? R l ti hi ? Kunde bestellt Anzahl Artikel Lieferdatum ODER Kunde bestellt Artikel Kriterien: • B i h Beziehung b benötigt öti t S Schlüsselattribute hlü l tt ib t → modelliere d lli E tit Entity • Beziehung hat viele Attribute → modelliere Entity LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 21 1 Einführung 5 Relationships 5. R l ti hi nur zwischen i h zweii Entities? E titi ? unär: binär: ternär: Bauteil besteht aus M Manager arbeitet b it t in i Arbeiter Fi Firma Maschine (selten, meist schlechte Modellierung) Auftrag g LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 22 1 Einführung 6 Attribut 6. Att ib t oder d Relationship? R l ti hi ? linker Nachbar Schlechte Modellierung im ER-Modell: Fremdschlüssel vermeiden Person rechter Nachbar Person Person ist Nachbar von besser als Relationship modelliert Aus anderen Attributen berechenbar (hier: Nachbarschaft über Raumnummer): keine Relationship verwenden Raumnummer LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 23 1 Einführung 7 Einsatz 7. Ei t von ISA-Beziehungen? ISA B i h ? Name Person Alter is_a Hauptfach Student Professor hält Vorlesung Kriterien: • Hat die Oberklasse gemeinsame Beziehungen / Attribute • H b di Haben die Untersklassen U t kl unterschiedliche t hi dli h B Beziehungen i h / Att Attribute ib t • Ist modellierte Information nützlich für die Applikation LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 24 1 Einführung Üb Übersicht i h 1.1 Datenbank-Architektur im Praktikum 1 2 Datenbank-Design 1.2 1.3 ER-Modell und relationales Modell 1.4 Datendefinition in SQL 15 D 1.5 Data t Dictionary Di ti LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 25 2 SQL und PL/SQL D B Der Befehl f hl CREATE TABLE (teilweise) (t il i ) iin O Oracle l SQL CREATE TABLE table schema. , ( column l d t t datatype ) [DEFAULT expr] [column_constraint] table constraint table_constraint AS subquery LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 26 2 SQL und PL/SQL table constraint ::= table_constraint :: CONSTRAINT constraint , UNIQUE ( column ) PRIMARY KEY , FOREIGN KEY ( column ) REFERENCES table , ( column ) CHECK (condition) LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 27 1 Einführung D t t Datentypen iin ORACLE (auszugsweise) ( i ) Datatype Description CHAR(size) Fixed length character date of length size. Maximum size is 255. VARCHAR2(size) Variable length character string having maximum length size bytes. Maximum size is 4000. NUMBER(p, ( s) ) N b h Number having i precision i i p and d scale l s. LONG Character data of variable length up to 2 gigabytes. DATE Valid V lid d dates t range ffrom JJanuary 1 1, 4712 BC tto December 31, 4712 AD. (s e) RAW(size) Raw binary data of length size bytes. Maximum size is 2000. LONG RAW Raw binary data of variable length up to 2 gigabytes. BLOB A binary large object. Maximum size is 4 gigabytes. LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 28 1 Einführung R l ti Relationales l Modell M d ll (Wiederholung) (Wi d h l ) o Einziger Grundbaustein: Relation (Tabelle) • • • • wird beschrieben durch Relationenschema: R(A1 : D1, ... , Ak : Dk) Attribut Ai : Spalte, Name eindeutig Domäne Di : Wertebereich, Datentyp des Attributs Tupel: Zeile, Element einer Relation o Relationales Datenbankschema: Menge aller Relationenschemata o R Relationale l ti l D Datenbank: t b k Menge aller Relationen = Relationales DB-Schema + Werte o Relationen sind Mengen • • keine Duplikate Reihenfolge der Tupel belanglos LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 29 1 Einführung T Transformation f ti ER - Relationales R l ti l Modell M d ll o Bezeichnungen umwandeln • • ER: freie Bezeichnungen und Beschreibung SQL: feste Notation (Namensgebung) z.B. bezügl. Sonderzeichen, Schlüsselwörter o Datentypen für Attribute festlegen • • ER: frei SQL atomare SQL: t D t t Datentypen (O l (Oracle-spezifisch) ifi h) CHAR, VARCHAR2, NUMBER, LONG, DATE, RAW, LONGRAW, ... Auswahl des Datentyps abhängig von den Operationen, die ausgeführt werden sollen. LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 30 1 Einführung T Transformation f ti von Entities E titi CREATE TABLE land ( name varchar2(25) NOT NULL, Fläche flaeche number(10,2), number(10 2) kfz_kennz char(4) NOT NULL, CONSTRAINT pk_name KFZKennzeichen Name PRIMARY KEY (name), UNIQUE (kfz_kennz) Land ); LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 31 1 Einführung T Transformation f ti von Relationships R l ti hi (n:m) ( ) Entity A und B haben wir schon überführt: CREATE TABLE A ( ... PRIMARY KEY a_id ...) CREATE TABLE B ( ... PRIMARY KEY b_id ...) Hinzu kommt: CREATE TABLE rel ( A a id ... NOT NULL, a_id b_id ... NOT NULL, rel_attr ... , arbeitet in rel_attr PRIMARY KEY (a_id, b_id), FOREIGN KEY (a_id) REFERENCES A, FOREIGN KEY (b (b_id) id) REFERENCES B B ); LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 32 1 Einführung T Transformation f ti von Relationships R l ti hi (1:n, (1 1:1) 1 1) Keine separate Relation für die Beziehung, sondern: 1:n → Aufnahme des Primärschlüssels von A in die Entity-Relation B A A 1:n 1:1 B B 1:1 → Aufnahme des Primärschlüssels von B in die Entity-Relation A oder umgekehrt CREATE TABLE A ( a_id ... NOT NULL, a_rest ... , b_id ... NOT NULL, PRIMARY KEY (a_id), FOREIGN KEY (b (b_id) id) REFERENCES B ); LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 33 1 Einführung T Transformation f ti von ISA-Beziehung ISA B i h CREATE TABLE person ( p id char(8) NOT NULL p_id NULL, p_id Name Alter name ... , alter ... , Person PRIMARY KEY (p_id) ); CREATE TABLE student ( p_id char(8) NOT NULL, is_a fach ... , PRIMARY KEY (p (p_id), id), FOREIGN KEY (p_id) REFERENCES person ) Student Professor CREATE TABLE professor ( p_id char(8) NOT NULL, ... , Fach PRIMARY KEY (p_id), ( id) FOREIGN KEY (p_id) REFERENCES person ); LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 34 1 Einführung Alt Alternative: ti Alt Alternative: ti CREATE TABLE person_x ( CREATE VIEW person (p_id, name, alter) AS ( p id char(8) NOT NULL p_id NULL, name ... , (SELECT p_id, name, alter FROM person_x) alter ... , UNION PRIMARY KEY (p_id) (SELECT p_id, name, alter FROM student) ) UNION (SELECT p_id, name, alter FROM professor) CREATE TABLE student ( p id char(8) NOT NULL, p_id ); name ... , alter ... , fach ... , PRIMARY KEY (p_id) ) CREATE TABLE p professor ( ... ) ); LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 35 1 Einführung Normalisierung N li i des d erzeugten t Relationalen R l ti l Schemas S h durch d h Herstellung H t ll der d 3. Normalform (z.B. mit dem Synthesealgorithmus aus dem DBS-Skript). Ein Relationenschema ist in der 3. 3 Normalform (3NF) (3NF), wenn für alle Abhängigkeiten X → A mit X كR, A אR, A בX gilt: • • X enthält einen Schlüssel von R, oder A ist prim. Seien S i A und d B Att Attributmengen ib t d des Relationenschemas R l ti h R (A (A,B B كR). R) B iistt von A funktional abhängig oder A bestimmt B funktional, geschrieben A → B, gdw. zu jedem Wert in A genau ein Wert in B gehört: A → B ֞ t1, t2 אr(R): t1[A]=t2[A]֜ t1[B]=t2[B] g Relationen r(R). ( ) Dabei bezeichnet r(R) ( ) eine Relation r für alle real möglichen über dem Schema R. Ein Attribut heißt prim, wenn es Teil eines Schlüsselkandidaten ist, sonst nicht prim. LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 36 1 Einführung Üb Übersicht i h 1.1 Datenbank-Architektur im Praktikum 1 2 Datenbank-Design 1.2 1.3 ER-Modell und relationales Modell 1.4 Datendefinition in SQL 15 D 1.5 Data t Dictionary Di ti LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 37 1 Einführung Neben N b d den D Daten t in i den d R Relationen l ti b benötigt öti t ein i D Datenbanksystem t b k t Informationen über die Relationen (und über andere Objekte), sog. “MetaDaten”. Die Meta-Daten werden im “Data Dictionary” oder “System Katalog” gespeichert. o Relationenverwaltung • • • • • Relationennamen Attributsnamen für jede Relation Domäne der Attribute Viewnamen und Viewdefinitionen Integritätsbedingungen o Benutzerverwaltung (Datenschutz) • • • Namen berechtigter (autorisierter) Benutzer Speicherbereich und Speicherobergrenze für jeden Benutzer Zugriffs- und andere Rechte einzelner Benutzer LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 38 1 Einführung o Anfragebearbeitung A f b b it • • • • • Anzahl der Tupel in jeder Relation de a e Indexnamen Indizierte Relationen Indizierte Attribute Art des Index Häufig: Data Dictionary ist selbst Teil der Datenbank. MetaInformation ist in Systemrelationen gespeichert. Systemrelationen sind wie alle anderen Relationen zugänglich zugänglich. o Verwaltete Objekte: • • • • • • • • Relation View Synonym Link Sequenz Schnappschuss PL/SQL Programm Benutzer LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 39 1 Einführung N Namensgebung b fü ORACLE-Systemrelationen für ORACLE S t l ti USER_ ALL_ DBA_ TABLES alle Tabellen, die der Benutzer angelegt hat alle Tabellen, auf die der Benutzer Zugriff hat alle Tabellen des gesamten Systems TAB_COLUMNS alle Spalten derjenigen Tabellen, die der Benutzer angelegt hat alle Spalten derjenigen Tabellen, auf die der Benutzer Zugriff hat alle Spalten aller Tabellen des gesamten Systems INDEXES alle Indexe, die der Benutzer angelegt hat alle Indexe, die über Tabellen erstellt t llt wurden, d auff die di der Benutzer Zugriff hat alle Indexe des gesamten S t Systems VIEWS alle Views, Views die der Benutzer angelegt hat alle Views, Views auf die der Benutzer Zugriff hat alle Views des gesamten Systems TAB PRIVS TAB_PRIVS Zugriffsrechte auf alle Tabellen, die der Benutzer angelegt hat Zugriffsrechte auf alle Tabellen, auf die der Benutzer Zugriff hat Zugriffsrechte auf alle Tabellen des gesamten Systems LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 40 1 Einführung B i i l f Beispielanfragen an das d Data D t Dictionary Di ti SQL> describe dictionary Name Null? Type ---------------------------- ------- ---- TABLE_NAME VARCHAR2(30) COMMENTS VARCHAR2(2000) SQL> select count(* ) from dictionary; COUNT(*) --------157 LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 41 1 Einführung SQL> select TABLE TABLE_NAME, NAME COMMENTS from dictionary where TABLE TABLE_NAME NAME like ‘%TABLE%’; TABLE_NAME COMMENTS -------------------- ------------------------------------------- ALL_TABLES Description of tables accessible to the user DBA TABLES DBA_TABLES Description of all tables in the database DBA_TABLESPACES Description of all tablespaces ...... SQL> select l TABLE_NAME, OWNER f from ALL_TABLES; TABLE_NAME OWNER ------------------------ ------------------------------ ACCESS$ SYS AUD$ SYS .... LMU München – Folien zum Datenbankpraktikum – Wintersemester 200/10 42