26
Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität • Referentielle Integrität • create table • Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Embed Size (px)

Citation preview

Page 1: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 1

WorzykFH Anhalt

Datenintegrität

• Referentielle Integrität

• create table

• Intgegritätsregeln

Page 2: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 2

WorzykFH Anhalt

Referenzielle Integrität

Stehen zwei Relationen so miteinander in Beziehung, daß ein (Nicht-)Schlüssel-Attribut der einen Relation das Schlüssel-Attribut der anderen Relation ist, so muß das relationale Datenbanksystem dafür sorgen, daß die Beziehung zwischen den Relationen keinen undefinierten Zustand annimmt.

Page 3: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 3

WorzykFH Anhalt

Beispiel

Der Studiengang ist in der Studenten-Tabelle ein „Nicht-Schlüsssel“ und in „Regelstudienzeit-Tabelle“ ein Schlüssel.

Das DBMS muß dies Inhalte der Tabellen konsistent halten.

Matr Name Adr Stg. Sem98001 J utta WH1 Inf 298002 Emil WH1 FÜ 498003 Fritz WH4 Inf 497001 Anna WH5 FÜ 297002 Else WH2 IM 498004 Hans WH4 IM 2

Stg. RegelInf 9FÜ 8IM 10

Page 4: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 4

WorzykFH Anhalt

Fremdschlüssel

Ein Attribut welches in einer anderen Tabele das Schlüsselattribut ist, wird Fremdschlüssel genannt. Das gleiche gilt für eine Menge von Attributen.

Page 5: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 5

WorzykFH Anhalt

Integritätsregeln

Die Zusammenhänge zwischen Tabelleninhalten können der Datenbank bekannt gemacht werden.

Die Datenbank sorgt dann dafür, dass diese Regeln beim Einfügen, Ändern und Löschen von Daten eingehalten werden.

Page 6: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 6

WorzykFH Anhalt

Beispiel

Die Matrikel-Nr ist in der „Schlüsel-Tabelle“ ein

„Nicht-Schlüssel“ Element

Matr Name Adr Stg. Sem98001 J utta WH1 Inf 298002 Emil WH1 FÜ 498003 Fritz WH4 Inf 497001 Anna WH5 FÜ 297002 Else WH2 IM 498004 Hans WH4 IM 2

RaumNr

Bezeichnung Matr

08-012 MultimediaLab

98001

09-012 Audio Lab 9800109-012 Audio Lab 9800209-116 Datenbank

Lab98003

Page 7: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 7

WorzykFH Anhalt

Integritätsregeln bei DELETE

• Restricted Delete (Verbotenes Löschen)

Ein Student wird exmatrikuliert und sein Eintrag gelöscht. Das ist nur möglich, wenn der Student alle Schlüssel abgegeben hat, die ihm Zugang zu Sonderräumen ermöglichen.

Page 8: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 8

WorzykFH Anhalt

Beispiel

Der Student Hans ist exmatrikuliert worden. In der „Noten-Tabelle“ wird seine Matikel-Nr durch „null“ ersetzt.

Matr Name Adr Stg. Sem98001 J utta WH1 Inf 298002 Emil WH1 FÜ 498003 Fritz WH4 Inf 497001 Anna WH5 FÜ 297002 Else WH2 IM 4

Matr Vor-lesung

Stg Note

98001 Math Inf 1.398002 Prog FÜ 1.798003 DatOrg Inf 2.097001 Math FÜ 4.097002 Prog IM 2.3null DBS1 Inf 4.7null DBS1 IM 2.098001 Prog Inf 2.7

Page 9: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 9

WorzykFH Anhalt

Integritätsregeln bei DELETE

• Nullifies Delete (Nicht-definiert Löschen)

Ein Student wird exmatrikuliert und sein Eintrag gelöscht. Die Einträge in seinen Noten werden auf null gesetzt und bleiben so zu statistischen Zwecken erhalten.

Page 10: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 10

WorzykFH Anhalt

Beispiel

Zu jedem Studenten gibt es mindestens eine

Adresse.

