VO Datenmodellierung. Katrin Seyr



Ähnliche Dokumente
Referentielle Integrität

Referentielle Integrität

Datenintegrität. Bisherige Integritätsbedingungen

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

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

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

Datenintegrität. Kapitel 5 1

Datenintegrität. Kapitel 5 1

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

Datenbanksysteme 2013

Kapitel 8: Datenintegrität

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

Datenintegrität. Referentielle Integrität. Referentielle Integrität in SQL. Bisherige Integritätsbedingungen

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

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

6. Datenintegrität. Integritätsbedingungen

Referenzielle Integrität SQL

SQL: statische Integrität

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung

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

Datenbanken: Datenintegrität.

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

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

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

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Ein Ausflug zu ACCESS

Objektrelationale Datenbanken

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Konstante Relationen

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #5. SQL (Teil 3)

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

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

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

Views in SQL. 2 Anlegen und Verwenden von Views 2

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

SQL. Fortgeschrittene Konzepte Auszug

Grundlagen des relationalen l Modells

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

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

Beispiel zur referentiellen Integrität

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

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

7. Übung - Datenbanken

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

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

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

Schlüssel bei temporalen Daten im relationalen Modell

Datenbanken. Sommersemester 2010 Probeklausur

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Vorlesung Dokumentation und Datenbanken Klausur

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

SQL structured query language

ER-Modellierung am Beispiel der Universitätsdatenbank aus der DBIS-Vorlesung

Aufgabensammlung SQL SW4 1. Einfache Anfragen

4.14 Integrität und Trigger

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

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

Tag 4 Inhaltsverzeichnis

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

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

3. Das Relationale Datenmodell

Objektrelationale und erweiterbare Datenbanksysteme

Informations- und Wissensmanagement

Unterabfragen (Subqueries)

Datenbanksysteme SS 2007

Labor 3 - Datenbank mit MySQL

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

Referentielle Integrität Fremdschlüssel verweisen auf Tupel einer Relation z.b. gelesenvon in Vorlesungen verweist auf Tupel in Professoren referentie

SQL (Structured Query Language) Schemata Datentypen

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

Tag 4 Inhaltsverzeichnis

Prozedurale Datenbank- Anwendungsprogrammierung

Datenbanken (Bachelor) (SPO2007) WS 2011/12

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

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

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Datenbanksysteme I Integrität und Trigger Felix Naumann

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

desk.modul : WaWi- Export

Terminierungs-Analyse von SQL-Triggern. Sommersemester 05 T. Jahn Seminar Intelligente Datenbanken SQL-Trigger: Terminierungs-Analyse 1

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Datenbanken: Relationales Datenbankmodell RDM

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

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

Beispiel 1: Filmdatenbank

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Kapitel 7: Referentielle Integrität

Kapitel 10 Aktive DBMS

Transkript:

Datenintegrität Datenintegrität VO Datenmodellierung Katrin Seyr Institut für Informationssysteme Technische Universität Wien Katrin Seyr Seite 1

Datenintegrität 1. Überblick Überblick 1 Überblick 2 Integritätsbedingungen 3 Statische Integritätsbedingungen 4 Referentielle Integrität 5 Trigger Gewährleistung Referentielle Integrität in SQL Zyklische Abhängigkeiten Katrin Seyr Seite 2

Datenintegrität 2. Integritätsbedingungen Integritätsbedingungen Datenbankmanagementsysteme sind für die Erhaltung der Datenkonsistenz zuständig. Konsistenzerhaltung nach Systemfehler (Recovery) bzw. bei Mehrbenutzerbetrieb (Concurrency Control) LVA Datenbanksysteme. Hier (Kapitel 5, 6): semantische Integritätsbedingungen, die aus den Eigenschaften der modellierten Miniwelt abgeleitet werden. Beispiele MatrNr muss eindeutig sein; - in AT: 7 stellig, die ersten zwei Ziffern leiten sich aus dem Immatrikulationsjahr ab, die nächsten zwei Ziffern codieren die Immatrikulationsuniversität. PersNr ist eine 4-stellige Zahl Katrin Seyr Seite 3

Datenintegrität 2. Integritätsbedingungen Integritätsbedingungen Integritätsbedingungen werden eingeteilt in: statische Integritätsbedingungen: Bedingungen (constraints) an den Zustand der Datenbasis, die in jedem Zustand der Datenbank erfüllt sein müssen. Beispiele Professoren haben Rang C2, C3, C4, Matrikelnummer der Studierenden ist eindeutig Anmeldung zur Übung nur bei aufrechter Inskription dynamische Integritätsbedingungen: Bedingungen an Zustandsänderungen in der Datenbank. Beispiel Professoren dürfen nur befördert werden Katrin Seyr Seite 4

