Datenbanksysteme Kapitel: SQL Data Definition Language



Ähnliche Dokumente
Datenbanksysteme Kapitel 2: SQL Data Definition Language

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

SQL (Structured Query Language) Schemata Datentypen

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Labor 3 - Datenbank mit MySQL

SQL: statische Integrität

4. Datenbanksprache SQL

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Ein Ausflug zu ACCESS

SQL structured query language

IV. Datenbankmanagement

Datumsangaben, enthält mindestens Jahr, Monat, Tag

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Referenzielle Integrität SQL

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Informatik 12 Datenbanken SQL-Einführung

Bibliografische Informationen digitalisiert durch

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Views in SQL. 2 Anlegen und Verwenden von Views 2

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Sructred Query Language

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Datenbanken Microsoft Access 2010

Create-Table-Befehl. CREATE TABLE Tabellenname ( { Spalte { Datentyp Gebietsname } [ Spaltenbedingung [ ] ] Tabellenbedingung }

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

7. Übung - Datenbanken

Referentielle Integrität

ABTEILUNGS- ABTEILUNGS- LEITER NAME

Abfragen: Grundbausteine

Wirtschaftsinformatik 2. Tutorium im WS 11/12

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

5.3 Datenänderung/-zugriff mit SQL (DML)

Arbeiten mit ACCESS 2013

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Datenintegrität. Bisherige Integritätsbedingungen

Kapitel 3: Datenbanksysteme

Beispiel 1: Filmdatenbank

Aufgaben zu XPath und XQuery

Datenmanagement in Android-Apps. 16. Mai 2013

SQL und MySQL. Kristian Köhntopp

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Konstante Relationen

Referentielle Integrität

Access 2000 und MS SQL Server im Teamwork

Vorlesung Dokumentation und Datenbanken Klausur

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Informations- und Wissensmanagement

Praktische SQL-Befehle

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Im Original veränderbare Word-Dateien

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenbanken (Bachelor) (SPO2007) WS 2011/12

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

Kapitel 3: Datenbanksysteme

Relationale Datenbanken in der Praxis

Allgemeines zu Datenbanken

Datenbanken: Datenintegrität.

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Übersicht über Datenbanken

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Bedingungen über Werte Statische Integrität. CHECK-Klausel

Die Anweisung create table

Datenbanken Kapitel 2

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Arbeiten mit einem lokalen PostgreSQL-Server

Übungsblatt 4. Aufgabe 7: Datensicht Fachkonzept (Klausur SS 2002, 1. Termin)

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Kapitel 10 Aktive DBMS

Diana Lange. Generative Gestaltung Operatoren

(Von der Nähe zur Distanz zum User geordnet)

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

DB1. DB SQL-DQL 1 Mario Neugebauer

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

105.3 SQL-Datenverwaltung

Kapitel 2: Das Relationale Modell

Datenbanksysteme Kapitel 5: SQL Data Manipulation Language

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

SQL. Fortgeschrittene Konzepte Auszug

Ein Beispiel: Tabelle DICHTER

Kapitel DB:VI (Fortsetzung)

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Transkript:

Datenbanksysteme Kapitel: SQL Data Definition Language Prof. Dr. Peter Chamoni Mercator School of Management Lehrstuhl für Wirtschaftsinformatik, insb. Business Intelligence Prof. Dr. Peter Chamoni - Prof. Datenbanksysteme Dr. Peter Chamoni - Wintersemester 2014/2015 1 Gliederung 1 Grundlagen - Datenbanksysteme 2 SQL Data Definition Language 3 Datenorganisation 4 Datenintegrität und Transaktionsverwaltung 5 SQL Data Manipulation Language 6 Neue Konzepte der Datenbanktechnologie Prof. Dr. Peter Chamoni Datenbanksysteme 2

Gliederung 2 SQL Data Definition Language 2.1 SQL Relationale Datenbanksprache Prof. Dr. Peter Chamoni Datenbanksysteme 3 2.1 SQL Relationale Datenbanksprache SQL (1) In der Praxis ist SQL (Structured Query Language) die wichtigste relationale Datenbanksprache. SQL beruht wesentlich auf der math. Relationenalgebra. Vereinfachtes Standard-Abfrageschema Hauptunterschiede zwischen SQL und der Relationenalgebra - Operatoren bei SQL nicht beliebig schachtelbar. - Jeder Operator hat seinen festen Platz. - Duplikate von Tabellenzeilen in SQL erlaubt! - Zusätzliche Auswertungsmöglichkeiten in SQL (Aggregation, Sortieren) Bekannte auf SQL basierende DBMS: Oracle, IBM DB2, MS SQL Server, Access, Prof. Dr. Peter Chamoni Datenbanksysteme 4

2.1 SQL Relationale Datenbanksprache SQL (2) Sprachumfang Data Definition Language (DDL) Erstellen und Bearbeiten von Relationen, Views, Indizes Data Manipulation Language (DML) Einfügen, Ändern und Löschen von Tupeln in einer Relation (siehe Kapitel: SQL Data Manipulation Language) Data Query Language (DQL) integriert in DML Abfrage auf Datenbanken (siehe Kapitel: SQL Data Manipulation Language) Data Control Language (DCL) Anlegen von Benutzern und Vergabe von Zugriffsrechten Prof. Dr. Peter Chamoni Datenbanksysteme 5 Gliederung 2 SQL Data Definition Language 2.1 SQL - Relationale Datenbanksprache Prof. Dr. Peter Chamoni Datenbanksysteme 6

Überblick zu Datendefinitionsanweisungen in SQL Konzeptuelle Ebene CREATE TABLE, ALTER TABLE, DROP TABLE Relationen werden definiert durch Angabe - ihres Namens - ihrer Attribute mit Wertebereichen - ihrer Integritätsbedingungen: Schlüssel-Definitionen, Entity-Integrität, Referentielle Integrität Interne Ebene CREATE INDEX, ALTER INDEX, DROP INDEX Die Festlegung von sog. Sekundärschlüsseln soll die DB-Performance verbessern! Externe Ebene CREATE VIEW, DROP VIEW, SELECT VIEW Prof. Dr. Peter Chamoni Datenbanksysteme 7 Relationen erzeugen (I) Syntax* CREATE TABLE <Tabellenname> (<Spaltenname1> SQL-Datentyp1 [Spaltenbedingung1] [ ], <Spaltenname2> SQL-Datentyp2 [Spaltenbedingung1] [ ], [Tabellenbedingung1], [ ]); Relation Abteilung (AbtNr, Bezeichnung) CREATE TABLE Abteilung (AbtNr INTEGER NOT NULL PRIMARY KEY, Bezeichnung VARCHAR(20)); *Auszug(!) aus der Befehlssyntax, der für das Anlegen von Spalten und Integritätsbedingungen relevant ist. Prof. Dr. Peter Chamoni Datenbanksysteme 8

Relationen erzeugen (II) Basis-Datentypen in SQL (1) Numerische Datentypen in SQL Datentyp Bezeichnung Gültigkeitsbereich SMALLINT Small Integer Ganzzahl: -32768 bis 32767 INTEGER INT Large Integer Ganzzahl: -2147483648 bis 2147483647 DECIMAL (x,y) DEC NUMERIC (x,y) FLOAT (x) Decimal Single-Precision Floating-Point Stellen vor und nach dem Komma -10**31+1 bis 10**31+, max. 31 Gleitpunktzahl mit x Nachkommastellen Prof. Dr. Peter Chamoni Datenbanksysteme 9 Relationen erzeugen (III) Basis-Datentypen in SQL (2) Zeichenketten in SQL Datentyp Bezeichnung Gültigkeitsbereich CHARACTER (n) CHAR (n) CHARACTER VARYING (n) VARCHAR (n) Zeichenkette mit fester Länge Zeichenkette mit variabler Länge Länge bis max. 254 Byte Länge bis max. 4000 Byte Zeit-Datentypen SQL Datentyp Bezeichnung Gültigkeitsbereich DATE TIME Datum Uhrzeit Datum (Jahr, Monat, Tag) 01.01.0001 bis 31.12.9999 Uhrzeit (Stunde, Minute, Sekunde) 00:00:00 bis 24:00:00 Prof. Dr. Peter Chamoni Datenbanksysteme 10

Relationen erzeugen (IV) Spaltenbedingungen (column constraints) (1) Jedes einzelne Attribut kann wahlweise durch einen oder mehrere aufeinanderfolgende einfache Zusätze (Integritätsbedingungen) eingeschränkt werden. NOT NULL Das Attribut darf nicht undefiniert sein. Eingabe eines Attributwerts wird erzwungen. DEFAULT a Definiert den Wert a als Vorgabe für den Attributwert, falls bei der Eingabe kein Attributwert angegeben wird. UNIQUE Das Attribut ist Schlüsselkandidat. PRIMARY KEY Das Attribut ist Primärschlüssel der Relation. Für Primärschlüssel ist NOT NULL unbedingt anzugeben! Zusammengesetzte Schlüssel dürfen nicht als Spaltenbedingung, sondern müssen als Tabellenbedingung angegeben werden! Prof. Dr. Peter Chamoni Datenbanksysteme 11 Relationen erzeugen (V) Spaltenbedingungen (2) Erzeugen Sie eine Relation Techniker mit den folgenden Attributen: Personalnummer (PNr), Name, Vorname, Geburtsdatum und Lohn. Die Personalnummer stellt den Primärschlüssel dar. Relation Techniker (PNr, Name, Vorname, Geburtsdatum, Lohn) CREATE TABLE Techniker Spaltenbedingung(en) (PNr INTEGER NOT NULL PRIMARY KEY, Name Vorname Geburtsdatum DATE Lohn NUMERIC (8,2)); Prof. Dr. Peter Chamoni Datenbanksysteme 12

Relationen erzeugen (VI) Tabellenbedingungen (table constraints) (1) Tabellenbedingungen sind Bedingungen, die sich auf mehrere Attribute (Spalten) der Relation beziehen. Sie können keinem einzelnen Attribut zugeordnet werden. Notwendig sind Tabellenbedingungen z.b. für die Definition von zusammengesetzten Primär- oder Fremdschlüsseln. Syntax [ CONSTRAINT <ConstraintName> ] <Tabellenbedingungsausdruck> Tabellenbedingungsausdruck PRIMARY KEY ( Spaltenname1,... ) UNIQUE ( Spaltenname1,... ) FOREIGN KEY ( Spaltenname1,... ) REFERENCES Tabelle T (Spaltenname1,... ) Zusammengesetzter Primärschlüssel Zusammengesetzter Schlüsselkandidat Zusammengesetzter Fremdschlüssel, der auf die angegebenen Spalten der Tabelle T referenziert. Prof. Dr. Peter Chamoni Datenbanksysteme 13 Relationen erzeugen (VII) Tabellenbedingungen (table constraints) (2) Erzeugen Sie eine Relation Techniker1, deren Primärschlüssel sich aus einer Kombination der Attribute PNr und Geburtsdatum ergibt. Relation Techniker 1 (PNr, Name, Vorname, Geburtsdatum, Lohn) Tabellenbedingung ODER CREATE TABLE Techniker1 Spaltenbedingung (PNr INTEGER NOT NULL, Name Vorname Geburtsdatum DATE NOT NULL, Lohn NUMERIC (8,2), PRIMARY KEY(PNr, Geburtsdatum)); CONSTRAINT PKey1 PRIMARY KEY(PNr, Geburtsdatum)); Prof. Dr. Peter Chamoni Datenbanksysteme 14

