SQL: statische Integrität



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

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

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

Datenbanken: Datenintegrität.

Referenzielle Integrität SQL

SQL. Fortgeschrittene Konzepte Auszug

Konstante Relationen

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Schlüssel bei temporalen Daten im relationalen Modell

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

6. Datenintegrität. Integritätsbedingungen

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

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

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

Kapitel DB:VI (Fortsetzung)

Beispiel zur referentiellen Integrität

Referentielle Integrität

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

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

Labor 3 - Datenbank mit MySQL

Datenintegrität. Bisherige Integritätsbedingungen

Datenbanken. Sommersemester 2010 Probeklausur

Referentielle Integrität

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

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

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

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

Unterabfragen (Subqueries)

Vorlesung Dokumentation und Datenbanken Klausur

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

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

Beispiel 1: Filmdatenbank

Ein Ausflug zu ACCESS

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

SQL Performance - Tips Do's & Don'ts

Views in SQL. 2 Anlegen und Verwenden von Views 2

Tag 4 Inhaltsverzeichnis

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

desk.modul : WaWi- Export

Bibliografische Informationen digitalisiert durch

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

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

VO Datenmodellierung. Katrin Seyr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester CREATE DOMAIN KennzeichenDomain AS VARCHAR(9);

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

Kapitel 7: Referentielle Integrität

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

3.17 Zugriffskontrolle

Tag 4 Inhaltsverzeichnis

Einführung in die Algebra

Oracle: Abstrakte Datentypen:

Übungen zu C++ Kapitel 1

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

IV. Datenbankmanagement

Verbuchung von Zahlungseingängen über das PayPal-Konto

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

7 Rechnen mit Polynomen

SQL und MySQL. Kristian Köhntopp

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

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

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

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

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

Datenbanken (Bachelor) (SPO2007) WS 2011/12

-Inhalte an cobra übergeben

Software-Engineering Einführung

How to do? Projekte - Zeiterfassung

Design Theorie für relationale Datenbanken

MySQL: Einfaches Rechnen.

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

OP-LOG

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

3. Das Relationale Datenmodell

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

SEMINAR Modifikation für die Nutzung des Community Builders

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Informatik 12 Datenbanken SQL-Einführung

Reporting Services und SharePoint 2010 Teil 1

SQL structured query language

Kapitel 7 Dr. Jérôme Kunegis. Logische Kalküle. WeST Web Science & Technologies

IBIS Professional. z Dokumentation zur Dublettenprüfung

Options- und Freitext-Modul Update-Anleitung

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

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Prozessarchitektur einer Oracle-Instanz

Gesicherte Prozeduren

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Whitepaper. Produkt: combit Relationship Manager / address manager. FILESTREAM für Microsoft SQL Server aktivieren

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

Benutzerverwaltung Business- & Company-Paket

3. Stored Procedures und PL/SQL

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

Transkript:

SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen (integrity constraints, assertions) definieren zulässige Datenbankinstanzen (statische Bedingungen). Beispiele: Wertebereichseinschränkungen, Bedingung NOT NULL, Schlüsselbedingungen, referentielle Integrität. Zustandsübergänge, bzw. Aussagen über die Vergangenheit (temporale Bedingungen). Beispiele: Lebenszyklus von Objekten (Wechsel des Familienstandes), Gesetz Gehälter dürfen nicht fallen, Bedingung der aktuelle Energieverbrauch muß 5% unter dem durchschnittlichen Verbrauch der letzten 10 Jahre liegen, etc. Integritätsbedingungen werden als Teil des Schemas abgelegt; sie können mittels ADD und DROP einem Schema hinzugefügt, oder auch aus ihm entfernt werden.

SQL: statische Integrität.2 Temporäre Verletzungen der Integrität können nicht immer ausgeschlossen werden. Beispiel: Umbuchungen auf Konten, wobei die Summe aller Kontenstände konstant bleiben soll. Eine Transaktion ist eine Folge von Datenbankoperationen, die bzgl. der Integritätsüberwachung als Einheit (atomar) betrachtet werden; verletzt eine Transaktion die Integrität, so wird sie zurückgesetzt (d.h. es werden die durch sie bewirkten Effekte in der Datenbank wieder entfernt).

