6. Datenintegrität. Integritätsbedingungen



Ähnliche Dokumente
Referentielle Integrität

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

Referentielle Integrität

Datenintegrität. Bisherige Integritätsbedingungen

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

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

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

SQL: statische Integrität

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

Referenzielle Integrität SQL

Schlüssel bei temporalen Daten im relationalen Modell

Datenbanken: Datenintegrität.

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

Konstante Relationen

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

VO Datenmodellierung. Katrin Seyr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Labor 3 - Datenbank mit MySQL

Datenbanksysteme 2013

teischl.com Software Design & Services e.u. office@teischl.com

3. Das Relationale Datenmodell

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

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

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

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

Ein Ausflug zu ACCESS

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

Benutzerverwaltung Business- & Company-Paket

Datenbanken. Sommersemester 2010 Probeklausur

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

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

Step by Step Webserver unter Windows Server von Christian Bartl

desk.modul : WaWi- Export

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

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Views in SQL. 2 Anlegen und Verwenden von Views 2

OP-LOG

Speichern. Speichern unter

desk.modul : Intercompany

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

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

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann,

Kalenderfunktion in Open-Xchange richtig nutzen (PC-Support)

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft

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

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

SANDBOXIE konfigurieren

Berechtigungsgruppen TimeSafe Leistungserfassung

Lehrer: Einschreibemethoden

-Inhalte an cobra übergeben

DCS-3110 EVENT SETUP

Unterabfragen (Subqueries)

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Datenintegrität. Kapitel 5 1

Software Engineering Klassendiagramme Assoziationen

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Ihren Kundendienst effektiver machen

Online-Bestellung Tageskarten für Mitglieder des FC St. Pauli, die nicht im Besitz einer Dauer- oder Saisonkarte sind.

Excel Pivot-Tabellen 2010 effektiv

Stapelverarbeitung Teil 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

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

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

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

Anlegen eines DLRG Accounts

Dokumentation Typo3. tt - news - Nachrichtenmodul

Professionelle Seminare im Bereich MS-Office

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

4.14 Integrität und Trigger

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße Neckargemünd

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Anleitung zur Erstellung und Übermittlung einer Umsatzsteuer-Voranmeldung im Elster Online Portal (EOP)

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Zur Konfiguration werden hierbei das Setup-Tool und die Shell verwendet.

Updatehinweise für die Version forma 5.5.5

Archiv - Berechtigungen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

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

Einstieg in Exact Online Buchungen erfassen. Stand 05/2014

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

Beispiel zur referentiellen Integrität

Tag 4 Inhaltsverzeichnis

SharePoint Demonstration

OPERATIONEN AUF EINER DATENBANK

Datenintegrität. Kapitel 5 1

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

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

Transkript:

6. Integritätsbedingungen dienen zur Einschränkung der Datenbankzustände auf diejenigen, die es in der realen Welt tatsächlich gibt. sind aus dem erstellten Datenmodell ableitbar (semantisch) und können deshalb bei der Erstellung des Schemas bereits angegeben werden. Konsistenzbedingungen werden nur einmal angegeben AWPs sind befreit von der lästigen Überprüfung der Bedingungen z. T. kann bei einer Masseneingabe aus Effizienzgründen auf eine Prüfung der Bedingungen verzichtet werden statische Bedingungen sind definiert bzgl. Datenbankzuständen dynamische Bedingungen sind definiert bzgl. Zustandsänderungen Seite 160 von 172

6.1 Statische Integritätsbedingungen Wertebereich-Bedingungen Festlegung von Ober- und Untergrenzen bei Attributen Im vollen Standard von SQL 92 (wird nicht von Oracle unetrstützt) kann man explizit Wertebereiche definieren Aufzählung von Werten Solche Aufzählungstypen lassen sich über eine eigene Relation mit einem Attribut modellieren. Nullwerte create table Kunde (KName char(20) not null, ) Werte des entsprechenden Attribute müssen bei jedem Tupel vorliegen. Tupel-Bedingungen Einschränkung der Werte, die ein Tupel bzgl. seiner verschiedenen Attribute annehmen darf. Z. B. sollte in einer Relation Belegung, in der ein Tupel einen Platz von einem Bahnhof X zu einem Bahnhof Y reserviert, X ungleich Y sein. In SQL kann eine Tuepl-Bedingung durch die check-klausel beim Anlegen des Schemas angegeben werden. Seite 161 von 172

