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

Slides:



Advertisements
Ähnliche Präsentationen
Themen heute Rückblick Erweiterung funktionale Beziehungen
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
spezielle Nutzersichten formale Ebene (deskriptive Regeln)
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
Telefonnummer.
Bauinformatik II Softwareanwendungen 1
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Kapitel 3: Das Relationenmodell
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg 1/7
SQL als Abfragesprache
SQL als Abfragesprache
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Das Relationenmodell 1.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Datenintegrität Referentielle Integrität create table
Einführung Dateisystem <-> Datenbanksystem
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
1 Polymorphe Operatoren Zunächst: Beschränkung auf Operatoren zum Abfragen der in Relationen enthaltenen Information. Forderung nach mathematischer Exaktheit.
3.5.2 Fremdschlüssel/ Referentielle Integrität (6/9)
3.5.2 Fremdschlüssel/ Referentielle Integrität (1/9)
2.2 Definition eines Datenbankschemas (SQL-DDL)
Datenbankentwicklung IV-LK
20:00.
Relationale Datenbanken III
Die Grundterminologie
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
PROCAM Score Alter (Jahre)
Datenbanksysteme für hörer anderer Fachrichtungen
Einführung in Datenbankmodellierung und SQL
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Symmetrische Blockchiffren DES – der Data Encryption Standard
Relationales Datenmodell und DDL
Das relationale Modell
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
1 Mathematical Programming Nichtlineare Programmierung.
Structured Query Language
1 Polymorphe Operatoren Zunächst: Beschränkung auf Operatoren zum Abfragen der in Relationen enthaltenen Information. Forderung nach mathematischer Exaktheit.
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
Tupelkalkül: Notation (1)
Einführung Dateisystem <-> Datenbanksystem
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Vordefinierte Datentypen (1)
1 Syntaktische Grundform selectA 1, A 2, …, A n fromR 1, R 2, …, R m wherebedingung w ;
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
SQL Lutz KleinostendarpJOBELMANN-SCHULE Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer.
IS: Datenbanken, © Till Hänisch 2000 Relationenalgebra Die mathematische Grundlage von relationalen Datenbanken.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
SQL Basics Schulung –
(Structured Query Language)
 Präsentation transkript:

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

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

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

Relationale Algebra (Relationenalgebra)

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

Relationale Algebra relational vollständige Sprachen. Relationale Datenbanksprachen, die die Operationen der Relationenalgebra sinngemäss umsetzen, heissen relational vollständige Sprachen. Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

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

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

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

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

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

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

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

Mengenorientierte Operatoren Vereinigung Duchschnitt Differenz R R R R \ S R  S R  S S S S {t| t  R or t  S} {t| t  R and t  S} {t| t  R and t  S} R R x S Kartesisches Produkt:= {(x,y): R(x)  S(y)} S

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

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

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

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

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

Beispieltabelle Mitarbeiter

Beispieltabelle Sportclub

Beispieltabelle Fotoclub

Beispieltabelle Clubmitglieder = Sportclub  Fotoclub

Beispieltabelle Clubmitglieder = Sportclub  Fotoclub

Beispieltabelle Clubmitglieder = Sportclub \ Fotoclub

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

Relationenorientierte Operatoren Selektion von R mittels F Projektion von R auf M M (R) F (R) R R |X|P S Verbund von R und S durch Prädikat P S R

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

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

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

Beispiel - Projektion Ort (Mitarbeiter)

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

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

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

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

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

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

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.

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

SQL DDL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 bestellung ON UPDATE CASCADE ON DELETE CASCADE); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

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

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

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

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

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

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

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

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

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

Preis Anzahl PNr BNr KuNr n m n 1 Produkt Bestellung Kunde m n n n 1 n BDatum PNr BNr KuNr n m n 1 Posten bestellt Produkt Bestellung Kunde m n n n 1 n Anzahl LDATUM Preis offeriert LPreis liefert aus bearbeitet liefert OPosten beschreibt 1 n 1 Spediteur Mitarbeiter n Offerte 1 n 1 1 SNr MNr ONr bearbeitet Offerte Lieferant Kategorie KaNr LNr

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

Lösungsbeispiel 1 CREATE TABLE Kunde ( KuNr integer PRIMARY KEY, Name char(20) NOT NULL, Adresse char(50), Rabatt Decimal(3,1) ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Lösungsbeispiel 2 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 ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Lösungsbeispiel 3 ); 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 ); Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002

Aufgabe Bibliothek 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). Prof. Dr. Fabian Glasen, Datenbanken, Februar 2002