Integritätsbedingungen / Normalformen- Beispiel: Kontoführung



Ähnliche Dokumente
Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

SQL-DDL und SQL-Anfragen. CREATE TABLE Kategorie (Bezeichnung VARCHAR(15) NOT NULL PRIMARY KEY, Klassifikationskriterium VARCHAR(100) NOT NULL )

Referenzielle Integrität SQL

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

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

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

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

Datenintegrität. Bisherige Integritätsbedingungen

Referentielle Integrität

Referentielle Integrität

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

SQL: statische Integrität

Datenbanken. Sommersemester 2010 Probeklausur

Vorlesung Dokumentation und Datenbanken Klausur

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

Neuanlage des Bankzugangs ohne das bestehende Konto zu löschen

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

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

Datenbanken: Datenintegrität.

How to do? Projekte - Zeiterfassung

7. Übung - Datenbanken

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

Ändern eines Kontotyps

Datenbanken (Bachelor) (SPO2007) WS 2011/12

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

Professionelle Seminare im Bereich MS-Office

Ein Ausflug zu ACCESS

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

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

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

Tag 4 Inhaltsverzeichnis

Software-Engineering Einführung

DV-Organisation und Anwendungsentwicklung. 4. Klausur

IBIS Professional. z Dokumentation zur Dublettenprüfung

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Tag 4 Inhaltsverzeichnis

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Sage Start Einrichten des Kontenplans Anleitung. Ab Version

Anleitung: Passwort-Self-Service-Portal

Anleitung Jahreswechsel

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

Klausur zur Vorlesung Datenbanken I im Wintersemester 2011/12

Data Quality Management: Abgleich großer, redundanter Datenmengen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lösungshinweise zur Einsendearbeit 2 SS 2011

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

2.1 Briefkopf Klicken Sie im Menü Einstellungen auf den Button Briefkopf. Folgendes Formular öffnet sich:

Benutzerkonto unter Windows 2000

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

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

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Support Center Frankfurt Windows 2000 Server Neuer Client im Netzwerk

Diese Funktion steht für den «Kontoübertrag» nicht zur Verfügung, da alle Angaben bezüglich der Konten bereits eingetragen sind.

Labor 3 - Datenbank mit MySQL

Datenbanken: Relationales Datenbankmodell RDM

Bauteilattribute als Sachdaten anzeigen

Outlook-Daten komplett sichern

Primzahlen und RSA-Verschlüsselung

Schulberichtssystem. Inhaltsverzeichnis

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Skriptenverkauf Datenmodell. Lars Trebing, 4. Juli 2008

Sollsaldo und Habensaldo

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Benutzeranleitung Superadmin Tool

Änderung des Portals zur MesseCard-Abrechnung

SQL structured query language

Übungsaufgaben Tilgungsrechnung

Fachhochschule Deggendorf Platzziffer:...

Übungsblatt 8- Lösungsvorschlag

Benutzerverwaltung Business- & Company-Paket

Handbuch für Redakteure der Vereinshomepage

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

Views in SQL. 2 Anlegen und Verwenden von Views 2

Was meinen die Leute eigentlich mit: Grexit?

Beispiel 1: Filmdatenbank

Der Browser wird als 'veraltet' erkannt, wenn er nicht folgender Version entspricht:

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Klausur Datenbanken Wintersemester 2004/2005 Prof. Dr. Wolfgang May 10. Februar 2004, Uhr Bearbeitungszeit: 90 Minuten

Adami CRM - Outlook Replikation User Dokumentation

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

KURZANLEITUNG CLOUD OBJECT STORAGE

Kapitel DB:VI (Fortsetzung)

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

Anleitung zur Mailumstellung Entourage

Kostenstellen verwalten. Tipps & Tricks

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Verbuchung von Zahlungseingängen über das PayPal-Konto

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

Transkript:

Technische Universität München WS 2003/04, Fakultät für Informatik Datenbanksysteme I Prof. R. Bayer, Ph.D. Lösungsblatt 8 Dipl.-Inform. Michael Bauer Dr. Gabi Höfling 12.01. 2004 Integritätsbedingungen / Normalformen- Beispiel: Kontoführung Ausgangspunkt ist wieder das aus den vorherigen Blättern bekannte Beispiel der Kontoführung mit folgendem relationalen Schema: Kategorie: (Bezeichnung:string, Klassifikationskriterium:string) Kunde: (Vorname:string, Name:string, Gebdat:date, Bezeichnung:string) Konto: (Kontonr: integer, Betrag:numeric, Gebühr:numeric) Festgeldkonto: (Kontonr: integer, Fälligkeit:date, Zinssatz: numeric) Girokonto: (Kontonr: integer, Dispolimit:numeric, Telebanking:boolean) Kontobewegung: (Datum:date, Vorname:string, Name:string, Gebdat:date, Kontonr:integer, Betrag: numeric, Bewegungsart: string) Kontoauszug: (Erstelldat:date, Kontonr:integer, Startdat:date, Gesamt:numeric) besitzt: (Vorname:string, Name:string, Gebdat:date, Kontonr:integer) listet: (Erstelldat:date, Kontonr:integer, Datum:date, Vorname:string, Name:string, Gebdat:date) Aufgabe 1: Ergänzung des Konto-Beispiels um Integritätsbedingungen 1. Ergänzen sie alle Fremdschlüsselbeziehungen im SQL-Schema (ohne weitere Spezifizierung der Constraints) Tabelle Attribute Parent Kunde Bezeichnung Kategorie Festgeldkonto Kontonr Konto Girokonto Kontonr Konto Kontobewegung Kontonr Konto Kontobewegung Vorname, Name, Gebdat Kunde Kontoauszug Kontonr Konto besitzt Kontonr Konto besitzt Vorname, Name, Gebdat Kunde listet Erstelldat, Kontonr Kontoauszug listet Kontonr, Datum Kontobewegung listet Vorname, Name, Gebdat Kunde Die vollständige Schemadefinition mit Fremdschlüsselbeziehungen kann im file uebblatt8-schema-constraints.sql überprüft werden. -1-