Datenintegrität 2. Integritätsbedingungen 2.1. Statische Integritätsbedingungen Integritätsbedingungen Bekannte implizite Anforderungen an die Datenintegrität Schlüssel: müssen innerhalb einer Relation eindeutig sein. Beziehungskardinalitäten: die im ER Modell definierten Kardinalitäten werden im Relationenmodell so umgesetzt, dass davon abweichende Daten nicht eingegeben werden können. Attributdomänen: durch die Festlegung von Wertebereichen werden Bedingungen an die Daten gestellt. Inklusion bei Generalisierung: Entities der Untertypen müssen auch in Obertypen enthalten sein Katrin Seyr Seite 5

Datenintegrität 2. Integritätsbedingungen 2.2. Statische Integritätsbedingungen in SQL Statische Integritätsbedingungen in SQL Beispiel Schlüsselkandidaten: unique(attributliste) Primärschlüssel: primary key(attributliste) Fremdschlüssel: foreign key(attributliste) Keine Nullwerte erlaubt: not null Defaultwert angeben: default create table Studenten ( MatrNr integer primary key, Name varchar (30) not null, Semester integer default 1); Katrin Seyr Seite 6

Datenintegrität 2. Integritätsbedingungen 2.2. Statische Integritätsbedingungen in SQL Statische Integritätsbedingungen in SQL Überprüfung allgemeiner statischer Integritätsbedingungen mittels check-klausel, gefolgt von einer Bedingung Auswertung der check-klausel bei Änderung/Einfügung in die Tabelle Änderungen auf einer Tabelle werden nur zugelassen, wenn check zu true auswertet. Bedingungen können beliebig komplex sein, auch eine Anfrage enthalten - Achtung: nur sehr rudimentär implementiert! Beispiel create table Studenten ( MatrNr integer primary key, Name varchar (30) not null, Semester integer default 1 check Semester between 1 and 13); Katrin Seyr Seite 7

Datenintegrität 2. Integritätsbedingungen 2.2. Statische Integritätsbedingungen in SQL Statische Integritätsbedingungen in SQL Beispiel Studenten können sich nur über Vorlesungen prüfen lassen, die sie vorher gehört haben. create table prüfen ( MatrNr integer, VorlNr integer, PersNr integer, Note numeric (2,1) check ( Note between 0.7 and 5.0), primary key ( MatrNr, VorlNr ), constraint vorherhören check ( exists ( select * from hören h where h. VorlNr = prüfen. VorlNr and h. MatrNr = prüfen. MatrNr ))); Katrin Seyr Seite 8

Datenintegrität 3. Referentielle Integrität Referentielle Integrität Schlüssel identifizieren ein Tupel einer Relation. Fremdschlüssel verweisen auf Tupel einer in Beziehung stehenden Relation. Beispiel PersNr ist Schlüssel von Professoren, gelesenvon in Vorlesungen verweist auf Tupel in Professoren und ist somit Fremdschlüssel. Es muss sichergestellt werden, dass in gelesenvon keine Werte stehen, die in PersNr nicht vorkommen. Definition (referentielle Integrität) Fremdschlüssel müssen entweder auf existierende Tupel einer anderen Relation verweisen oder einen Nullwert enthalten. Katrin Seyr Seite 9

Datenintegrität 3. Referentielle Integrität Referentielle Integrität Definition (Dangling References) Dangling References sind Verweise von Fremdschlüsseln auf nicht existierende Datensätze Beispiele (Dangling References) Einfügen des folgenden Datensatzes in der Tabelle Vorlesungen: insert into Vorlesungen values (5100, Nihilismus, 40, 0007); worauf verweist 0007? Löschen des folgenden Datensatzes in der Tabelle Professoren: delete from Professoren where PersNr =2125; worauf verweist 2125 in der Vorlesungs-Tabelle? Katrin Seyr Seite 10

