85
1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) – ENTITY-TYPES RELATIONSHIP-TYPES (1:N / N:M / 1:1) – Generalisierungshierarchie SQL-Anweisungen Überblick CREATE TABLE CREATE DOMAIN [AS] Datentyp [CHECK] SELECT ... FROM ... WHERE ... UPDATE, INSERT INTO, DELETE FROM, Datentypen, Vergleichsoperatoren, Aggregationsfunktionen Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

Embed Size (px)

Citation preview

Page 1: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

1

Rückblick

• Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell)– ENTITY-TYPES

– RELATIONSHIP-TYPES (1:N / N:M / 1:1)

– Generalisierungshierarchie

• SQL-Anweisungen Überblick– CREATE TABLE

– CREATE DOMAIN [AS] Datentyp [CHECK]

– SELECT ... FROM ... WHERE ...

– UPDATE, INSERT INTO, DELETE FROM,

– Datentypen, Vergleichsoperatoren, Aggregationsfunktionen

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 2: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

2

Offene Fragen

schreibweise Datentyp Date:

• Date'1995-06-22'

• Hochkomma: '

• Bei Strings: ' ' wird Gross-Kleinschreibung unterschieden,

• ansonsten (Schlüsselwörter, Tabellennamen, Attributnamen) wird Gross-Kleinschreibung nicht unterschieden .

• INSERT INTO : Zuweisung erfolgt über Position; bei Textfeldern müssen die Werte in Hochkomma eingefasst werden.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 3: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

3

Ausblick heute

• Relationale Algebra (theoretische Basis)

• SQL detaillierter / systematischer / vollständiger– CREATE TABLE

– SELECT ... FROM ... WHERE ...

• JOIN (Verbund)

• NULL-Werte 3wertige Logik / Semantik

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 4: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

Relationale Algebra

(Relationenalgebra)

Page 5: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

5

Relationale Algebra

Die relationale Algebra (Relationenalgebra)

bildet den formalen Rahmen für die

relationalen Datenbanksprachen.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 6: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

6

Relationale Algebra

Relationale Datenbanksprachen, die die Operationen der Relationenalgebra sinngemäss umsetzen, heissen

relational vollständige Sprachen.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 7: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

7

Relationale Algebra

Die relationale Algebra (Relationenalgebra) setzt Relationen (Tabellen) in der

ersten Normalform voraus.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 8: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

8

Relationale Algebra

Man unterscheidet:

• Mengenorientierte Operatoren

• Relationenorientierte Operatoren

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 9: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

9

Relationale Algebra

Alle Operatoren der Relationenalgebra

bilden eine oder zwei Tabellen auf eine neue Tabelle ab.

Tabelle1 Tabelle2

Tabelle1, Tabelle2 Tabelle3

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 10: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

10

Relationale Algebra

Mengenorientierte Operatoren:

• Vereinigung R S

• Durchschnitt R S

• Differenz R \ S

• Kartesisches Produkt R x S

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 11: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

11

Relationale Algebra

Vorraussetzung für die Anwendung der mengenorientierten OperatorenR S, R S, R \ S

ist das Verträglichkeitskriterium

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 12: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

12

Verträglichkeitskriterium

Die in die Operationen (R S, R S, R \ S) involvierten Tabellen R und S weisen die gleiche Anzahl Attribute auf und die Domänen / Datenformate der korres-pondierenden Attribute sind identisch.Die Ergebnistabelle hat dann auch die gleiche Anzahl Attribute mit den gleichen Domänen.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 13: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

13

Relationale Algebra

Ansonsten können die Operatoren der Relationenalgebra weitgehend ohne Einschränkung miteinander kombiniert werden.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 14: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

14

Mengenorientierte Operatoren

R

S

R S

R

S

R

S

R S

R \ S

R

S

R x S

Kartesisches Produkt:={(x,y): R(x) S(y)}

{t| t R or t S} {t| t R and t S} {t| t R and t S}

Vereinigung Duchschnitt Differenz

Page 15: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

15

Relationale AlgebraVereinigung (R S):• Die Vereinigungstabelle enthält alle

Datensätze, die in R oder in S enthalten sind.

• Da es sich um die mengentheoretische Vereinigung handelt, werden Duplikate dabei eliminiert.

• Zur Anwendung der Vereinigung müssen R und S gleiche Stelligkeit und verträgliche Domänen haben.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 16: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

16