2. Was bedeutet es für Änderungen und Löschvorgänge, wenn keine explizite Aussage zu Fremdschlüssel-Constraints getroffen wird? Falls keine Angabe bei den Constraints steht, dann wird automatisch der Modus NO AC- TION verwendet. Damit sind sämtliche Änderungs- und Löschvorgänge blockiert, wenn noch referenzierende Tupel bestehen. 3. Welche on delete Option wählt man für den Fremdschlüssel Bezeichnung in der Tabelle Kunde? Ergänzen Sie diese im Schema und erklären sie die Gründe dafür! Die richtige Option ist ON DELETE SET NULL. Die Logik der Beziehung besagt ja, dass Kunden auch ohne Kategoriezuordnung bestehen können. Damit wird einfach die Referenz gelöscht,falls die Kategorie gelöscht wird. CREATE TABLE mytable.kunde (Vorname VARCHAR(30) NOT NULL, Name VARCHAR(30) NOT NULL, Gebdat DATE NOT NULL, Bezeichnung VARCHAR(30) REFERENCES mytable.kategorie ON DELETE SET NULL, PRIMARY KEY (Name, Vorname, Gebdat)); 4. Welche on delete Option wählt man für die Fremdschlüsselattribute Name, Vorname, Datum in den Tabellen besitzt, listet und Kontobewegung? Formulieren Sie diese im Schema und erklären sie den Grund dafür! Die richtige Option ist ON DELETE CASCADE. Kontobewegung ist eine schwache Entität, deshalb besagt die Logik der Beziehung, dass eine Kontobewegung nicht ohne zugehörigen Kunden (und zugehöriges Konto) bestehen kann. Listet und besitzt sind Beziehungsrelationen. Wenn ein Partner der n:m-beziehung gelöscht wird, müssen auch die entsprechenden Tupel der Beziehungsrelation gelöscht werden (nicht aber der andere Beziehungspartner!) CREATE TABLE mytable.kontobewegung (Datum Date DATE NOT NULL, Name VARCHAR(30) NOT NULL, Vorname VARCHAR(30) NOT NULL, Gebdat DATE NOT NULL, Kontonr INTEGER NOT NULL, Betrag NUMERIC, Bewegungsart VARCHAR(15), PRIMARY KEY (Datum, Vorname, Name, Gebdat, Kontonr), CONSTRAINT Kundenref FOREIGN KEY (Name, Vorname, Gebdat) REFERENCES Kunde ON DELETE CASCADE ON UPDATE CASCADE); besitzt und listet analog ON UPDATE CASCADE: s. Teilaufgabe 1.5; in DB2 müsste RESTRICT or No Action verwendet werden -2-

