Professoren - InfoConomy

Werbung
Datenbanken
Datenintegrität + Datenschutz
Tobias Galliat
Sommersemester 2012
Professoren
Studenten
Vorlesungen
MatrNr
Name
Semester
226
24002
Xenokrates
18
C4
232
25403
Jonas
Kopernikus
C3
310
26120
2133
Popper
C3
52
26830
2134
Augustinus
C3
309
2136
Curie
C4
2137
Kant
C4
PersNr
Name
Rang Raum
2125
Sokrates
C4
2126
Russel
2127
VorlNr
Titel
SWS
gelesen
von
12
5001
Grundzüge
4
2137
Fichte
10
5041
Ethik
4
2125
Aristoxenos
8
5043
Erkenntnistheorie
3
2126
27550 Schopenhauer
6
5049
Mäeutik
2
2125
36
28106
Carnap
3
4052
Logik
4
2125
7
29120
Theophrastos
2
5052 Wissenschaftstheorie
3
2126
29555
Feuerbach
2
5216
Bioethik
2
2126
5259
Der Wiener Kreis
2
2133
5022
Glaube und Wissen
2
2134
4630
Die 3 Kritiken
4
2137
voraussetzen
hören
Vorgänger
Nachfolger
5001
5041
MatrNr
VorlNr
5001
5043
26120
5001
5001
5049
27550
5001
5041
5216
27550
4052
5043
5052
28106
5041
5041
5052
28106
5052
5052
5259
28106
5216
PerslNr
Name
Fachgebiet
Boss
28106
5259
3002
Platon
Ideenlehre
2125
29120
5001
3003
Aristoteles
Syllogistik
2125
29120
5041
3004
Wittgenstein
Sprachtheorie
2126
29120
5049
3005
Rhetikus
Planetenbewegung
2127
Keplersche Gesetze 2 2127
prüfen
Die relationale FH-DB
Assistenten
MatrNr
VorlNr
PersNr
Note
28106
5001
2126
1
25403
5041
2125
2
29555
5022
3006
Newton
27550
4630
2137
2
25403
5022
3007
Spinoza
Gott und Natur
2126
Datenintegrität
• Integritätsbedingungen (Modellierung)
– Schlüssel
– Funktionalitäten bei Beziehungen
– Attributdomänen
– Inklusion bei Generalisierung
• statische Integritätsbedingungen
– Bedingungen an den Zustand der Datenbasis
• referentielle (dynamische) Integritätsbedingungen
– Bedingungen an Zustandsübergänge
3
Statische Integritätsbedingungen
• Wertebereichseinschränkungen
create table Studenten
(…
Semester integer,
check (Semester between 1 and 18) );
• Aufzählungstypen
create table Professoren
(…
Rang char(2),
check (Rang in (`C2´, `C3´, `C4´) );
4
Referentielle Integritätsbedingungen
Fremdschlüssel (foreign key)
• verweisen auf Tupel einer anderen Tabelle
• 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
5
Referentielle Integrität in SQL
• Primärschlüssel: primary key
• Fremdschlüssel: foreign key
• Beispiel:
create table Professoren
( PersNr integer primary key,
... );
create table Assistenten
( ...,
foreign key (Boss) references Professoren );
6
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
7
Einhaltung referentieller Integrität
Assistenten
Originalzustand
Boss
2125
Professoren
PersNr
2125
2125
2126
2126
…
…
Änderungsoperationen
update Professoren
delete from Professoren
set PersNr = 3125
where PersNr = 2125;
where PersNr = 2125;
8
Kaskadieren
Assistenten
Boss
3125
3125
2126
Professoren
PersNr
3125
2126
Assistenten
Boss
2126
…
Professoren
PersNr
2126
…
…
…
create table Assistenten
( ...,
foreign key (Boss)
references Professoren
on update cascade );
create table Assistenten
( ...,
foreign key (Boss)
references Professoren
on delete cascade );
9
Auf NULL setzen
Assistenten
Boss
null
null
2126
Assistenten
Professoren
PersNr
Boss
null
3125
null
2126
…
…
create table Assistenten
( ...,
foreign key (Boss)
references Professoren
on update set null );
Professoren
PersNr
2126
…
2126
…
create table Assistenten
( ...,
foreign key (Boss)
references Professoren
on delete set null );
10
Daten-Definition FH-DB mit Integritätsbedingungen
create table Studenten
(MatrNr integer primary key,
Name varchar(30) not null,
Semester integer,
check (Semester between 1 and 18));
create table Professoren
(PersNr integer primary key,
Name varchar(30) not null,
Rang char(2),
check (Rang in (`C2´,`C3´,`C4´)),
Raum integer);
11
create table Assistenten
(PersNr integer primary key,
Name varchar(30) not null,
Fachgebiet varchar(30),
Boss integer,
foreign key (Boss) references Professoren on delete set null);
create table Vorlesungen
(VorlNr integer primary key,
Titel varchar(30),
SWS integer,
gelesenVon integer,
foreign key (gelesenVon) references Professoren
on delete set null);
12
create table hören
(MatrNr integer,
foreign key (MatrNr) references Studenten on delete cascade,
VorlNr integer,
foreign key (VorlNr) references Vorlesungen on delete cascade,
primary key (MatrNr, VorlNr));
create table voraussetzen
(Vorgänger integer,
foreign key (Vorgänger) references Vorlesungen on delete cascade,
Nachfolger integer,
foreign key (Nachfolger) references Vorlesungen on delete cascade,
primary key (Vorgänger, Nachfolger));
13
create table prüfen
( MatrNr integer,
foreign key (MatrNr) references Studenten on delete cascade,
VorlNr integer,
foreign key (VorlNr) references Vorlesungen,
PersNr integer,
foreign key (PersNr) references Professoren on delete set null,
Note numeric (2,1),
check (Note between 0.7 and 5.0),
primary key (MatrNr, VorlNr));
14
Ebenen des Datenschutzes
legislative Maßnahmen
organisatorische Maßnahmen
Authentisierung
Zugriffskontrolle
Kryptographie
Datenbank
15
Zugriffskontrolle in SQL
• Lese-Erlaubnis
grant select
on Professoren
to galliat;
• Update-Erlaubnis
grant update (MatrNr, VorlNr, PersNr)
on prüfen
to galliat;
16
Zugriffskontrolle in SQL
• Weitere Rechte:
– delete
– insert
– references
• Weitergabe von Rechten:
– with grant option
• Entzug von Rechten:
revoke update (MatrNr, VorlNr, PersNr)
on prüfen
from galliat cascade;
17
Herunterladen