Relationen erzeugen (VIII) Tabellenbedingungen (table constraints) (3) Relationen Jeder Techniker gehört zu einer Abteilung. Erstellen Sie eine Relation Techniker3, die den gleichen Aufbau hat wie die Relation Techniker. Abteilung (AbtNr, Abteilungsbezeichnung) Techniker3 (PNr, Name, Vorname, Geburtsdatum, Lohn, AbtNr) CREATE TABLE Techniker 3 (PNr INTEGER NOT NULL PRIMARY KEY, Name Vorname Geburtsdatum DATE NOT NULL, Lohn NUMERIC (8,2), AbtNr INTEGER NOT NULL, CONSTRAINT FKey1 FOREIGN KEY(AbtNr) REFERENCES Abteilung (AbtNr)); Prof. Dr. Peter Chamoni Datenbanksysteme 15 Integritätsbedingungen (I) Integritätsbedingungen dienen dazu, aus der Menge der möglichen Zustände einer Datenbank die gültigen auszufiltern. Sie stellen semantische Bedingungen aus dem Anwendungsbereich dar und werden explizit während des Datenbankentwurfs festgelegt. Die Einhaltung und Überwachung dieser geforderten Integritätsbedingungen wird i.d.r. durch das DBMS kontrolliert. Viele dieser Integritätsbedingungen sind in SQL deklarierbar, z.b. - (Primär-) Schlüsselbedingungen - Referentielle Integrität und Fremdschlüssel - Attribut-Bedingungen als NOT NULL-Zusatz oder als CHECK-Klausel - Tupel-Bedingungen als CHECK-Klausel Prof. Dr. Peter Chamoni Datenbanksysteme 16