Relationale AlgebraDurchschnitt (R S):• Die Durchschnittstabelle von R und S

enthält alle Datensätze (Tupel), die in R und in S enthalten sind.

• Alle Datensätze (Tupel) sind nur einmal enthalten.

• Zur Anwendung des Durchschnitts müssen R und S gleiche Stelligkeit und verträgliche Domänen haben.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 17: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

17

Relationale AlgebraDifferenz (R \ S):• Die Ergebnistabelle der Differenzoperation

zwischen R und S enthält alle Datensätze (Tupel) , die in R und nicht in S enthalten sind.

• Zur Anwendung des Durchschnitts müssen R und S gleiche Stelligkeit und verträgliche Domänen haben.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 18: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

18

Relationale AlgebraKartesisches Produkt (R S):• Das Kartesische Produktes R S zwischen

R und S ist die Menge aller möglichen Kombinationen (x,y), die sich aus den Tupeln x aus R und y aus S bilden lassen.

• Zur Anwendung des Kartesischen Produktes muss das Verträglichkeitskriterium nicht gelten, d.h. die Attribute der beteiligten Relationen müssen nicht gleiche Stelligkeit und verträgliche Domänen haben.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 19: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

19

Relationale AlgebraKartesisches Produkt: R x S

Beispiel

Gegeben seien die Relationen

R = {(1,Julia), (2,Michael)}

und

S = {(1,Julia), (3,Toni)}

R x S = {(1,Julia,1,Julia), (1,Julia,3,Toni), (2, Michael, 1,Julia), (2,Michael,

3,Toni)}Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 20: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

20

Beispieltabelle

M# Name Strasse Ort A#-Unt

M1 Meier Lindstrasse Liestal A3

M7 Huber Mattenweg Basel A5

M19 Schweizer Hauptstrasse Zürich A6

M4 Becker Wasserweg Liestal A6

Mitarbeiter

Page 21: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

21

Beispieltabelle

M# Name Strasse Ort

M1 Meier Lindstrasse Liestal

M7 Huber Mattenweg Basel

M19 Schweizer Hauptstrasse Zürich

Sportclub

Page 22: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

22

Beispieltabelle

M# Mitglied Strasse Ort

M4 Becker Wasserweg Liestal

M7 Huber Mattenweg Basel

Fotoclub

Page 23: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

23

Beispieltabelle

M# Name Strasse Ort

M1 Meier Lindstrasse Liestal

M7 Huber Mattenweg Basel

M19 Schweizer Hauptstrasse Zürich

M4 Becker Wasserweg Liestal

Clubmitglieder = Sportclub Fotoclub

Page 24: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

24

Beispieltabelle

M# Name Strasse Ort

M7 Huber Mattenweg Basel

Clubmitglieder = Sportclub Fotoclub

Page 25: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

25

Beispieltabelle

M# Name Strasse Ort

M1 Meier Lindstrasse Liestal

M19 Schweizer Hauptstrasse Zürich

Clubmitglieder = Sportclub \ Fotoclub

Page 26: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

26

Relationale AlgebraRelationenorientierte Operatoren:• Projektion der Tabelle R auf eine Menge von

Merkmalen M: M (R)

• Selektion von Zeilen aus einer Tabelle R mittels einer Formel F: F (R)

• Verbund zweier Tabellen R und S durch Prädikat P: R |X|P S

• Division der Tabelle R durch die Teiltabelle S: R S

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 27: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

27

Relationenorientierte Operatoren

R

S

Verbund von R und S durch Prädikat P

R |X|P S

M (R)

R

R

R

F (R)

Projektionvon R auf M

Selektionvon R mittels F

Page 28: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

28

Relationenorientierte Operatoren

R

Divison der Tabelle Rdurch die Teiltabelle S

R S

S

Page 29: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

29

Relationale Algebra

Projektion: Wir setzen hier voraus, daß M eine

Teilmenge aller Attribute von R (A1,..., An)

ist.

Die Projektion entsteht aus R durch Weglassen aller Attribute von R, die nicht in M aufgeführt sind. Dabei auftretende Duplikate (Datensätze) müssen entfernt werden.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 30: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

30

Relationale Algebra

Projektion:

Beispiel

R = {(42,18,Maria), (99,42,Max), (42,30,Maria)}

Projektion(R,1.Stelle, 3.Stelle) = {(42,Maria), (99, Max)}

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 31: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

