Datenintegrität. Kapitel 5 1

Ähnliche Dokumente
Datenintegrität. Kapitel 5 1

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

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

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

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

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

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

Datenbanksysteme 2013

Kapitel 8: Datenintegrität

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

VO Datenmodellierung. Katrin Seyr

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

Grundlagen des relationalen l Modells

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung

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

Übung 3. Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017)

Vorlesungen. Studenten. hören. Grundzüge. Fichte Glaube und Wissen Jonas

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

Vorlesung Datenbanksysteme vom

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

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

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

Entity Relationship Modell

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

Fortsetzung: Kreuzprodukt, Inner Join. Sortierung. Existenzquantor, Mengenvergleich Gruppierung, Aggregate Cast-Operator

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

Wiederholung: Relationale Algebra

Fortsetzung: Projektion Selektion. NULL Werte

4.14 Integrität und Trigger

DATENBANKSYSTEME: SQL

Datenintegrität, Views und Zugriffsrechte

Kapitel 7: Referentielle Integrität

Relationale Abfragesprachen

Software-Engineering

Integrität in Datenbanken. Prof. Dr. T. Kudraß 1

Das relationale Modell

Grundlagen des relationalen Modells

7. Datenbankdefinitionssprachen

Die Anweisung create table

Foreign Keys. MySQL 4, 5. Kapitel 16: Fremdschlüssel. Marcel Noe

Datenbanksysteme SS 2007

Datenbanksysteme I Integrität und Trigger Felix Naumann

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

Beispiel zur referentiellen Integrität

6. Datenintegrität. Integritätsbedingungen

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen

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

Kapitel 2: Das Relationale Modell

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

11. Integrität und Trigger. Integritätssicherung durch Anwendung. Architekturen zur Integritätssicherung. Anwendung 1. Anwendung n Routinen.

Referenzielle Integrität SQL

Transkript:

Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische Integritätsbedingungen Bedingungen an Zustandsübergänge Kapitel 5 1

Bisherige Integritätsbedingungen Schlüssel: es dürfen keine zwei Tupel existieren, die auf allen Schlüsselattributen gleich sind. Kardinalitäten der Beziehungen Generalisierungsbeziehung: jede Entität eines Typs muss auch in allen Obertypen enthalten sein Festgelegte Domänen für jedes Attribut 2

Referentielle Integrität Fremdschlüssel verweisen auf Tupel einer Relation z.b. gelesenvon in Vorlesungen verweist auf Tupel in Professoren referentielle Integrität Fremdschlüssel müssen auf existierende Tupel verweisen oder einen Nullwert enthalten 3

Referentielle Integrität in SQL Kandidatenschlüssel: unique Primärschlüssel: primary key Fremdschlüssel: foreign key Beispiel: create table R ( α integer primary key,... ); create table S (..., κ integer references R ); 4

Einhaltung referentieller Integrität Änderung von referenzierten Daten 1. Default: Zurückweisen der Änderungsoperation 2. Propagieren der Änderungen: cascade 3. Verweise auf Nullwert setzen: set null 5

Einhaltung referentieller Integrität Originalzustand S κ α 1 α α 1 R α 2 α 2 Änderungsoperationen update R set α = α' 1 where α = α 1 ; delete from R where α = α 1 ; 6

Kaskadieren S κ R α S κ R α α' 1 α' 1 α 2 α 2 α 2 α 2 create table S (..., κ integer references R on update cascade ); create table S (..., κ integer references R on delete cascade ); 7

S κ --- α 2 R α Auf Null setzen S κ α' 1 --- α 2 α 2 R α α 2 create table S (..., κ integer references R on update set null ); create table S (..., κ integer references R on delete set null ); 8

Kaskadierendes Löschen Sokrates Logik Mäeutik Ethik Schopenhauer Theophrastos Russel Erkenntnistheorie Wissenschaftstheorie Bioethik Carnap 9

create table Vorlesungen (..., gelesenvon integer references Professoren on delete cascade); create table hören (..., VorlNr integer references Vorlesungen on delete cascade); 10

Einfache statische Integritätsbedingungen Wertebereichseinschränkungen... check Semester between 1 and 13 Aufzählungstypen... check Rang in (`C2, `C3, `C4 )... 11

Das 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 Rang varchar(30) not null, character(2) check (Rang in (`C2,`C3,`C4 )), Raum integer unique ); 12

create table Assistenten ( PersNr integer primary key, Name Fachgebiet Boss foreign key varchar(30) not null, varchar(30), integer, create table Vorlesungen (Boss) references Professoren on delete set null); ( VorlNr integer primary key, Titel SWS gelesen Von varchar(30), integer, integer references Professoren on delete set null); 13

create table hören ( MatrNr integer references Studenten on delete cascade, VorlNr integer references Vorlesungen on delete cascade, primary key (MatrNr, VorlNr)); create table voraussetzen ( Vorgänger integer references Vorlesungen on delete cascade, Nachfolger integer references Vorlesungen on delete cascade, primary key (Vorgänger, Nachfolger)); 14

create table prüfen ( MatrNr integer references Studenten on delete cascade, VorlNr PersNr integer references Vorlesungen, integer references Professoren on delete set null, Note numeric (2,1) check (Note between 0.7 and 5.0), primary key (MatrNr, VorlNr)); 15

Komplexere Konsistenzbedingungen: Leider selten / noch nicht unterstützt Studenten können sich nur über Vorlesungen prüfen lassen, die sie vorher gehört haben Bei jeder Änderung und Einfügung wird die check-klausel ausgewertet Operation wird nur durchgeführt, wenn der check true ergibt 16

Datenbank-Trigger create trigger keine Degradierung 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 17

Trigger-Erläuterungen: Oracle Konventionen 18

Gleicher Trigger in DB2 / SQL:1999- Syntax 19

Übung: Trigger zur Konsistenzhaltung redundanter Information bei Generalisierung 20