Integritätsbedingungen (II) - CHECK Beim Erstellen einer Relation kann mittels der CHECK-Anweisung bereits festgelegt werden, welche Bedingungen die Werte eines Attributs erfüllen müssen (z.b. Gültigkeitsprüfung). Bei der Eingabe werden nur Werte gespeichert, die die Bedingung erfüllen. Eine Bedingung muss tupelweise in der Relation überprüfbar sein, so sind z. B. Aggregatfunktionen nicht erlaubt. Syntax CREATE TABLE <Tabellenname> (<Spaltenname1> SQL-Datentyp1 [Spaltenbedingung], <SpaltennameN> SQL-DatentypN [Spaltenbedingung], CONSTRAINT <ConstraintName> CHECK(<Bedingung>)); Prof. Dr. Peter Chamoni Datenbanksysteme 17 Integritätsbedingungen (III) - CHECK Erzeugen Sie eine Relation Techniker2, die den gleichen Aufbau hat wie die Relation Techniker, aber zusätzlich überprüft, ob der Lohn zwischen 1.000 EUR und 10.000 EUR liegt. Relation Techniker 2 (PNr, Name, Vorname, Geburtsdatum, Lohn) CREATE TABLE Techniker2 (PNr INTEGER NOT NULL PRIMARY KEY, Name Vorname Geburtsdatum DATE NOT NULL, Lohn NUMERIC (8,2) CONSTRAINT Lohncheck CHECK (Lohn > 1000,00 AND Lohn < 10000,00)); Prof. Dr. Peter Chamoni Datenbanksysteme 18