Matr Name Stg. Sem98001 J utta Inf 298002 Emil FÜ 498003 Fritz Inf 497001 Anna FÜ 297002 Else IM 498004 Hans IM 2

Matr Nr Strasse Ort98001 1 Bernburger Str 57/216 06366 Köthen98001 2 Bahnhofstraße 1 39104 Magdeburg98002 1 Magdeburger Str 1 06366 Köthen98003 1 Bernburger Str 57/315 06366 Köthen98004 1 Hafenstraße 2 06385 Aken97001 1 Magdeburger Str 3 06366 Köthen97001 2 Waldstraße 2 30163 Hannover97002 1 Magdeburger Str 2 39240 Calbe98004 1 Bernburger Str 57/216 06366 Köthen

Page 11: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 11

WorzykFH Anhalt

Integritätsregeln bei DELETE

• Cascades Delete (Verschachteltes Löschen):

ein Student wird exmatrikuliert und sein Eintrag gelöscht. Dann werden alle dazugehörenden Adressen gelöscht.

Page 12: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 12

WorzykFH Anhalt

create tableCREATE TABLE command ::=

CREATE TABLE

schema.

table

( column datatype

DEFAULT expr

)

table constraint

,

VollständigeBeschreibung in: Oracle8 SQL Reference Release 8.0

Page 13: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 13

WorzykFH Anhalt

Tabellen-Integritätsregelntable_constraint::=

)

)

CONSTRAINT constraint

UNIQUEPRIMARY KEY