Datenintegrität 3. Referentielle Integrität 3.1. Gewährleistung der referentiellen Integrität Gewährleistung der referentiellen Integrität Theorem (referentielle Integrität) Sei R eine Relation mit Primärschlüssel κ und S eine Relation mit Fremdschlüssel α auf R. Die referentielle Integrität ist gewährleistet, wenn Π α (S) Π κ (R) Erlaubte Änderungen sind also: Einfügen von s in S, wenn s.α Π κ (R) Verändern Tupels von s zu s in S, wenn s.α Π κ (R) Verändern von r.κ in R, wenn σ α=r.κ =, d.h. es gibt keine Verweise von S auf r Löschen von r in R, wenn σ α=r.κ = Katrin Seyr Seite 11

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Referentielle Integrität in SQL Beschreibungsmöglichkeit für jeden der drei Schlüsselbegriffe wie folgt: (Kandidaten)-Schlüssel: unique Primärschlüssel: primary key(attributliste) Fremdschlüssel: foreign key(attributliste) Kennzeichnung der Tabelle, auf die verwiesen wird: references (Tabellenname) Einhaltung der Referenziellen Integrität bei Updates, Löschen: on update{no action cascade set null set default} on delete{no action cascade set null set default} Achtung bei zyklischen Abhängigkeiten (Chicken-Egg Problem - siehe unten): alter table bzw. deferred deferrable Katrin Seyr Seite 12

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Referentielle Integrität in SQL Beispiel create table Professoren ( PersNr integer primary key, Name varchar (30) not null,... ); create table Vorlesungen ( VorlNr integer primary key, Titel varchar (30), SWS integer, gelesenvon integer [ foreign key ] references Professoren on update cascade on delete set null ); Katrin Seyr Seite 13

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Referentielle Integrität in SQL Beispiel (Fortsetzung) Vorlesung... gelesenvon... 2137... 2125... 2126.. Professoren PersNr... 2137... 2125... 2136..... Gewünschte Änderungen: update Professoren set PersNr =1111 where PersNr =2137; delete from Professoren where PersNr =2125; Katrin Seyr Seite 14

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Referentielle Integrität in SQL Beispiel (Fortsetzung) update Professoren set PersNr =1111 where PersNr =2137; Einhaltung der referentiellen Integrität durch Kaskadieren (on update cascade) Vorlesung... gelesenvon... 1111... 2125... 2126.. Professoren PersNr... 1111... 2125... 2136..... Katrin Seyr Seite 15

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Referentielle Integrität in SQL Beispiel (Fortsetzung) delete from Professoren where PersNr =2125; Einhaltung der referentiellen Integrität durch auf NULL setzen (on delete set NULL) Vorlesung... gelesenvon... 1111... NULL... 2126.. Professoren PersNr... 1111... 2136..... Katrin Seyr Seite 16

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Kaskadierendes Löschen Vorsicht bei der Verwendung von on delete cascade. Es kann zu kaskadierdendem Löschen kommen. create table Vorlesungen (... gelesenvon integer references Professoren on delete cascade ); create table hören (... VorlNr integer references Vorlesungen on delete cascade ); Logik Schopenhauer Sokrates Mäeutik Ethik Theophrastos Katrin Seyr Seite 17

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Universitätsschema mit Integritätsbedingungen create table Studenten ( MatrNr integer primary key, Name varchar (30) not null, Semester integer check ( Semester between 1 and 13)); create table Professoren ( PersNr integer primary key, Name varchar (30) not null, Rang char (2) check ( Rang in ( C2, C3, C4 )), Raum integer unique ); create table Assistenten ( PersNr integer primary key, Name varchar (30) not null, Fachgebiet varchar (30), Boss integer references Professoren on delete set null ); Katrin Seyr Seite 18

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Universitätsschema mit Integritätsbedingungen create table Vorlesungen ( VorlNr integer primary key, Titel varchar (30), SWS integer, gelesenvon integer references Professoren on delete set null ); create table hören ( MatrNr integer references Studenten on delete cascade, VorlNr integer references Vorlesungen on delete cascade, primary key ( MatrNr, VorlNr )); Katrin Seyr Seite 19

Datenintegrität 3. Referentielle Integrität 3.2. Referentielle Integrität in SQL Universitätsschema mit Integritätsbedingungen create table voraussetzen ( Vorgänger integer references Vorlesungen on delete cascade, Nachfolger integer references Vorlesungen on delete cascade, primary key ( Vorgänger, Nachfolger )); create table prüfen ( MatrNr integer references Studenten on delete cascade, VorlNr integer references Vorlesungen, PersNr integer references Professoren on delete set null, Note numeric (2,1) check ( Note between 0.7 and 5.0), primary key ( MatrNr, VorlNr )); Katrin Seyr Seite 20