Integritätsbedingungen (IV) Referentielle Integrität Fremdschlüssel (1) Relation Techniker PNr Nachname Vorname Stundenlohn AbtNr 27 Schulz Gerhard 17,50 1 63 Müller Dieter 16,80 2 75 Maier Werner 26,50 2 Relation Abteilung AbtNr Abteilungsname 1 Kundendienst 2 Werkstatt Fragen! Darf ein Fremdschlüsselwert in der Relation Techniker undefiniert sein? Darf ein Tupel in der Relation Abteilung gelöscht oder geändert werden, auf das sich ein Fremdschlüssel bezieht? Prof. Dr. Peter Chamoni Datenbanksysteme 19 Integritätsbedingungen (V) Referentielle Integrität Fremdschlüssel (2) Relation Techniker PNr Nachname Vorname Stundenlohn AbtNr 27 Schulz Gerhard 17,50 NULL 63 Müller Dieter 16,80 2 75 Maier Werner 26,50 2 Relation Abteilung AbtNr Abteilungsname 1 Kundendienst 2 Werkstatt Darf ein Fremdschlüsselwert in der Relation Techniker undefiniert sein? c:m - Es kann durchaus sinnvoll sein, den Fremdschlüsselwert auf Null zu setzen. (In einer Firma muss nicht jede Person einer Abteilung angehören!) 1:m - ABER: z.b. Eine Rechnung wird immer einem Kunden zugestellt. Deswegen sollte in einer Relation Rechnung die Kundennummer immer gefüllt sein! Prof. Dr. Peter Chamoni Datenbanksysteme 20

