Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Constraints anlegen und löschen, Data Dictionary Tabellen

Ähnliche Präsentationen


Präsentation zum Thema: "Constraints anlegen und löschen, Data Dictionary Tabellen"—  Präsentation transkript:

1 Constraints anlegen und löschen, Data Dictionary Tabellen

2 Constraints Integritätsregeln, die zum Beispiel beim Einfügen, Ändern und Löschen von Datensätzen eingehalten werden müssen Arten von Constraints Primary Key Constraints Foreign Key Constraints Unique Key Constraints Check Constraints

3 Primary Key Constraint
Ein oder mehrere Spalten einer Tabelle werden als Primärschlüssel festgelegt Primärschlüssel Über Wert in Primärschlüssel-Spalte(n) kann jeder Datensatz eindeutig identifiziert werden LIB_BOOK LIB_BELONGS_TO_GENRE BOOK_ID TITLE CAT_ID YEAR 1 Schwarm 2000 2 Limit 2005 3 Erlösung 2006 4 Vergebung 2007 BOOK_ID GEN_ID 1 2 3 Primärschlüssel auf Spalte book_id Primärschlüssel auf Spalten book_id, gen_id

4 Primary Key Constraint
BOOK_ID TITLE CAT_ID YEAR 1 Schwarm 2000 2 Limit 2005 Primärschlüssel bei Tabellenerzeugung anlegen Primärschlüssel nach Tabellenerzeugung hinzufügen CREATE TABLE lib_book ( book_id NUMBER(7), title VARCHAR2(40), cat_id NUMBER(2,0), year NUMBER(4,0), CONSTRAINT pkbook PRIMARY KEY(book_id) ); CREATE TABLE lib_book ( book_id NUMBER(7)CONSTRAINT pkbook PRIMARY KEY, title VARCHAR2(40), cat_id NUMBER(2,0), year NUMBER(4,0) ); ALTER TABLE lib_book ADD CONSTRAINT pkbook PRIMARY KEY (book_id);

5 Foreign Key Constraint
Definiert einen Fremdschlüssel für eine Spalte einer Tabelle Fremdschlüssel-Spalte referenziert Primärschlüssel (bzw. Unique Key-Spalte) einer Tabelle LIB_BOOK LIB_CATEGORY BOOK_ID TITLE CAT_ID YEAR 1 Schwarm 2 2000 Limit 2005 3 Java 5 2006 4 Peter Pan 2007 CAT_ID CAT_NAME 1 Fachbuch 2 Roman 3 Kinderbuch REFERENZ Was passiert, wenn in LIB_BOOK-Tabelle Datensatz mit CAT_ID eingefügt wird, die nicht in LIB_CATEGORY vorhanden ist Datensatz wird nicht eingefügt, da FOREIGN KEY-Constraint verletzt wird Was passiert, wenn aus lib_category ein Eintrag gelöscht wird, dessen cat_id in lib_book referenziert wird? ON DELETE NO ACTION(default): Löschvorgang wird nicht durchgeführt ON DELETE CASCADE: In Buch-Tabelle werden referenzierende Einträge gelöscht ON DELETE SET NULL: In Buch-Tabelle wird referenzierende CAT-ID auf NULL gesetzt

6 Foreign Key Constraint
LIB_BOOK LIB_CATEGORY BOOK_ID TITLE CAT_ID YEAR 1 Schwarm 2 2000 Limit 2005 3 Java 5 2006 4 Peter Pan 2007 CAT_ID CAT_NAME 1 Fachbuch 2 Roman 3 Kinderbuch REFERENZ Fremdschlüssel bei Tabellenerzeugung festlegen CREATE TABLE lib_book( book_id NUMBER(7), title VARCHAR2(40), cat_id NUMBER(2)CONSTRAINT fkcat REFERENCES LIB_CATEGORY(cat_id) ON DELETE SET NULL, year NUMBER(4,0) ); CREATE TABLE lib_book( book_id NUMBER(7), title VARCHAR2(40), cat_id NUMBER(2), year NUMBER(4,0), CONSTRAINT fkcat FOREIGN KEY(cat_id)REFERENCES LIB_CATEGORY(cat_id)ON DELETE SET NULL );