5. Welche on update Option würde man für die Fremdschlüsselbeziehungen aus 1.3 bzw. 1.4 wählen? Begründung! Änderung der Kategoriebezeichnung: Hier sollten Updates entweder propagiert oder verhindert werden, abhängig von der Anwendungslogik. Wenn eine Änderung der Kategoriebezeichnung nicht dazu führen soll, dass Kunden keiner Kategorie mehr zugeordnet werden können, muss ON UPDATE CASCADE gewählt werden. Sonst geht auch NO ACTION. Änderung der Kundenidentifikation: Da es nicht erwünscht ist, dass durch eine Änderung der Kundenidentifikation die Konten des Kunden und die von ihm getätigten Kontobewegungen nicht mehr eindeutig zugeordnet werden können (s. auch Aufgabe 2.3), muß ON UPDATE CASCADE gewählt werden (bzw. ON UPDATE RESTRICT, falls wie in DB2 die Option CASCADE nicht zur Verfügung steht). 6. Ergänzen sie die Bedingung, dass für das Attribut Bewegungsart in der Tabelle Kontobewegung nur die Werte ein und aus enthalten sein dürfen. Versuchen Sie auch, diese Constraints nachträglich zu einer bestehenden Tabelle hinzuzufügen. ALTER TABLE Kontobewegung ADD CONSTRAINT Bewegung_korrekt CHECK (Bewegungsart in ( ein, aus )) Aufgabe 2: Updates in SQL Versuchen Sie folgende Änderungen am Datenbestand aus Aufgabe 1 durchzuführen: 1. Alle Kontos mit telebanking sind gebührenfrei Um diesen Update durchzuführen, müssen erst in der Relation Girokonto alle Konten gefunden werden, die telebanking einsetzen. UPDATE Konto SET Gebühr = 0 WHERE Kontonr in (select Kontonr from Girokonto where Telebanking = TRUE); 2. Das Girokonto mit der Kontonummer 174266 soll aufgelöst (d.h. gelöscht) werden. Formulieren Sie das entsprechende delete-statement. Was passiert, wenn folgende constraints gelten: Create table Konto (Kontonr integer not null primary key,.); Create table Girokonto (Kontonr integer not null primary key,., constraint fk1 foreign key (Kontonr) references Konto on delete cascade ); Create table besitzt (, Kontonr integer not null primary key, constraint fk2 foreign key (Kontonr) references Konto on delete cascade ); Analoge constraints sollen für listet, Kontobewegung und Kontoauszug gelten. DELETE FROM Konto WHERE Kontonr = 174266 Durch die definierten constraints on delete cascade werden auch die Einträge mit dieser Kontonummer aus den Relationen Girokonto und besitzt gelöscht. Sematik ist, dass kein Girokonto existieren kann, das nicht mit Betrag und Kontoführungsgebühr in der Kontorelation erfasst ist. Ebenso kann ein Kunde kein Konto besitzen, das nicht existiert. -3-

Hinweis: Der Kunde wird beim Auflösen eines Kontos nicht gelöscht, da er noch andere Konten besitzen kann. Beim Löschen eines Kontos werden außerdem noch alle für das Konto gespeicherten Kontobewegungen, Kontoauszüge und alle für das Konto existierenden Einträge in der Relation listet gelöscht: Kontobewegung (..., constraint fk1 foreign key (Kontonr) references Konto on delete cascade, ) listet (, constraint fk1 foreign key (Datum, Kontonr) references (Kontobewegung.Datum, Kontobewegung.Kontonr) on delete cascade, ) Löschen eines Kontos verursacht Löschen einer Kontobewegung. Löschen einer Kontobewegung verursacht Löschen des entsprechenden Eintrags in der Relation listet. 3. Ändern Sie den Namen des Kunden Erwin Müller (17.5.1935) in Erwin Mueller (17.5.1935). Welche Tupel in welchen Tabellen werden dadurch beeinflusst? Welche Konsequenz hat die Option on update restrict im Gegensatz zu on update no action in diesem Zusammenhang? UPDATE Kunde SET Name = Mueller WHERE Vorname = Erwin and Name = Müller and Gebdat = 19350517 Geändert wird das entsprechende Tupel in der Relation Kunde. Beeinflußt durch diese Änderung werden Tupel der Relationen besitzt, listet und Kontobewegung. Je nach Optionen des entsprechenden on update-constraints geschieht folgendes: On update cascade: die entsprechenden Tupel in besitzt, listet und Kontobewegung werden ebenfalls geändert On update restrict: verweist die Relation (z.b. besitzt) nicht mehr auf exakt das selbe Tupel wie vorher, wird die Update-Relation zurückgewiesen. On update no action: verweist die Relation (z.b. besitzt) weiterhin auf irgend ein Tupel in Kunde, wird die Änderung erlaubt, sonst zurückgewiesen. -4-

Aufgabe 3: Funktionale Abhängigkeiten Betrachten Sie die folgende Auftragsrelation: Auftrag (ProduktNr, ProduktName, KundenNr, KundenName, Datum, Stückpreis, Anzahl, Nettopreis, Mehrwertsteuersatz, Bruttopreis) Hinweis: Beachten Sie, dass der Mehrwertsteuersatz vom Produkt abhängt (z.b. 8% für Bücher oder 16% für Luxusartikel) 1. Bestimmen Sie die nicht-trivialen funktionalen Abhängigkeiten in der Relation Auftrag. {ProduktNr} {ProduktName, Stückpreis, Mehrwertsteuersatz} {KundenNr} {KundenName} {ProduktNr, KundenNr, Datum} {Anzahl} {Stückpreis, Anzahl} {Nettopreis} {Nettopreis, Mehrwertsteuersatz} {Bruttopreis} {ProduktName} {ProduktNr} {KundenName} {KundenNr} 2. Was sind die Schlüsselkandidaten? Schlüsselkandidaten z.b.: {ProduktNr, KundenNr, Datum} {ProduktName, KundenName, Datum} 3. In welcher Normalform ist diese Relation? Begründen Sie, warum sie nicht in den entsprechenden höheren Normalformen ist. 1NF ja, da keine mehrwertigen Attribute 2NF nein, da nicht alle Nichtschlüssel-Attribute voll funktional abhängig von Schlüssel kandidaten, z.b. KundenName von KundenNR. Höhere NF nein, da 2NF nein. -5-