31

Beispiel - Projektion

Ort

Liestal

Basel

Zürich

Ort (Mitarbeiter)

Page 32: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

32

Beispiel 2 Projektion

A#-Unt Name

A3 Meier

A5 Huber

A6 Schweizer

A6 Becker

A#-Unt,Name (Mitarbeiter)

Page 33: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

33

BeispieltabelleKartesisches Produkt:Wettkampfpaarungen: (Sportclub \ Fotoclub) x Fotoclub

MitgliedM# M#Name Strasse StrasseOrt Ort

M1M1M19M19

M4M7M4M7

MeierMeierSchweizerSchweizer

LindstrasseLindstrasseHauptstrasseHauptstrasse

LiestalLiestalZürichZürich

BeckerHuberBeckerHuber

WasserwegMattenwegWasserwegMattenweg

LiestalBaselLiestalBasel

Page 34: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

34

Relationale AlgebraDivision: R S

Setzt voraus, dass S in R enthalten ist!!!

R S berechnet eine Teiltabelle R´von R mit der Eigenschaft, dass R´ x S R.

R´muss dabei maximal sein.

R´ enthält genau die Attribute von R, die nicht in S vorkommen.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 35: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

35

M# PROJ#

M1M1M1M2M2M4M4

P1P2P4P1P2P2P4

PROJ#

P2P4

M#

M1M4

RTabelle der den Projekten zugeordneten Mitarbeiter

Beispiel Division

SR´

Mitarbeiter, die gleichzeitig an ProjektenP2 und P4 arbeiten

R´´= R´ x S

Page 36: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

36

Beispiel Verbund: Ausgangstabellen

M# UntOrtStrasseNameM19M1M7M4

SchweizerMeierHuberBecker

HauptstrasseLindstrasseMattenwegWasserweg

ZürichLiestalBaselLiestal

A6A3A5A6

Mitarbeiter

A# BezeichnungA3A5A6

InformatikPersonalFinanz

Abteilung

Page 37: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

37

Beispiel Verbund

M# UntOrtStrasseNameM19M1M7M4

SchweizerMeierHuberBecker

HauptstrasseLindstrasseMattenwegWasserweg

ZürichLiestalBaselLiestal

A6A3A5A6

Mitarbeiter ||Unt=A# Abteilung

A# BezeichnungA6A3A5A6

FinanzInformatikPersonalFinanz

Page 38: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

38

Verbund

Es gilt folgende Formel:

R ||P S = P R S

Dies bedeutet, dass der Verbund von R und S mittels P durch das Kartesische Produkt von R und S plus anschliessender Selektion mittels P definiert werden kann.

Page 39: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

39

Relationale Algebra• Vereinigung• Differenz• Kartesisches Produkt• Projektion• Selektion

sind die kleinst mögliche Menge von Operatoren der Relationenalgebra. Alle anderen können dadurch definiert werden.

Beispiel: R S := R \ (R \ S)

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 40: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

SQL DDL

Page 41: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

41

SQL DDL

CREATE TABLEALTER TABLEDROP TABLE

CREATE DOMAINALTER DOMAINDROP DOMAIN

CREATE VIEWDROP VIEW

CREATE INDEXALTER INDEXDROP INDEX

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Konzeptuelle Ebene

Konzeptuelle Ebene / SQL 92

Externe Ebene

Interne Ebene

Page 42: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

42

CREATE TABLE

Allgemein:

CREATE TABLE table_name(spaltendefinitionsliste[,tabellenintegritätsregelliste]);

spaltendefinition ::=spaltenname typangabe [default-Klausel]

[spaltenintegritätsregelliste]

tabellenintegritätsregel ::=

check-klausel | primary_key-klausel |

unique-klausel | foreign-key-klausel

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 43: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

43

CREATE TABLE

Der Tabellenname muss innerhalb der Datenbank eindeutig sein!

Innerhalb einer Tabellendefinition müssen die Attributnamen ebenfalls eindeutig sein!

Integritätsregeln können als Spalten- oder als Tabellenintegritätsregeln formuliert werden.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 44: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

44

DDL CREATE TABLE

Mögliche Integritätsregeln:• Primärschlüssel

• weitere Schlüssel (Schlüsselkandidaten)

• Fremdschlüssel mit Bezugstabelle

• Einschränkungen für die Wertebereiche der Spalten

• Verbot von Nullmarken in Spalten