7 Foreign Key Constraint
LIB_BOOK LIB_CATEGORY BOOK_ID TITLE CAT_ID YEAR 1 Schwarm 2 2000 Limit 2005 3 Java 5 2006 4 Peter Pan 2007 CAT_ID CAT_NAME 1 Fachbuch 2 Roman 3 Kinderbuch REFERENZ Fremdschlüssel nach Tabellenerzeugung festlegen ALTER TABLE lib_book ADD CONSTRAINT fkcat FOREIGN KEY(cat_id) REFERENCES lib_category(cat_id)ON DELETE SET NULL;

8 Foreign Key Constraint
Weitere Constraint Clauses INITIALLY DEFFERED: Einhaltung des Constraints wird standardmäßig erst bei Commit geprüft INITIALLY IMMEDIATE: Einhaltung des Constraints wird standardmäßig direkt nach SQL-Befehl geprüft DEFERRABLE: Erlaubt, dass die Prüfung eines Contraints mit Hilfe des Befehls: SET CONSTRAINT constraint_name DEFFERED verzögert und erst am Ende einer Transaktion (COMMIT) durchgeführt wird … CONSTRAINT fkcat FOREIGN KEY(cat_id) REFERENCES lib_category(cat_id) ON DELETE CASCADE | ON DELETE SET NULL INITIALLY DEFERRED | INITIALLY IMMEDIATE DEFERRABLE;

9 UNIQUE KEY Constraint Wird für eine oder mehrere Spalten angelegt
Bei einer Spalte: Jeder Wert in dieser Spalte muss eindeutig sein Bei mehreren Spalten: Jede Wertkombination in diesen Spalten muss eindeutig sein BOOK_ID TITLE CAT_ID YEAR 1 Schwarm 2000 2 Limit 2005 3 Erlösung 2006 UNIQUE KEY auf TITLE: Es dürfen keine zwei Bücher mit gleichem Titel eingetragen werden Unique Constraint bei Tabellenerzeugung anlegen CREATE TABLE lib_book ( book_id NUMBER(7), title VARCHAR2(40), cat_id NUMBER(2,0), year NUMBER(4,0), CONSTRAINT utitle UNIQUE(title) ); CREATE TABLE lib_book ( book_id NUMBER(7), title VARCHAR2(40) CONSTRAINT utitle UNIQUE, cat_id NUMBER(2,0), year NUMBER(4,0) ); Unique Constraint nach Tabellenerzeugung anlegen ALTER TABLE lib_book ADD CONSTRAINT utitlle UNIQUE(title);

10 Check Constraint Legt Regeln fest, die jeder Datensatz in einer Tabelle erfüllen muss Beispiel: Titel muss länger als 2 Zeichen sein und das Jahr darf nicht vor1900 liegen Check Constraint bei Tabellenerzeugung anlegen Check Constraint nach Tabellenerzeugung anlegen CREATE TABLE lib_book ( book_id NUMBER(7), title VARCHAR2(40), cat_id NUMBER(2,0), year NUMBER(4,0), CONSTRAINT chbook CHECK (length(title)>2 AND YEAR > 1900) ); ALTER TABLE lib_book ADD CONSTRAINT chbook CHECK(length(title)>2 AND YEAR > 1900);

11 Constraints löschen SYNTAX Beispiel
ALTER TABLE tabellenname DROP CONSTRAINT constraintname; Beispiel Mit folgendem Befehl wird der Primary Key Constraint pkbook gelöscht, der für die Tabelle lib_book angelegt wurde. ALTER TABLE lib_book DROP CONSTRAINT pkbook;

12 CONSTRAINTS im Data Dictionary

13 Data Dictionary Tabellen
USER_CONSTRAINTS beinhaltet alle Constraints des angemeldeten Users Wichtige Spalten CONSTRAINT_NAME: Name des Constraints R_CONSTAINT_NAME: Für Fremdschlüssel - Name des Constraints, der referenziert wird TABLE_NAME: Name der Tabelle, für die der Constraint definiert ist CONSTRAINT_TYPE: p:Primary Key, r: Foreign Key, c: Check Constraint, u: Unique Key SEARCH_CONDITION: Für Check Constraints: zu überprüfende Bedingung USER_CONS_COLUMNS Beinhaltet Spalten, für die Constraints des angemeldeten Users definiert sind CONSTRAINT_NAME: Name des Constraints TABLE_NAME: Name der Tabelle, für die der Constraint definiert ist COLUMN_NAME: Spalte, für die der Constraint definiert ist


Herunterladen ppt "Constraints anlegen und löschen, Data Dictionary Tabellen"

Ähnliche Präsentationen


Google-Anzeigen