Relationenbedingungen beziehen sich auf die Menge aller Tupel einer Relation: Primärschlüssel und Schlüsselkandidaten In SQL kann diese Bedingung durch uniue bzw. primary key bei dem Anlegen des Schemas angegeben werden. Aggregat-Bedingungen Ein Aggregat soll über bzw. unter einer vorgebenen Schranke liegen. Rekursive Bedingungen: In einer Relation Zugverbindung sollte jeder Bahnhof mit jedem anderen Bahnhof verbunden sein. Referentielle Bedingungen beziehen sich auf mehrere Relationen Seite 162 von 172

6.2 Referentielle Integrität sind Bedingungen an Relationen, die (insbesondere) eine Beziehung modellieren Seien R 1 und R 2 Relationen mit dem Schema RS 1 und RS 2. Sei K ( RS 1 ). Primärschlüssel von R 1. Dann wird F RS 2 Fremdschlüssel von R2 genannt, falls zu jedem Datensatz s aus der Relation R 2 eine der folgenden Bedingungen gilt: es gilt s[f] = NULL es gibt einen Datensatz r aus R 1 gibt, so daß s[f] = r[k] gilt. Beispiel: Relation Kunde Relation Ware Relation Bestellt (= m:n-beziehung zwischen Kunde und Ware) mögliche Probleme, wenn referentielle Integrität nicht erfüllt ist: Kunde bestellt eine Ware, die es nicht gibt. Waren können von einem Kunden bestellt werden, der nicht existiert. Seite 163 von 172

Einhaltung referentieller Integrität in einer Relation, die eine Beziehung modelliert, sollte gewährleistet sein, daß die Fremdschlüssel mit Werten belegt sind. relationale Algebra: Relation R mit Primärschlüssel K Relation S mit Fremdschlüssel F (bezieht sich auf K) erlaubte Änderungen π F ( S) π K ( R) Einfügen eines Tupels s in S, wenn sf [ ] π K ( R) Verändern eines Attributwerts eines Tupels s, wenn Verändern von rk [ ] eines Tupels r, wenn σ F = r[ K] ( S) = Löschen eines Tupels r aus R, wenn Seite 164 von 172

Referentielle Integrität in SQL folgende Möglichkeiten werden derzeit in ORACE angeboten: Primärschlüssel: primary key Fremdschlüssel: foreign key Beispiele: KNr muß bereits vorher als Primärschlüssel oder Schlüsselkandidat gekennzeichnet worden sein. create relation Bestellt(KNr int,,, foreign key(knr) references Kunde(Knr)) oder create relation Bestellt(KNr int,,, constraint test foreign key(knr) references Kunde(Knr)) In diesem Fall wird die Bedingung mit einem Namen vesehen, was insbesondere die Felxibilität bei Änderungsoperationen erhöht. Seite 165 von 172

Löschoperationen Löschen eines Tupels r aus einer Relation R ist i.a. nicht möglich, falls es noch Tupel aus anderen Relationen gibt, die über einen Fremdschlüssel an r gebunden sind. kaskadierendes Löschen Wenn ein Tupel r aus einer Relation R gelöscht wird, können auch Datensätze aus anderen Relationen automatisch gelöscht werden, die sich über einen Fremdschlüssel auf das Tupel r beziehen. bei der Definition des Fremdschlüssels kann diese Einstellung mitaufgenommen werden: create relation Bestellt(KNr NUMBER constraint fk_kunde references kunde(knr) on delete cascade, ) im SQL 92-Standard gibt es auch noch folgende Optionen: on delete set null Es werden dann beim Löschen das entsprechende Attribut auf null gesetzt. on update cascade und on update set null Seite 166 von 172