| ( column ,

REFERENCES table

ON DELETE

CASCADE

schema.

FOREIGN

KEY| ( column

,

, ( column )

CHECK condition

Page 14: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 14

WorzykFH Anhalt

Anlegen von Tabellen

CREATE TABLE ta_studiengang

(Studiengang varchar2(20),

Regel number(2) NULL,

CONSTRAINT pk_studiengang PRIMARY KEY (Studiengang)

);

Page 15: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 15

WorzykFH Anhalt

Anlegen von TabellenCREATE TABLE ta_student

(Matrikel char(5),

Name varchar2(10),

Adresse varchar2(10) null,

Studiengang varchar2(20) null,

Semester number(2) null,

CONSTRAINT pk_student PRIMARY KEY (Matrikel),

CONSTRAINT fk_student FOREIGN KEY (Studiengang) REFERENCES ta_studiengang(Studiengang)

);

Page 16: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 16

WorzykFH Anhalt

Anlegen von TabellenCREATE TABLE ta_pruefung

(Matrikel char(5),

Vorlesung varchar2(10),

Note number (2,1),

CONSTRAINT pk_pruefung PRIMARY KEY (Matrikel, Vorlesung),

CONSTRAINT fk_pruefung FOREIGN KEY (Matrikel) REFERENCES ta_student(Matrikel)

ON DELETE CASCADE

);

Page 17: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 17

WorzykFH Anhalt

DatenmanipulationINSERT command ::=

INSERT INTO table VALUES ( column ),

Update command ::=

DELETE command ::=

VollständigeBeschreibung in:

Oacle 8.0: Server SQL Language ReferenceManual

DELETE

schema.

table

WHERE conditionFROM

column = exprSET

WHERE condition

UPDATE table

Page 18: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 18

WorzykFH Anhalt

Integritätsregeln bei INSERT

CREATE TABLE ta_studiengang

(Studiengang varchar2(20), Regel number(2) NULL,

CONSTRAINT pk_studiengang PRIMARY KEY (Studiengang));

CREATE TABLE ta_student

(Matrikel char(5), Name varchar2(10),

Studiengang varchar2(20) null,

CONSTRAINT pk_student PRIMARY KEY (Matrikel),

CONSTRAINT fk_student FOREIGN KEY (Studiengang)

REFERENCES ta_studiengang(Studiengang));

INSERT INTO ta_studiengang VALUES ('Inf', 9);

INSERT INTO ta_student VALUES ('98002','Emil',,'Inf‘);

Page 19: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 19

WorzykFH Anhalt

Integritätsregeln bei INSERT

SQL> insert into ta_studiengang

2 values ('Inf', 9);

SQL> insert into ta_student

2 values('98002','Emil','WH1','FÜ',2);

insert into ta_student

*

FEHLER in Zeile 1:

ORA-02291: Verstoß gegen Integritätsregel (WORZYK.FK_STUDENT). Übergeordn. Schlüssel nicht gefunden

Page 20: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 20

WorzykFH Anhalt

Beispiel ohne Namenskonzept

SQL> create table t1(spalte1 number,

2 primary key (spalte1));

SQL> create table t2 (spalte1 char, spalte2 number,

2 foreign key (spalte2) references t1(spalte1));

SQL> insert into t2 values ('a', 1);

FEHLER in Zeile 1:

ORA-02291: Verstoß gegen Integritätsregel (WORZYK.SYS_C004317). Übergeordn. Schlüssel nicht

gefunden

Page 21: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 21

WorzykFH Anhalt

Integritätsregeln bei DELETESQL> insert into ta_student

2 values('98001','Jutta','WH1','Inf',2);

SQL> insert into ta_pruefung

2 values('98001','Math',1.3);

SQL> insert into ta_pruefung

2 values('98001','Prog',2.7);

SQL> select * from ta_pruefung;

MATRI VORLESUNG NOTE

----- ---------- ---------

98001 Math 1,3

98001 Prog 2,7

SQL> delete from ta_student

2 where Matrikel = '98001';

SQL> select * from ta_pruefung;

Es wurden keine Zeilen ausgewählt

Page 22: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 22

WorzykFH Anhalt

Integritätsregeln bei UPDATE

SQL> update ta_studiengang set studiengang = 'Informatik'

2 where studiengang = 'Inf';

FEHLER in Zeile 1:

ORA-02292: Verstoß gegen Integritätsregel (WORZYK.FK_STUDENT). Untergeordneter Datensatz gefunden.

SQL> update ta_student set studiengang = 'Informatik'

2 where studiengang = 'Inf';

FEHLER in Zeile 1:

ORA-02291: Verstoß gegen Integritätsregel (WORZYK.FK_STUDENT). Übergeordn. Schlüssel nicht gefunden

Page 23: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 23

WorzykFH Anhalt

Anelgen und Löschen von Tabellen

DROP TABLE ta_student;

DROP TABLE ta_studiengang;

CREATE TABLE ta_studiengang

Studiengang varchar2(20),

Regel number(2) NULL,

CONSTRAINT pk_studiengang PRIMARY KEY (Studiengang));

CREATE TABLE ta_student

(Matrikel char(5),

Studiengang varchar2(20) null,

CONSTRAINT pk_student PRIMARY KEY (Matrikel),

CONSTRAINT fk_student FOREIGN KEY (Studiengang) REFERENCES ta_studiengang(Studiengang));

Page 24: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 24

WorzykFH Anhalt

CHECK

CREATE TABLE ta_pruefung

(Matrikel char(5),

Vorlesung varchar2(10),

Note number (2,1),

CONSTRAINT pk_pruefung

PRIMARY KEY (Matrikel, Vorlesung),

CONSTRAINT fk_pruefung FOREIGN KEY (Matrikel) REFERENCES ta_student(Matrikel)

ON DELETE CASCADE,

CONSTRAINT check_note CHECK

(note in (1.0, 1.3, 1.7, 2.0, 2.3, 2.7, 3.0))

);

Page 25: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 25

WorzykFH Anhalt

CHECKBeispiel

SQL> insert into ta_pruefung values('98001','Prog',3.7);

FEHLER in Zeile 1:

ORA-02290: Verstoß gegen CHECK-Regel (WORZYK.CHECK_NOTE)

Page 26: Datenbanksysteme für FÜ SS 2000 Seite 8 - 1 Worzyk FH Anhalt Datenintegrität Referentielle Integrität create table Intgegritätsregeln

Datenbanksysteme für FÜ SS 2000Seite 8 - 26

WorzykFH Anhalt

Zusammenfassung

• Referentielle Integrität sorgt für Datenkonsistenz

• create table kann Integritätsregeln definieren

• Beispiele für– insert– delete– update