Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "1 Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) –ENTITY-TYPES –RELATIONSHIP-TYPES (1:N / N:M / 1:1) –Generalisierungshierarchie."—  Präsentation transkript:

1 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

2 2 Offene Fragen schreibweise Datentyp Date: Date' ' 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

3 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

4 Relationale Algebra ( Relationenalgebra)

5 5 Relationale Algebra Die relationale Algebra (Relationenalgebra) bildet den formalen Rahmen für die relationalen Datenbanksprachen. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

6 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

7 7 Relationale Algebra Die relationale Algebra (Relationenalgebra) setzt Relationen (Tabellen) in der ersten Normalform voraus. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

8 8 Relationale Algebra Man unterscheidet: Mengenorientierte Operatoren Relationenorientierte Operatoren Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

9 9 Relationale Algebra Alle Operatoren der Relationenalgebra bilden eine oder zwei Tabellen auf eine neue Tabelle ab. Tabelle 1 Tabelle 2 Tabelle 1, Tabelle 2 Tabelle 3 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

10 10 Relationale Algebra Mengenorientierte Operatoren: VereinigungR S DurchschnittR S DifferenzR \ S Kartesisches ProduktR x S Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

11 11 Relationale Algebra Vorraussetzung für die Anwendung der mengenorientierten Operatoren R S, R S, R \ S ist das Verträglichkeitskriterium Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

12 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

13 13 Relationale Algebra Ansonsten können die Operatoren der Relationenalgebra weitgehend ohne Einschränkung miteinander kombiniert werden. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

14 14 Mengenorientierte Operatoren 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} Vereinigung Duchschnitt Differenz

