4-auf-1-PDF

Werbung
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
Herunterladen