Integritätsbedingungen (VI) Referentielle Integrität Fremdschlüssel (3) Relation Techniker PNr Nachname Vorname Stundenlohn AbtNr 27 Schulz Gerhard 17,50 1 63 Müller Dieter 16,80 2 75 Maier Werner 26,50 2 Relation Abteilung AbtNr Abteilungsname 2 Werkstatt Darf ein Tupel in der Relation Abteilung gelöscht oder geändert werden, auf das sich ein Fremdschlüssel bezieht? Mit Bezug auf die geforderte Einhaltung der Referentiellen Integritätsregel Jeder Fremdschlüsselwert (ungleich Null) muss sich auf einen existierenden Eintrag beziehen. würde eine Löschung oder Änderung diese Regel verletzen! Prof. Dr. Peter Chamoni Datenbanksysteme 21 Integritätsbedingungen (VII) Referentielle Integrität Fremdschlüssel (4) Das Löschen eines Tupels mit Referenzen ist nicht möglich. Es existieren jedoch verschiedene Zusätze, die es ermöglichen, ein Tupel zu löschen unter Einhaltung der referentiellen Integritätsregel. FOREIGN KEY (s1, ) REFERENCES Tab(s1, ) ON DELETE NO ACTION Das Löschen des Tupels wird zurückgewiesen, wenn mindestens ein Fremdschlüsselwert auf dieses Tupel verweist. FOREIGN KEY (s1, ) REFERENCES Tab(s1, ) ON DELETE CASCADE Mit dem Löschen des Tupels werden auch in den referenzierenden Relationen alle Tupel gelöscht, die in ihrem Fremdschlüssel sich auf dieses Tupel beziehen. FOREIGN KEY (s1, ) REFERENCES Tab(s1, ) ON DELETE SET NULL Beim Löschen des Tupels werden in den referenzierenden Relationen alle Fremdschlüssel auf Null gesetzt, die auf dieses Tupel referenzieren. Prof. Dr. Peter Chamoni Datenbanksysteme 22

Integritätsbedingungen (VIII) Referentielle Integrität Fremdschlüssel (5) Die Änderung eines Tupels mit Referenzen ist nicht möglich. Es existieren jedoch auch hier verschiedene Zusätze, die es ermöglichen, ein Tupel zu ändern unter Einhaltung der referentiellen Integritätsregel. FOREIGN KEY (s1, ) REFERENCES Tab(s1, ) ON UPDATE CASCADE Das Ändern des Tupels führt zur entsprechenden Anpassung aller Fremdschlüssel in den referenzierenden Relationen, die sich auf dieses geänderte Tupel beziehen. Prof. Dr. Peter Chamoni Datenbanksysteme 23 Aufgabe Integritätsbedingungen Erläutern Sie die möglichen Auswirkungen, die das Löschen oder das Ändern eines referenzierten Tupels in der Relation Abteilung auf die Fremdschlüsselwerte in der Relation Techniker 3 hat? CREATE TABLE Techniker 3 (PNr INTEGER NOT NULL PRIMARY KEY, Name Vorname Geburtsdatum DATE NOT NULL, Lohn NUMERIC (8,2), AbtNr INTEGER NOT NULL, CONSTRAINT FKey1 FOREIGN KEY(AbtNr) REFERENCES Abteilung(AbtNr) ON DELETE SET NULL ON UPDATE CASCADE); Prof. Dr. Peter Chamoni Datenbanksysteme 24

Relationen ändern (I) Syntax ALTER TABLE <Tabellenname> ADD <Spaltenname> SQL-Datentyp [Spaltenbedingung]; Fügen Sie zur Relation Techniker das Attribut Wohnort hinzu. Relation Techniker (PNr, Name, Vorname, Geburtsdatum, Lohn, Wohnort) ALTER TABLE Techniker ADD Wohnort VARCHAR(20); Prof. Dr. Peter Chamoni Datenbanksysteme 25 Relationen ändern (II) Folgende Änderungen können an einer Relation vorgenommen werden: - neue Attribute können hinzugefügt werden (ADD), - Attribute können verändert werden (MODIFY) oder - Attribute können gelöscht werden (DROP) Syntax ALTER TABLE <Tabellenname> ADD <Spaltenname> SQL-Datentyp; MODIFY <Spaltenname> SQL-Datentyp; DROP <Spaltenname>; Prof. Dr. Peter Chamoni Datenbanksysteme 26