• Spaltenübergreifende Integritätsbedingungen

• tabellenübergreifende Integritätsbedingungen

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 45: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

45

Spaltendefinition

Allgemein:

spaltendefinition ::=spaltenname typangabe [default-Klausel]

[spaltenintegritätsregelliste]

„typangabe“ ist ein Datentyp oder eine in der Datenbank definierte Domäne.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 46: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

46

Spaltendefinition

DEFAULT-Klausel:default-klausel ::=

DEFAULT NULL | DEFAULT systemvariable | DEFAULT literal

NULL: Standardmässig wird eine Nullmarke eingesetzt.

Mögliche Systemvariable:

CURRENT_USER, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP

literal ist eine explizite Angabe des DEFAULT-Werts. Sie muss zu der Datentypdefinition bzw. der Domäne der Spalte passen.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 47: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

47

Spaltendefinition

DEFAULT-Klausel (Beispiel):

CREATE TABLE vorschlag (

vorschlagsnr INTEGER NOT NULL,

mitarbeitername CHAR(30) DEFAULT CURRENT_USER,

datum DATE DEFAULT CURRENT_DATE,

art vorschlagsart DEFAULT ‘informatik‘,

vorschlag VARCHAR(200)

);

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 48: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

48

Spaltendefinition

Domain-Definition

CREATE DOMAIN vorschlagsart AS char(30)

CHECK (VALUE IN ('informatik'‚ 'mathematik'));

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 49: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

49

Spaltendefinition

Spaltenintegritätsregel (Beispiel):

CREATE TABLE vorschlag (

vorschlagsnr INTEGER NOT NULL,

mitarbeitername CHAR(30) DEFAULT CURRENT_USER,

datum DATE DEFAULT CURRENT_DATE,

art vorschlagsart DEFAULT ‘informatik‘,

vorschlag VARCHAR(200)

);

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 50: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

50

Spaltendefinition

Spaltenintegritätsregel (Beispiel):CREATE TABLE Kunde (kundennr INTEGER NOT NULL,status CHAR(1) NOT NULL

CHECK (status IN (‘W‘, ‘G‘, ‘S‘)),Name CHAR(30) NOT NULL,zahlungsart CHAR(1) NOT NULL DEFAULT ‘N‘

CHECK (zahlungsart IN (‘R‘, ‘B‘, ‘N‘,‘V‘,‘K‘)),Ort CHAR (39) NOT NULL,PRIMARY KEY (kundennr));

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 51: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

51

Spalten- Tabellenintegrität

Falls sich eine Tabellenintegritätsregel nur auf eine Spalte (ein Attribut) bezieht unterscheidet sie sich inhaltlich (semantisch) und von der Form her nicht von der sinngleichen Spaltenintegritätsregel.

Der Unterschied ergibt sich nur aus der Position in der DELETE TABLE Anweisung.

Um spaltenübergreifende Integritätsregeln zu formulieren muss eine Tabellenintegritätsregel verwendet werden.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 52: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

52

Spalten- Tabellenintegrität

Bei jeder Datenänderung wird sichergestellt, dass die in den Integritätsregeln formulierten Bedingungen nicht den Wert false annehmen können.

Der Wert unknown der dreiwertigen Logik, der durch NULL-Marken repräsentiert wird, ist allerdings zulässig

CHECK (liefermenge <= bestellmenge)

wird akzeptiert für liefermenge IS NULL

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 53: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

53

Tabellenintegritätsregel

CHECK-Klausel (allgemeine Form):

CHECK (bedingung)• „bedingung“ ist analog der WHERE-Klausel in der

SELECT-Anweisung definiert.

• Dabei sind auch Unterabfragen zulässig, die sich auf andere Tabellen in der gleichen DB beziehen.

• Bei jeder Datenänderung wird sichergestellt, dass „bedingung“ nicht den Wert „false“ annimmt, „unknown“ ist hingegen erlaubt.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 54: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

54

Tabellenintegritätsregel

