Relationales Modell: SQL-DDL SQL als Definitionssprache SQL-DDL umfaßt alle Klauseln von SQL, die mit Definition von ■ ■ Typen Externe Ebene ◆ ■ Wertebereichen ■ Relationenschemata ■ Integritätsbedingungen ◆ ■ create view drop view Konzeptuelle Ebene ◆ ◆ ◆ create table alter table drop table zu tun haben Andreas Heuer, Gunter Saake – Datenbanken I 7-2 Andreas Heuer, Gunter Saake – Datenbanken I 7. Datenbankdefinitionssprachen Anforderungen an eine relationale DDL ➠ SQL-DDL Teil der Standardsprache für relationale Datenbanksysteme: SQL ■ ➠ IMS-DDL: hierarchisches Modell ➠ ODL (Object Definition Language) für objektorientierte Datenbanksysteme nach dem ODMG-Standard nach Codd 1982 Sprachmittel zur Definition von 1. 2. 3. 4. 5. ➠ CODASYL-DDL: Netzwerkmodell ■ 7-1 Attributen Wertebereichen Relationenschemata Primärschlüsseln Fremdschlüsseln Praxis SQL-89: Relationenschemata mit ◆ ◆ Andreas Heuer, Gunter Saake – Datenbanken I 7-4 Attributen und Wertebereichen Andreas Heuer, Gunter Saake – Datenbanken I 7-3 Die Anweisung create table Mit not null können in bestimmten Spalten Nullwerte als Attributwerte ausgeschlossen werden: create table Die Anweisung create table II not null create table not null char(10) not null varchar(200) varchar(30) ) ◆ ■ create domain alter domain drop domain Interne Ebene ◆ ◆ ◆ create index alter index drop index Andreas Heuer, Gunter Saake – Datenbanken I ◆ 7-8 Erlaubte Wertebereiche in create table Konzeptuelle Ebene (SQL-92) ◆ Andreas Heuer, Gunter Saake – Datenbanken I SQL als Definitionssprache II ■ 7-6 Andreas Heuer, Gunter Saake – Datenbanken I 7-5 ■ integer (oder auch integer4, int), smallint (oder auch integer2) ■ float(p) (oder auch kurz float) ■ decimal(p,q) und numeric(p,q) mit jeweils q Nachkommastellen ■ character(n) (oder kurz char(n), bei n = 1 auch char) für Strings fester Länge n ■ character varying(n) (oder kurz varchar(n)) für Strings variabler Länge bis zur Maximallänge n ■ bit(n) oder bit varying(n) analog für Bitfolgen ■ date, time bzw. timestamp für Datums-, Zeit- und kombinierte Datums-ZeitAngaben Andreas Heuer, Gunter Saake – Datenbanken I 7-7 Beispiel Tabellendefinition mit IEF Neben Primär- und Fremdschlüssel in SQL-92: create table Erweiterungen in SQL-92 char(10) not null varchar(200) varchar(30) primary key foreign key references default-Klausel: Defaultwerte für Attribute ■ create domain-Anweisung benutzerdefinierte Wertebereiche ■ check-Klausel weitere lokale Integritätsbedingungen innerhalb der zu definierenden Wertebereiche, Attribute und Relationenschemata ■ Andreas Heuer, Gunter Saake – Datenbanken I 7-10 Andreas Heuer, Gunter Saake – Datenbanken I SQL-89 Level 2 mit IEF create table in SQL-92 create table char(10) varchar(200) varchar(30) primary key foreign key references zweite Stufe der SQL-89-Norm sieht Zusatz IEF (Integrity Enhancement Feature) vor ■ 7-12 Definition von Schlüsseln und Fremdschlüsseln ■ not null implizit durch die primary key-Klausel Andreas Heuer, Gunter Saake – Datenbanken I 7-9 Andreas Heuer, Gunter Saake – Datenbanken I 7-11 Integritätsbedingungen mit check-Klausel I % % % % create table char(10) smallint check integer check between integer check decimal(8,2) check primary key foreign key references check select sum from select sum from & % $ % varchar(20) default ' & create domain check value in Integritätsbedingungen mit check-Klausel III % % % % & 0 & 0 ) ( 2 1 5 5 - - - 4 3 3 - and 2 1 8 2 9 6 6 7 & 0 : ) Integritätsbedingungen mit check-Klausel II create table create table 7-16 varchar(20) default / Andreas Heuer, Gunter Saake – Datenbanken I Definition eines Wertebereichs create domain 6 7-14 Andreas Heuer, Gunter Saake – Datenbanken I + + - , . smallint smallint varchar(80) not null primary key smallint check smallint check between and * varchar(80) not null / $ create table integer not null char(10) not null ! decimal(10,2) integer date " # Andreas Heuer, Gunter Saake – Datenbanken I 7-13 Andreas Heuer, Gunter Saake – Datenbanken I 7-15 Die Anweisung drop table alter table-Kommando in SQL-2 Statt restrict drop table cascade add restrict und cascade analog zum drop bei Attributen auch Angabe von Default-Werten und check-Klauseln erlaubt: / decimal(8,2) default - - - - 6 * 0 - - - 1 / add check Andreas Heuer, Gunter Saake – Datenbanken I 7-18 Andreas Heuer, Gunter Saake – Datenbanken I Die Anweisungen alter table und drop table ■ alter- und drop-Klausel für Attribute ■ Syntax des alter table-Kommandos in SQL-89: Die Klausel / restrict drop cascade erlaubt Löschen von Attributen, falls Änderung des Relationenschemas im Data Dictionary (ein neues Attribut wird dem Relationenschema Lehrstühle zugeordnet) Erweiterung der existierenden Basisrelation um ein Attribut, das bei jedem existierenden Tupel mit null besetzt wird Andreas Heuer, Gunter Saake – Datenbanken I / ◆ ■ decimal(8,2) Wirkung ist: ◆ / nur Änderung der Defaultwerte, nicht Änderung von Datentypen ■ & ) add add alter table Die Klausel alter alter table 7-20 7-17 ◆ ◆ keine Sichten und Integritätsbedingungen mit Hilfe dieses Attributs definiert wurden (im Fall restrict) oder mit gleichzeitiger Löschung dieser Sichten und Integritätsbedingungen (im Fall cascade) Andreas Heuer, Gunter Saake – Datenbanken I 7-19 Schlüsselbedingung simuliert mittels Index-Definition Beispiel in CODASYL-DDL 0 6 pic 9999 create table 6 record char(10) not null varchar(200) varchar(30) ) 5 5 0 / ) 6 5 5 pic 9999 pic x(30) pic x(60) asc is is 6 7-22 Andreas Heuer, Gunter Saake – Datenbanken I 0 set owner member Andreas Heuer, Gunter Saake – Datenbanken I Die Anweisung create index 7-24 Netzwerkmodell: CODASYL-DDL 5 / & 5 5 5 / & 5 on is is / index / & set owner member record SQL-89: Bestandteil der Norm unique 5 on / create unique index create pic x(20) pic x(40) 5 5 5 & 5 / / / Andreas Heuer, Gunter Saake – Datenbanken I Record- und Set-Typen in CODASYL-DDL (1971) 7-21 Andreas Heuer, Gunter Saake – Datenbanken I 7-23 Hierarchisches Modell: IMS-DDL II * root varchar(80) + smallint smallint varchar(20) parent record virtual in smallint / & / / / ◆ record Felder (analog der CODASYL-DDL; hier in Beispielen jedoch SQL-Datentypen) die Position des Record-Typs im Baum: – root (Record-Typ ist Wurzel des Baumes) oder – parent oder virtuelle Felder: virtual in ◆ ◆ tree Record-Informationen ■ Beispiel in IMS-DDL II / / Andreas Heuer, Gunter Saake – Datenbanken I 7-26 Andreas Heuer, Gunter Saake – Datenbanken I Hierarchisches Modell: IMS-DDL Beispiel in IMS-DDL / 0 6 ' varchar(10) varchar(20) date parent record integer char(10) smallint record parent virtual in Record-Typen & / / & / record integer / ■ root / record tree tree Bäume ■ 7-28 / ( & 0 / Andreas Heuer, Gunter Saake – Datenbanken I 7-25 Andreas Heuer, Gunter Saake – Datenbanken I 7-27 Objektorientiertes Modell: ODL key extent ' / 1 : in 6 inverse inverse raises struct Methoden mit ihrer Schnittstelle und einer spezifizierten Ausnahmebehandlung, die im Fehlerfall ausgelöst wird, etwa bei Verletzung von Integritätsbedingungen ■ Beziehungen zu anderen Klassen mit dem Wortsymbol relationship — auch inverse Beziehungen: ermöglichen Wahl zwischen 1:1-, 1:n, und und zwin:m-Kardinalitäten (hier: zwei 1:n-Beziehungen schen Studenten und Personen, da nur die Rückrichtung einen Set-Typ ) enthält: relationship relationship ■ interface attribute attribute attribute Erläuterung ODL-Beispiel II raises Andreas Heuer, Gunter Saake – Datenbanken I 7-30 Andreas Heuer, Gunter Saake – Datenbanken I Original-IMS-DDL Erläuterung ODL-Beispiel beschreibt Extension, in der die aktuell erzeugten Objekte vom Typ melt werden sollen (hier: Extension mit dem Namen ■ Typhierarchie: Angabe der Obertypen hinter dem Typnamen (hier: Obertyp ) 6 ■ / gesam- / ) Attribute mit Datentypen und Namen ■ Schlüssel des Objekttyps, eine Auswahl der Attribute, die zur eindeutigen Identifizierung der Objekte unabhängig von der Objektidentität verwendet ) werden können (hier: nur das Attribut ■ STUDENTENBAUM STUDENTEN, BYTES 40 PANR, BYTES 4, START 1 MATRIKELNUMMER, BYTES 10, START 5 STUDIENFACH, BYTES 20, START 15 IMMATRIKULATIONSDATUM, BYTES 6, START 35 BUCHEXEMPLARE, parent STUDENTEN, BYTES 16 INVENTARNR, name name name name name name name name statt Bäume, Record-Typen und Felder Schnittstelle zum Objekttyp 6 Data Base Descriptions, Segments und Fields dbd segm field field field field segm field 7-32 Andreas Heuer, Gunter Saake – Datenbanken I 7-29 Andreas Heuer, Gunter Saake – Datenbanken I 7-31