Relationen löschen Syntax DROP TABLE Tabellenname; Löschen Sie die Relation Techniker 2. DROP TABLE Techniker2; Prof. Dr. Peter Chamoni Datenbanksysteme 27 Aufgabe: Datenbankentwurf Aufgabe Datenbankentwurf: RDM ins Logische DB-Schema Definieren Sie das relationale Datenmodell Waschmaschinenhersteller in SQL-DDL. Berücksichtigen Sie hierbei auch die jeweiligen Fremdschlüsselbeziehungen! Verwenden Sie numerische, alphanumerische Attribute wie auch Datumsattribute. Relationales Datenmodell Waschmaschinenhersteller Dokument (DokNr, Dok.Typ, Titel, Autor, TypNr) Waschmaschinentyp ( TypNr, Bezeichnung, UVP) Waschmaschine (SerienNr, Herstelldatum, TypNr, KdNr) Kunde (KdNr, Zuname, Vorname, Tel.Nr) Techniker (PNr, Vorname, Nachname, Std.lohn, AbtNr) Abteilung (AbtNr, Bezeichnung) Wartung ( PNr, SerienNr, Wart.datum, Anzahl Arb.Std.) Prof. Dr. Peter Chamoni Datenbanksysteme 28

Sichten erstellen (I) Sichten (Views) definieren einen benutzerspezifischen Ausschnitt aus dem Datenbestand. Es sind sog. logische Relationen, d.h. diese Relationen werden aus einer oder mehreren Basistabellen abgeleitet. Es wird nicht der Dateninhalt des Views in der Datenbank zusätzlich abgespeichert, sondern nur die jeweilige Ableitungsregel. Da für den Nutzer der View wie eine Relation erscheint, wird auch häufig die Bezeichnung virtuelle Relation verwendet. Ein View wird erst zur Laufzeit einer Abfrage ausgewertet! Es wird dadurch möglich, auf der externen DB-Ebene Daten nach bestimmten Kriterien sichtbar bzw. unsichtbar zu halten. Prof. Dr. Peter Chamoni Datenbanksysteme 29 Sichten erstellen (II) Syntax CREATE VIEW <Sichtname> AS SELECT * FROM <Tabellenname> [WHERE Bedingung]; Durch die SQL-Anfrage SELECT FROM WHERE wird die Ableitungsregel für den View definiert. Sie darf folgende Klauseln nicht enthalten: GROUP-BY und HAVING, ORDER BY, UNION Erstellen Sie die Sicht FRA auf der Relation Flugstrecke, in der alle Flugstrecken ab Frankfurt enthalten sind. CREATE VIEW FRA AS SELECT * FROM Flugstrecke WHERE Abflugort = 'Frankfurt'; Prof. Dr. Peter Chamoni Datenbanksysteme 30

Sichten erstellen (III) Automatisch sind in einem View alle Tupel der Basisrelation, die die Selektionsbedingung erfüllen. An diesen View können beliebige Anfragen gestellt werden, auch in Kombination mit anderen Tabellen (Join) etc. Bei der Ausführung einer Anfrage an einen View wird zunächst systemintern die View-Definition, die SELECT-Klausel, ergänzend in die Anfrage eingesetzt. Dann erst erfolgt die Auswertung der Anfrage. Bei Updates in der Basisrelation ändert sich auch die virtuelle Relation. Umgekehrt können (mit Einschränkungen) auch Änderungen am View durchgeführt werden, die sich dann auf die Basisrelation auswirken! Prof. Dr. Peter Chamoni Datenbanksysteme 31 Sichten erstellen (IV) Die Attributnamen in einer Sicht müssen - gerade beim Verbund mehrerer Tabellen - eindeutig sein. Daher müssen ggf. die Attributnamen im View umbenannt werden. Erstellen Sie eine Sicht Verdienst auf der Relation Pilot mit den Attributen Name und GKID. Das Attribut Name soll dabei in Nachname unbenannt werden. CREATE VIEW Verdienst (Nachname, GKID) AS SELECT Name, GKID FROM Pilot; Bei Abfragen kann statt des Tabellennamens der Sichtname verwendet werden. Zeigen Sie mit Hilfe der Sicht FRA alle Flugstrecken ab Frankfurt an. SELECT * FROM FRA WHERE Abflugort = 'Frankfurt'; Prof. Dr. Peter Chamoni Datenbanksysteme 32

Sichten löschen Syntax DROP VIEW <Sichtname>; Löschen Sie die Sicht FRA. DROP VIEW FRA; Prof. Dr. Peter Chamoni Datenbanksysteme 33