Datenintegrität 3. Referentielle Integrität 3.3. Zyklische Abhängigkeiten Zyklische Abhängigkeiten Beispiel (chicken/egg) Legen Sie die Tabellen chicken und egg an, wobei für jedes Huhn vermerkt wird, aus welchem Ei es geschlüpft ist, und umgekehrt: create table chicken ( cid integer primary key, eid integer references egg ); ORA-00942: table or view does not exist create table egg ( eid integer primary key, cid integer references chicken ); Katrin Seyr Seite 21

Datenintegrität 3. Referentielle Integrität 3.3. Zyklische Abhängigkeiten Zyklische Abhängigkeiten Lösung: verwenden Sie den alter table Befehl: Beispiel (chicken/egg) create table chicken ( cid integer primary key, eid integer ); create table egg ( eid integer primary key, cid integer references chicken ); alter table chicken add constraint chickenrefegg foreign key ( eid ) references egg ; Katrin Seyr Seite 22

Datenintegrität 3. Referentielle Integrität 3.3. Zyklische Abhängigkeiten Zyklische Abhängigkeiten Beispiel (chicken/egg) Das Anlegen der Tabellen funktioniert, aber: insert into chicken values (1,11); ORA-02291: integrity constraint (SEYR.CHICKENREFEGG) violated - parent key not found Katrin Seyr Seite 23

Datenintegrität 3. Referentielle Integrität 3.3. Zyklische Abhängigkeiten Zyklische Abhängigkeiten Lösung: verzögern Sie die Überprüfung der Bedingung bis zum Ende der Transaktion (Definition Transaktion in LVA Datenbanksysteme). Beispiel (chicken/egg) alter table chicken add constraint chickenrefegg foreign key ( eid ) references egg initially deferred deferrable ; begin ; insert into chicken values (1,11); insert into egg values (11,1); commit ; Katrin Seyr Seite 24

Datenintegrität 4. Trigger Trigger Standardisierung erst im SQL-99 Standard, waren allerdings schon vorher in kommerziellen DBMS enthalten. Daher ist die Implementierung in den meisten DBMS verschieden. Verwendung zur Sicherstellung Datenintegrität Arbeiten nach dem Event - Condition - Action Modell: beim Eintreffen eines bestimmten Ereignisses (event) unter bestimmten Bedingungen (condition) werden vom DBMS Aktionen automatisch ausgeführt (action). Achtung: zyklische Trigger oder Endlosschleifen! Katrin Seyr Seite 25

Datenintegrität 4. Trigger 4.1. Anwendungsgebiete Anwendungsgebiete Trigger finden Verwendung bei: Beispiel Berechnung gespeicherter abgeleiteter Attribute Berechnung des Bruttopreises bei gespeichertem Nettopreis und Umsatzsteuersatz allgemeinen Bedingungen Beispiele Alle Mitarbeiter, die mehr als 5 SWS Vorlesungen abhalten, bekommen einen Gehaltsbonus (+5%). Professoren können nicht degradiert werden Katrin Seyr Seite 26

Datenintegrität 4. Trigger 4.2. Syntax Syntax Definition des Triggers: create trigger Auslösende Ereignisse: insert, update, delete feuert vor oder nach Ausführung: before/after insert auf Tupel- bzw. Queryebene: for each row/statement einschränkende Bedingungen mittels when kann auf die Werte vor und nach dem Ereignis zugreifen: referencing old/new (nur bei for each row) Verwendung von Prozeduren in jeweiligen DBMS Syntax Katrin Seyr Seite 27

Datenintegrität 4. Trigger 4.3. Beispiele Beispiele Beispiel Alle Mitarbeiter, die mehr als 5 SWS Vorlesungen abhalten, bekommen einen Gehaltsbonus (+5%). create trigger viellehre after insert on Vorlesungen referencing new as vo_neu for each row when group by vo_neu. gelesenvon having sum ( Vorlesungen. SWS ) > 5 and sum ( Vorlesungen. SWS ) - vo_neu. SWS <= 5 update Professoren set Professoren. gehalt = Professoren. gehalt * 1.05 where Professoren. PersNr = vo_neu. gelesenvon ; Katrin Seyr Seite 28

Datenintegrität 4. Trigger 4.3. Beispiele Beispiele Beispiel Professoren können nicht degradiert werden (ORACLE Syntax in Prozedur) create trigger keinedegradierung before update on Professoren for each row when ( old. Rang is not null ) begin if : old. Rang = C3 and : new. Rang = C2 then : new. Rang := C3 ; end if; if : old. Rang = C4 then : new. Rang := C4 ; end if; if : new. Rang is null then : new. Rang := : old. Rang ; end if; end Katrin Seyr Seite 29