SQL: statische Integrität.3 statische Integritätsbedingungen Beispiel: CREATE TABLE Lieferant CREATE DOMAIN StadtDomain CHAR(15), (LNr CHAR(5), DEFAULT `Paris', LName CHAR(20), CHECK (VALUE IN (`Berlin', `Paris', Status DECIMAL(3) DEFAULT 0, `London', `Rom')) Stadt StadtDomain, PRIMARY KEY ( LNr )) CREATE TABLE Teil (TNr CHAR(6), TName CHAR(20), Farbe CHAR(6), Gewicht DECIMAL(3), PRIMARY KEY ( TNr )) CREATE TABLE LT (LNr CHAR(5), TNr CHAR(6), Menge DECIMAL(5) CHECK (Menge > 10), PRIMARY KEY ( LNr, TNr ), FOREIGN KEY ( LNr ) REFERENCES Lieferant, FOREIGN KEY ( TNr ) REFERENCES Teil, CHECK (Menge * (SELECT Gewicht FROM Teil WHERE Teil.TNr = LT.TNr) <= 100))

SQL: statische Integrität.4 Wertebereichsbedingungen (domain constraints) ermöglichen die Definition von anwendungsspezifischen Wertebereichen. Allgemeine Bedingungen (general constraints) ermöglichen die Definition von Integritätsbedingungen über beliebigen Spalten beliebiger Basistabellen. Basistabellenbedingungen (base table constraints)ermöglichen die Definition von Integritätsbedingungen über der betreffenden Basistabelle; ihre De- finition ist Teil der CREATE-Klausel der Basistabelle. Spaltenbedingungen (column constraints) sind ein Spezialfall einer Basistabellenbedingung: NOT NULL, PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK-Klauseln und Wertebereichsangaben.

SQL: statische Integrität.5 Beispiele zu allgemeinen Bedingungen: Jeder Lieferant hat einen Status von mindestens 5: CREATE ASSERTION INr13 CHECK ((SELECT MIN (Lieferant.Status) FROM Lieferant) 4) > Alle Teile haben ein positives Gewicht: CREATE ASSERTION INr18 CHECK (NOT EXISTS (SELECT * FROM Teil WHERE NOT > (Teil.Gewicht 0))) Alle roten Teile müssen in London gelagert sein: CREATE ASSERTION INr99 CHECK (NOT EXISTS (SELECT * FROM Teil WHERE Teil.Farbe = 'red' AND <> Teil.Stadt 'London'))

SQL: statische Integrität.6 Ein Lieferant mit Status kleiner 20 darf kein Teil in einer Menge größer als 500 liefern: CREATE ASSERTION INr95 CHECK (NOT EXISTS (SELECT * FROM LT > WHERE(Menge 500) AND (SELECT Status FROM Lieferant WHERE Lieferant.LNR = < LT.LNr) 20))

SQL: statische Integrität.7 Beispiele zu Basistabellen- und Spaltenbedingungen: Jeder Lieferant hat einen Status von mindestens 5: CHECK > (Status 4) Teil der Spaltendefinition zu STATUS innerhalb der CREATE TABLE-Klausel von Lieferant. Alle roten Teile müssen in London gelagert sein: CHECK <> Farbe 'red' OR = Stadt 'London' Teil der CREATE TABLE-Klausel von Teil. Ein Lieferant mit Status kleiner 20 darf kein Teil in einer Menge größer als 500 liefern: CHECK <= (LT.Menge 500 OR (SELECT Status FROM Lieferant WHERE Lieferant.LNr LT.LNr)>= = 20) Teil der CREATE TABLE-Klausel von LT.

SQL: statische Integrität.8 Bemerkungen: Eine Basistabellenbedingung zu einer Tabelle T der Form CHECK (Y) ist äquivalent zu der allgemeinen Bedingung NOT EXISTS (SELECT * FROM T WHERE NOT (Y)) Solange T leer ist, ist somit jede beliebige Bedingung Y, sowohl beispielsweise widersprüchliche oder auch Bedingungen der Form T nicht leer immer erfüllt.

SQL: statische Integrität.9 Zusammenfassung: Typ wo deklariert wann überprüft Gültigkeit Spalten- Attribut einer bei insert eines Tupels in die Basistabelle, nicht garantiert bei bedingung Basistabelle bzw. update der betreffenden Spalte Verwendung von Teilanfragen Basistabellen- Basistabelle bei insert eines Tupels in die Basistabelle, nicht garantiert bei bedingung bzw. update eines Tupels Verwendung von Teilanfragen allgemeine Datenbank- bei Änderung des Zustands irgendeiner garantiert Bedingung schema Relation des Schemas

SQL: statische Integrität.10 Beispiel: Jedes (gelieferte) Teil muß in mindestens 100 Einheiten geliefert werden: CHECK =< (100 ALL (SELECT SUM(Menge) FROM LT GROUP BY TNr)); Wird diese Integritätsbedingung als Basistabellenbedingung von LT realisiert, so ist eine Verletzung bei Löschungen von Tupeln in LT möglich. Jedes Teil wird auch geliefert: CHECK (TNr IN (SELECT TNr FROM LT)); Wird diese Integritätsbedingung als Spaltenbedingung zu TNr bzgl. Teil realisiert, so ist eine Verletzung bei Änderung von LT möglich.

SQL: statische Integrität.11 Beispiel: Fremdschlüsselbedingungen (referentielle Integrität) CREATE TABLE LT... PRIMARY KEY (LNr, TNr), FOREIGN KEY (LNr) REFERENCES Lieferant FOREIGN KEY (TNr) REFERENCES Teil Fremdschlüsselbedingungen sind formal Inklusionsabhängigkeiten: zu jedem von NULL verschiedenen Fremdschlüsselwert der referenzierenden Tabelle, der C- (child-) Tabelle, existiert ein entsprechender Schlüsselwert der referenzierten Tabelle, der P- (parent-) Tabelle.

SQL: statische Integrität.12 Die P- und C-Tabellen können identisch sein, bzw. es kann eine zyklische Folge von Fremdschlüsselbedingungen der Form T1 T2 ::: T k = T1 existieren, wobei T i+1 jeweils T i referenziert, 1 i k ; 1. Zyklische Fremdschlüsselbedingungen können im allgemeinen nur mittels CREATE TABLE gefolgt von ALTER TABLE... ADD definiert werden, da die Basistabelle zu einem Fremdschlüssel immer bereits existieren muß. Die Fremdschlüsselbedingungen werden jeweils bei der C-Tabelle angegeben.

SQL: statische Integrität.13 Zeitpunkt der Überprüfung Zu jeder Integritätsbedingung kann mittels IMMEDIATE und DEFERRED festgelegt werden, ob sie direkt nach Ausführung einer SQL-Anweisung, oder nach Ausführung einer Transaktion überprüft werden soll. Bedingungen können als DEFERRABLE oder NOT DEFERRABLE definiert werden. Mittels INITIALLY wird der gültige Modus für Transaktionen zu Beginn ihres Ablaufs festgelegt; ohne Angabe wird IMMEDIATE angenommen. Mittels der SET CONSTRAINTS Anweisung kann während der Ausführung einer Transaktion eine Bedingungen IMMEDIATE oder DEFERRED werden.

SQL: statische Integrität.14 Beispiel: Zyklische referentielle Bedingungen sind im allgemeinen bei direkter Überprüfung nicht erfüllbar. CREATE TABLE T1 CONSTRAINT T1FK FOREIGN KEY... REFERENCES T2 INITIALLY DEFERRED CREATE TABLE T2 CONSTRAINT T2FK FOREIGN KEY... REFERENCES T1 INITIALLY DEFERRED SQL-Transaktion: INSERT INTO T1 (... ) VALUES (...). INSERT INTO T2 (... ) VALUES (...). SET CONSTRAINTS T1FK, T2FK IMMEDIATE....