15 15 Relationale Algebra Vereinigung(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

16 16 Relationale Algebra Durchschnitt(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

17 17 Relationale Algebra Differenz(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

18 18 Relationale Algebra Kartesisches 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

19 19 Relationale Algebra Kartesisches 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

20 20 Beispieltabelle Mitarbeiter

21 21 Beispieltabelle Sportclub

22 22 Beispieltabelle Fotoclub

23 23 Beispieltabelle Clubmitglieder = Sportclub Fotoclub

24 24 Beispieltabelle Clubmitglieder = Sportclub Fotoclub

25 25 Beispieltabelle Clubmitglieder = Sportclub \ Fotoclub

26 26 Relationale Algebra Relationenorientierte 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

27 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) Projektion von R auf M Selektion von R mittels F

28 28 Relationenorientierte Operatoren R Divison der Tabelle R durch die Teiltabelle S R S S

29 29 Relationale Algebra Projektion: Wir setzen hier voraus, daß M eine Teilmenge aller Attribute von R (A 1,..., A n ) 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

30 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

31 31 Beispiel - Projektion Ort (Mitarbeiter)

32 32 Beispiel 2 Projektion A#-Unt, Name (Mitarbeiter)

33 33 Beispieltabelle Kartesisches Produkt: Wettkampfpaarungen: (Sportclub \ Fotoclub) x Fotoclub MitgliedM# NameStrasse Ort M1 M19 M4 M7 M4 M7 Meier Schweizer Lindstrasse Hauptstrasse Liestal Zürich Becker Huber Becker Huber Wasserweg Mattenweg Wasserweg Mattenweg Liestal Basel Liestal Basel

34 34 Relationale Algebra Division: 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

35 35 M#PROJ# M1 M2 M4 P1 P2 P4 P1 P2 P4 PROJ# P2 P4 M# M1 M4 R Tabelle der den Projekten zugeordneten Mitarbeiter Beispiel Division S R´ Mitarbeiter, die gleichzeitig an Projekten P2 und P4 arbeiten R´´= R´ x S

36 36 Beispiel Verbund: Ausgangstabellen M#UntOrtStrasseName M19 M1 M7 M4 Schweizer Meier Huber Becker Hauptstrasse Lindstrasse Mattenweg Wasserweg Zürich Liestal Basel Liestal A6 A3 A5 A6 Mitarbeiter A#Bezeichnung A3 A5 A6 Informatik Personal Finanz Abteilung

37 37 Beispiel Verbund M#UntOrtStrasseName M19 M1 M7 M4 Schweizer Meier Huber Becker Hauptstrasse Lindstrasse Mattenweg Wasserweg Zürich Liestal Basel Liestal A6 A3 A5 A6 Mitarbeiter | | Unt=A# Abteilung A#Bezeichnung A6 A3 A5 A6 Finanz Informatik Personal Finanz

38 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.

39 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

40 SQL DDL

41 41 SQL DDL CREATE TABLE ALTER TABLE DROP TABLE CREATE DOMAIN ALTER DOMAIN DROP DOMAIN CREATE VIEW DROP VIEW CREATE INDEX ALTER INDEX DROP INDEX Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 Konzeptuelle Ebene Konzeptuelle Ebene / SQL 92 Externe Ebene Interne Ebene

42 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

43 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

44 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

45 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

46 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

47 47 Spaltendefinition DEFAULT-Klausel (Beispiel): CREATE TABLE vorschlag ( vorschlagsnrINTEGER NOT NULL, mitarbeiternameCHAR(30) DEFAULT CURRENT_USER, datumDATE DEFAULT CURRENT_DATE, artvorschlagsart DEFAULT informatik, vorschlagVARCHAR(200) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

48 48 Spaltendefinition Domain-Definition CREATE DOMAIN vorschlagsart AS char(30) CHECK (VALUE IN ('informatik' 'mathematik')); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

49 49 Spaltendefinition Spaltenintegritätsregel (Beispiel): CREATE TABLE vorschlag ( vorschlagsnrINTEGER NOT NULL, mitarbeiternameCHAR(30) DEFAULT CURRENT_USER, datumDATE DEFAULT CURRENT_DATE, artvorschlagsart DEFAULT informatik, vorschlagVARCHAR(200) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

50 50 Spaltendefinition Spaltenintegritätsregel (Beispiel): CREATE TABLE Kunde ( kundennrINTEGER NOT NULL, statusCHAR(1) NOT NULL CHECK (status IN (W, G, S)), NameCHAR(30) NOT NULL, zahlungsart CHAR(1) NOT NULL DEFAULT N CHECK (zahlungsart IN (R, B, N,V,K)), OrtCHAR (39) NOT NULL, PRIMARY KEY (kundennr) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

51 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

52 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

53 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, dassbedingung nicht den Wert false annimmt,unknown ist hingegen erlaubt. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

54 54 Tabellenintegritätsregel CHECK-Klausel (Beispiel): CREATE TABLE Kunde ( kundennrINTEGER NOT NULL, statusCHAR(1) NOT NULL, NameCHAR(30) NOT NULL, zahlungsart CHAR(1) NOT NULL DEFAULT N', OrtCHAR (39) NOT NULL, CHECK (status IN (W, G, S)), CHECK (zahlungsart IN (R, B, N,V,K)) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

55 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

56 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

57 57 Tabellenintegritätsregel CHECK-Klausel (Beispiel): CREATE TABLE bestellung ( kundennrINTEGER NOT NULL, liefermengeINTEGER, bestellmengeINTEGER, CHECK (liefermenge <= bestellmenge) ); Es ist zulässig, dass eines der beiden Attribute einen Nullwert hat. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

58 58 Tabellenintegritätsregel PRIMARY KEY-Klausel (Beispiel 1): CREATE TABLE bestellung ( kundennrINTEGER NOT NULL, liefermengeINTEGER, bestellmengeINTEGER, CHECK (liefermenge <= bestellmenge), PRIMARY KEY (kundennr) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

59 59 Tabellenintegritätsregel PRIMARY KEY-Klausel (Beispiel 1): CREATE TABLE bestellung ( kundennrINTEGER, liefermengeINTEGER, bestellmengeINTEGER, CHECK (liefermenge <= bestellmenge), PRIMARY KEY (kundennr) ); Auf die Angabe NOT NULL kann verzichtet werden: Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

60 60 Tabellenintegritätsregel PRIMARY KEY-Klausel (Beispiel 2): Bei einspaltigem Primärschlüssel ist auch folgende Festlegung möglich: CREATE TABLE bestellung ( kundennrINTEGER PRIMARY KEY, liefermengeINTEGER, bestellmengeINTEGER, CHECK (liefermenge <= bestellmenge) ); Der Schlüssel bezieht sich dennoch auf die ganze Tabelle! Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

61 61 Tabellenintegritätsregel Beispiel: CREATE TABLE Kunde ( kundennrINTEGER NOT NULL, statusCHAR(1) NOT NULL, NameCHAR(30) NOT NULL, zahlungsart CHAR(1) NOT NULL DEFAULT N', OrtCHAR (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

62 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

63 63 Tabellenintegritätsregel FOREIGN KEY-Klausel (Beispiel): CREATE TABLE bestellung ( bestellnrINTEGER NOT NULL, kundennrINTEGER NOT NULL, bestelldatumDATE NOT NULL, lieferdatumDATE, rechnungsbetragMONEY, PRIMARY KEY (bestellnr), FOREIGN KEY (kundennr) REFERENCES Kunde ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

64 64 Tabellenintegritätsregel FOREIGN KEY-Klausel (Beispiel-Kurzform): CREATE TABLE bestellung ( bestellnrINTEGER NOT NULL, kundennrINTEGER NOT NULL FOREIGN KEY REFERENCES Kunde, bestelldatumDATE NOT NULL, lieferdatumDATE, rechnungsbetragMONEY, PRIMARY KEY (bestellnr) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

65 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

66 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

67 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

68 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

69 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

70 70 Tabellenintegritätsregel FOREIGN KEY-Klausel (Beispiel 2): CREATE TABLE position ( bestellnrINTEGER NOT NULL, artikelnrINTEGER NOT NULL, bestellmengeINTEGER NOT NULL, liefermengeINTEGER, gesamtpreisMONEY, PRIMARY KEY (bestellnr, artikelnr), FOREIGN KEY (bestellnr) REFERENCES bestellung ON UPDATE CASCADE ON DELETE CASCADE); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

71 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 CASCADE löscht die ganze Integritätsdefinition aus der Tabelle bestellung. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

72 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

73 73 Tabellenintegritätsregel UNIQUE-Klausel (Beispiel): CREATE TABLE Kunde ( kundennrINTEGER NOT NULL, statusCHAR(1) NOT NULL, NameCHAR(30) NOT NULL, zahlungsart CHAR(1) NOT NULL DEFAULT N', OrtCHAR (39) NOT NULL, debitoren_kontonrINTEGER NOT NULL, UNIQUE (debitoren_kontonr), PRIMARY KEY (kundennr) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

74 74 Tabellenintegritätsregel UNIQUE-Klausel (Beispiel 2): CREATE TABLE Kunde ( kundennrINTEGER NOT NULL,... debitoren_kontonrINTEGER 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

75 75 tabellenübergreifende Integritätsregeln ASSERTION-Statement CREATE ASSERTION assertion-name CHECK (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

76 76 tabellenübergreifende Integritätsregeln ASSERTION-Statement (Beispiel): CREATE ASSERTION kunde_zahlart CHECK (NOT EXISTS ( SELECT * FROM kunde k WHERE zahlungsart =B AND NOT EXISTS( SELECT * FROM girokonto g WHERE g.kundennr = k.kundennr ))) ; Zahlungsart =B nur dann, wenn Bankkonto bekannt! Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

77 77 ALTER TABLE Schema-Evolution in SQL2: ALTER TABLE DROP COLUMN ; ALTER TABLE ADD COLUMN ; 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

78 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

79 79 Übungsaufgabe Schemadefinition Vertriebsdatenbank (Web-Shop) in SQL Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

80 80 ProduktBestellungKunde Lieferant SpediteurMitarbeiter Kategorie Offerte liefert beschreibt liefert aus Posten bestellt bearbeitet offeriert PNrBNrKuNr LNr KaNr SNrMNrONr bearbeitet Offerte nm n1 n 1 n 1 n 1 n 1 1 n 1 n Anzahl BDatum Preis LPreis LDATUM OPosten n m Anzahl Preis

81 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

82 82 Lösungsbeispiel 1 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 CREATE TABLE Kunde ( KuNrinteger PRIMARY KEY, Namechar(20) NOT NULL, Adressechar(50), RabattDecimal(3,1) );

83 83 Lösungsbeispiel 2 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 CREATE TABLE Bestellung ( BNrinteger PRIMARY KEY, KuNrinteger NOT NULL, MNrinteger, SNrinteger, BestelldatumDate DEFAULT CURRENT_DATE, LieferdatumDate, 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 );

84 84 Lösungsbeispiel 3 Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002 CREATE TABLE Posten ( BNrinteger, PNrinteger, Anzahlinteger 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 );

85 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).


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

Ähnliche Präsentationen


Google-Anzeigen