CHECK-Klausel (Beispiel):CREATE TABLE Kunde (kundennr INTEGER NOT NULL,status CHAR(1) NOT NULL,Name CHAR(30) NOT NULL,zahlungsart CHAR(1) NOT NULL DEFAULT

‘N',Ort CHAR (39) NOT NULL,CHECK (status IN (‘W‘, ‘G‘, ‘S‘)),CHECK (zahlungsart IN (‘R‘, ‘B‘, ‘N‘,‘V‘,‘K‘)));

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 55: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

55

Tabellenintegritätsregel

PRIMARY KEY-Klausel (allgemeine Form):

PRIMARY KEY (spaltenliste)

Die PRIMARY KEY-Klausel ist nicht verbindlicher Bestandteil der CREATE TABLE-Anweisung.

Jede Relation muss allerdings einen Primary Key haben.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 56: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

56

Tabellenintegritätsregel

CHECK-Klausel ermöglicht:

• weitere Festlegungen bezüglich der erlaubten Spaltenwerte

• die Formulierung spaltenübergreifender Integritätsbedingungen

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 57: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

57

Tabellenintegritätsregel

CHECK-Klausel (Beispiel):

CREATE TABLE bestellung (

kundennr INTEGER NOT NULL,

liefermenge INTEGER,

bestellmenge INTEGER,

CHECK (liefermenge <= bestellmenge)

);

Es ist zulässig, dass eines der beiden Attribute einen Nullwert hat.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 58: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

58

Tabellenintegritätsregel

PRIMARY KEY-Klausel (Beispiel 1):

CREATE TABLE bestellung (

kundennr INTEGER NOT NULL,

liefermenge INTEGER,

bestellmenge INTEGER,

CHECK (liefermenge <= bestellmenge),

PRIMARY KEY (kundennr)

);

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 59: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

59

Tabellenintegritätsregel

PRIMARY KEY-Klausel (Beispiel 1):

CREATE TABLE bestellung (

kundennr INTEGER,

liefermenge INTEGER,

bestellmenge INTEGER,

CHECK (liefermenge <= bestellmenge),

PRIMARY KEY (kundennr)

);

Auf die Angabe „NOT NULL“ kann verzichtet werden:

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 60: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

60

Tabellenintegritätsregel

PRIMARY KEY-Klausel (Beispiel 2):

Bei einspaltigem Primärschlüssel ist auch folgende Festlegung möglich:

CREATE TABLE bestellung (

kundennr INTEGER PRIMARY KEY,

liefermenge INTEGER,

bestellmenge INTEGER,

CHECK (liefermenge <= bestellmenge)

);

Der Schlüssel bezieht sich dennoch auf die ganze Tabelle!

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 61: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

61

Tabellenintegritätsregel

Beispiel:CREATE TABLE Kunde (kundennr INTEGER NOT NULL,status CHAR(1) NOT NULL,Name CHAR(30) NOT NULL,zahlungsart CHAR(1) NOT NULL DEFAULT

‘N',Ort CHAR (39) NOT NULL,CHECK (status IN (‘W‘, ‘G‘, ‘S‘)),CHECK (zahlungsart IN (‘R‘, ‘B‘, ‘N‘,‘V‘,‘K‘)),PRIMARY KEY (kundennr));Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 62: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

62

Tabellenintegritätsregel

FOREIGN KEY-Klausel (allgemeine Form):

foreign_key-klausel ::=

FOREIGN KEY (spaltenliste)REFERENCES tabellenname [(spaltenliste)][ON DELETE änderungsaktion]ON UPDATE änderungsaktion]

Unterstützung der referentiellen Integrität!!!

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 63: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

63

Tabellenintegritätsregel

FOREIGN KEY-Klausel (Beispiel):CREATE TABLE bestellung (bestellnr INTEGER NOT NULL,kundennr INTEGER NOT NULL,bestelldatum DATE NOT NULL,lieferdatum DATE,rechnungsbetrag MONEY,PRIMARY KEY (bestellnr),FOREIGN KEY (kundennr) REFERENCES Kunde);

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 64: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

64

Tabellenintegritätsregel

FOREIGN KEY-Klausel (Beispiel-Kurzform):CREATE TABLE bestellung (bestellnr INTEGER NOT NULL,kundennr INTEGER NOT NULL

FOREIGN KEY REFERENCES Kunde,bestelldatum DATE NOT NULL,lieferdatum DATE,rechnungsbetrag MONEY,PRIMARY KEY (bestellnr));

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 65: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

65

FOREIGN KEY-Klausel

Aktionsregeln für referentielle Integrität:änderungsaktion ::=

NO ACTION | CASCADE | SET NULL | SET DEFAULT

Änderung am Primärschlüssel können – verboten werden (NO ACTION)– an Fremdschlüssel weitergeben werden (CASCADE)– Fremdschlüsselwert auf Null setzen (SET NULL)– Fremdschlüsselwert auf Defaultwert setzen (SET DEFAULT)

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 66: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

66

FOREIGN KEY-Klausel

NO ACTION

Jegliche Änderung an den referenzierten Schlüsselwerten ist untersagt, wenn es korrespondierende Fremdschlüsselwerte gibt.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 67: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

67

FOREIGN KEY-Klausel

CASCADE

Die per Fremdschlüsselwert korrespondierenden Zeilen in der abhängigen Tabelle werden entsprechend manipuliert, wenn der Schlüsselwert gelöscht oder geändert wird. Wird z.B. ein Kunde gelöscht, werden auch die zugehörigen Bestellungen gelöscht.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 68: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

68

FOREIGN KEY-Klausel

SET NULL

Korrespondierende Fremdschlüsselwerte werden auf NULL gesetzt, wenn der referentielle Schlüssel manipuliert wird.

Dies setzt voraus, dass für die Fremdschlüsselwerte Nullmarken zugelassen sind.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 69: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

69

FOREIGN KEY-Klausel

SET DEFAULT

Alle entsprechenden Fremdschlüsselwerte werden auf den bei der Tabellendefinition mit der DEFAULT-Klausel definierten Default-Wert gesetzt, wenn der Primärschlüssel verändert wird.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 70: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

70

Tabellenintegritätsregel

FOREIGN KEY-Klausel (Beispiel 2):CREATE TABLE position (bestellnr INTEGER NOT NULL,artikelnr INTEGER NOT NULL,bestellmenge INTEGER NOT NULL,liefermenge INTEGER,gesamtpreis MONEY,PRIMARY KEY (bestellnr, artikelnr),FOREIGN KEY (bestellnr) REFERENCES bestellungON UPDATE CASCADEON DELETE CASCADE);

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 71: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

71

Tabellenintegritätsregel

FOREIGN KEY-Klausel (Beispiel 3):

Bei vorliegen der Regel (in der Tabelle „bestellung“) FOREIGN KEY (kundennr) REFERENCES kunde

wird DROP TABLE kunde

nicht ausgeführt.

DROP TABLE kunde CASCADElöscht die ganze Integritätsdefinition aus der Tabelle „bestellung“.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 72: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

72

Tabellenintegritätsregel

UNIQUE-Klausel (allgemeine Form):

unique-klausel ::=

UNIQUE(spaltenliste)

dient dazu, Schlüsselkandidaten zu verwalten

Schlüsselkandidaten dürfen wie Primärschlüssel nicht mehrfach vorkommen.

NULL-Werte sind allerdings erlaubt, d.h. sie werden nicht automatisch ausgeschlossen.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 73: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

73

Tabellenintegritätsregel

UNIQUE-Klausel (Beispiel):CREATE TABLE Kunde (kundennr INTEGER NOT NULL,status CHAR(1) NOT NULL,Name CHAR(30) NOT NULL,zahlungsart CHAR(1) NOT NULL DEFAULT ‘N',Ort CHAR (39) NOT NULL,debitoren_kontonr INTEGER NOT NULL,UNIQUE (debitoren_kontonr),PRIMARY KEY (kundennr));

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 74: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

74

Tabellenintegritätsregel

UNIQUE-Klausel (Beispiel 2):CREATE TABLE Kunde (kundennr INTEGER NOT NULL,...debitoren_kontonr INTEGER NOT NULL UNIQUE,PRIMARY KEY (kundennr));

UNIQUE kann bei einspaltigem Kandidatenschlüssel auch in Kurzform als Bestandteil der Spaltendefinition verwendet werden

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 75: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

75

tabellenübergreifende Integritätsregeln

ASSERTION-Statement

CREATE ASSERTION assertion-nameCHECK (bedingung) [attributliste]

„bedingung“ formuliert die Bedingung, die nicht verletzt werden darf

Ist in vielen DBMS noch nicht realisiert.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 76: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

76

tabellenübergreifende Integritätsregeln

ASSERTION-Statement (Beispiel): CREATE ASSERTION kunde_zahlartCHECK (NOT EXISTS (

SELECT * FROM kunde kWHERE zahlungsart =‘B‘ AND NOT EXISTS(

SELECT * FROM girokonto gWHERE g.kundennr = k.kundennr

)));

Zahlungsart =„B“ nur dann, wenn Bankkonto bekannt!

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 77: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

77

ALTER TABLE

Schema-Evolution in SQL2: ALTER TABLE <relation> DROP COLUMN <attribute>;

ALTER TABLE <relation> ADD COLUMN <attribute> <domain>;

Keines der vorhandenen Applikationsprogramme sollte dadurch beeinträchtigt werden, es sei denn, es verwendet das zu löschende Attribut.

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 78: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

78

CAST-Funktion zur Typkonversion

Allgemein:CAST (Skalarer Ausdruck AS [datentyp | domäne])

Beispiel:

CAST(‘344‘ AS INTEGER)

Die Zeichenfolge ‘344‘ wird in die Zahl 344 umgeformt. (erfolgt i.a. Fall nur, wenn es möglich ist.)

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 79: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

79

Übungsaufgabe

Schemadefinition

Vertriebsdatenbank

(Web-Shop)

in SQL

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 80: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

80

Produkt Bestellung Kunde

Lieferant

Spediteur Mitarbeiter

Kategorie

Offerte

liefert beschreibt

liefertaus

Posten bestellt

bearbeitetofferiert

PNr BNr KuNr

LNr KaNr

SNr MNr ONrbearbeitet

Offerte

n m n 1

n

1

n

1

n

1

n

1

1 n

1

n

Anzahl BDatumPreis

LPreisLDATUM

OPosten

n

mAnzahlPreis

Page 81: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

81

Tabellen Vertriebsdatenbank

Kunde(KuNr, Name, Adresse, Rabatt)Produkt(PNr, P-Name, KaNr, LNr, Preis, LPreis)Bestellung(BNr,KuNr,MNr,SNr,Bestelldatum,

Lieferdatum)Lieferant(LNr,Name, Adresse)Kategorie(KaNr,Name)Spediteur(SNr, Name, Adresse)Mitarbeiter(MNr,Name, Adresse)Offerte(Onr, KuNr, MNr)Posten(PNr,BNr,Anzahl)Oposten(PNr,ONr,Anzahl,Preis)

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Page 82: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

82

Lösungsbeispiel 1

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

CREATE TABLE Kunde (

KuNr integer PRIMARY KEY,

Name char(20) NOT NULL,

Adresse char(50),

Rabatt Decimal(3,1)

);

Page 83: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

83

Lösungsbeispiel 2

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

CREATE TABLE Bestellung (BNr integer PRIMARY KEY,KuNr integer NOT NULL,MNr integer,SNr integer,Bestelldatum Date DEFAULT CURRENT_DATE,Lieferdatum Date,FOREIGN KEY (KuNr) REFERENCES Kunde ON DELETE NO

ACTION ON UPDATE CASCADE,FOREIGN KEY (MNr) REFERENCES Mitarbeiter ON DELETE

SET NULL ON UPDATE CASCADE,FOREIGN KEY (SNr) REFERENCES Spediteur ON DELETE

SET NULL ON UPDATE CASCADE);

Page 84: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

84

Lösungsbeispiel 3

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

CREATE TABLE Posten (

BNr integer,

PNr integer,

Anzahl integer NOT NULL,

PRIMARY KEY (BNr, PNr),

FOREIGN KEY (BNr) REFERENCES Bestellung ON DELETE CASCADE ON UPDATE CASCADE,

FOREIGN KEY (PNr) REFERENCES Produkt ON DELETE NO ACTION ON UPDATE CASCADE

);

Page 85: 1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie

85

Aufgabe Bibliothek

Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

• Modellieren Sie eine Bibliothek (Bücher/ Ausleihe / Autoren / Benutzer (Ausleihende) / Vormerkungen) im E/R-Modell (möglichst redundanzfrei).Folgendes sollte dabei berücksichtigt werden:

• Ein Buch kann mehrere Autoren haben.• Ein Buch kann in verschiedenen Auflagen vorliegen.• Jede Auflage eines Buches kann in mehreren Exemplaren in

der Bibliothek vorhanden sein.• Bücher sollten nach explizit zugeordneten Schlagworten

gesucht werden können.• Übersetzen Sie das E/R-Modell möglichst redundanzfrei ins

relationale Modell (Datenbankschema in Tabellenform) • Geben Sie alle SQL-Kommandos an, die zur Anlage der

Tabellen notwendig sind (inklusive aller sinnvollen Integritätsregeln).