Blatt 6 - Universität Mannheim

Werbung
Universität Mannheim
Lehrstuhl für Praktische Informatik III
Sven Helmer
Datenbanksysteme I, SS 2005
Lösungen zum 6. Übungsblatt
1. (a) select Name
from
Fluss
where Meer = ’Atlantischer_Ozean’;
(b) with rekfluss(name) as
((select f.name
from
fluss f
where f.meer = ’Atlantischer_Ozean’)
union all
(select q.name
from
rekfluss r, fluss q
where q.fluss = r.name))
select *
from
rekfluss;
2. Es gibt mehrere Möglichkeiten diesen Lösch- und Änderungsschutz in SQL zu realisieren:
• mit Triggern
• per referentieller Integrität
• per Views/Sichten
(a) Trigger:
create trigger nodelete
before delete on Sicherheitsrat
for each row
when (old.MitgliedsNr < 6)
begin
Fehlermeldung ausgeben !!
Delete-Befehl abbrechen
end
und
1
create trigger noupdate
before update on Sicherheitsrat
for each row
when (old.MitgliedsNr < 6)
begin
Fehlermeldung ausgeben !!
Update-Befehl abbrechen
end
(b) referentielle Integrität:
create table sicherheitsrat
(
MitgliedsNr integer not null,
Name
varchar(100) not null,
unique (MitgliedsNr),
primary key (MitgliedsNr, Name)
);
create table lock
(
Nummer integer not null,
Name
varchar(100) not null,
foreign key (Nummer, Name)
references Sicherheitsrat(MitgliedsNr, Name)
);
In die Tabelle lock werden die ersten fünf Tupel von Sicherheitsrat eingetragen.
Die Tabelle lock wird (für normale Benutzer) schreibgeschützt.
Fremdschlüssel können nur auf Schlüsselattributen deklariert werden. Um alle Attribute vor Änderungen zu schützen, werden sämtliche Attribute in den
Schlüssel aufgenommen. Der eigentliche Schlüssel der Relation wird mit UNIQUE gekennzeichnet.
(c) Sichten:
create table temporary
(
MitgliedsNr integer not null primary key,
Name
varchar(100)
);
create table permanent
(
MitgliedsNr integer not null primary key,
Name
varchar(100)
);
2
create view Sicherheitsrat(MitgliedsNr, Name) as
(
(select MitgliedsNr, Name
from
temporary)
union
(select MitgliedsNr, Name
from
permanent)
);
In die Relation permanent werden die ständigen Mitglieder und in die Relation temporary werden die temporären Mitglieder des Sicherheitsrats eingetragen. Die Relation permanent wird schreibgeschützt. Leseoperation werden
grundsätzlich auf der Sicht ausgeführt, Änderungsoperationen können nur auf
der Relation temporary ausgeführt werden.
Nachteil: Anfragen und Änderungen werden nicht auf der gleichen Relation
(bzw. Sicht) ausgeführt.
3. (a) R verstößt gegen FD
(b) R verstößt nicht gegen FD
(c) R verstößt gegen FD
(d) R verstößt gegen FD
(e) R verstößt nicht gegen FD
(f) R verstößt gegen FD
4. (a) Nein, ist kein Superschlüssel.
(b) Nein, ist kein Superschlüssel.
(c) Ja, ist ein Superschlüssel.
(d) Nein, ist kein Superschlüssel.
(e) Nein, ist kein Superschlüssel.
3
Herunterladen