6.3 Verwaltung von Integritätsbedingungen Integritätsbedingungen können in SQL durch eine constraint implementiert werden. Hinzufügen von Integritätsbedingungen alter table Bestellt add constraint plus_const check (Preis*Anzahl < 10000) alter table Kunde add constraint name_uniue uniue KName Leider wird der Befehl alter table <Name> drop constraint <CName> in Oracle nicht angeboten. Erzwingen und Mißachten von Integritätsbedingungen alter table Kunde disable constraint name_uniue alter table Kunde enable constraint name_uniue exceptions into Doppel_Kunde Seite 167 von 172

Trigger 6.4 Komplexe Integritätsbedingungen allgemeiner und mächtiger Mechanismus zur Wahrung der Datenkonsistenz Trigger bestehen aus einem Kopf und einem PL/SQL-Block Im Triggerkopf stehen Vorbedingungen zur Ausführung des Blocks. Aufbau eines Triggerkopfs create [or replace] trigger <name> Anlegen eines neuen Triggers bzw. Verändern eines bestehenden Triggers. Zeitpunkt: {before after} Hier wird nun der Zeitpunkt angegeben, ob der Triggerrumpf vor oder nach der Operation, die den Trigger ausgelöst hat, ausgeführt wird. Trigger-Ereignis: insert or update [of <Spalte1, Spalte2, >] or delete on <Relationenname> Ein Trigger kann für ein oder mehrere Ereignisse definiert sein. Bei mehreren Ereignissen kann im Rumpf durch folgende Klausel eine Fallunterscheidung vorgenommen werden: Seite 168 von 172

a) if inserting then b) if updating [(Spaltei1, Spaltei2, )] then c) if deleting then Trigger-Typ: [for each row] befehlsorientierte Trigger (default) werden genau einmal vor (before) bzw. nach (after) dem jeweiligen Ereignis ausgelöst. zeilenorientierte Trigger werden dagegen für jedes geänderte Tupel einmal aufgerufen. Man hat dann im Rumpf die Möglichkeit (und nur diese) den alten bzw. neuen Wert der Tupel der Relation über :neu bzw. :old anzusprechen (bei insert nur den :new und bei delete nur :old). Ein anderer Zugriff auf die Relation ist nicht mehr möglich (auch wenn diese im zugehörigen Block angesprochen würde). Trigger-Restriktion: when <Prädikat> Es können hier Bedingungen formuliert, welche die Ausführung des Rumpfs auslösen. Hier kann man bei zeilenorientierten Trigger über new bzw. old sich auf die neuen bzw. alten Tupel der Relation beziehen. Triggerrumpf Dieser besteht aus einem PL/SQL-Block, wobei zusätzlich die oben genannten Erweiterungen genutzt werden können. Seite 169 von 172

Beispiel Der folgende Trigger protokolliert die Änderungen am Attribut Sal der Relation Personen: create or replace trigger storesalary before update on Personen for each row when (old.sal > 1500) begin insert into diff values (:old.sal, :new.sal, sysdate); end; Es soll nun beim Einfügen kontrolliert werden, daß die Gehaltserhöhung bei Personen mit einem hohen Gehalt entfällt: create trigger testsalary before update on Personen when (new.stufe > 3000) begin :new.sal = :old.sal; // Zuweisung nur möglich bei before update end; Seite 170 von 172

Probleme bei der Verwendung von Triggern: Anwender muß die Widerspruchsfreiheit der Trigger kontrollieren Durch ein Trigger kann wieder ein Trigger ausgelöst werden. Dabei sind Zyklen immer zu vermeiden. Terminierung der Ereignisse Ratschlag Wenn immer Konsistenzbedingungen durch constraints formuliert werden können, sollten keine Trigger benutzt werden. Seite 171 von 172

6.5 Aktive Datenbanken Erweiterung des Trigger-Konzepts ECA-Regeln Event: auslösendes Ereignis einer Aktion Ereignisse sind dabei nicht nur auf die Datenbank beschränkt: Zeitereignisse, Anwendungsereignisse Condition: Bedingung zum Auslösen der Aktion Bedingungen sind nicht nur durch Datenbankanfragen definiert Action: Angabe der Aktion (i.a. Folge von Datenbankoperationen) mögliche Anwendungen: innerhalb eines heterogenen Informationssystems Echtzeitproblemstellungen (teilweise möglich aber problematisch) Seite 172 von 172