Datenbanksysteme I - Institut für Informatik

Werbung
Universität Augsburg, Institut für Informatik
Dr. W.-T. Balke
M. Endres, A. Huhn, T. Preisinger
WS 2006/2007
04. Dez. 2006
Lösungsblatt 6
Datenbanksysteme I
Aufgabe 1: SQL-DDL
Erstellen der Relationen:
create table Interpret (
IIN integer primary key,
Name varchar(50),
Vorname varchar(50));
create table Kategorie (
Name varchar(20) primary key,
Umsatz integer);
create table Song (
Titel varchar(50) primary key,
Haeufigkeit integer not null);
create table SingleCDs (
IIN integer,
Titel varchar(50),
Spieldauer varchar(50),
Bestand integer not null,
Kat_Name varchar(20) not null,
constraint PK primary key (IIN, Titel),
constraint FKCK
foreign key (Kat_Name)
references Kategorie(Name),
constraint FKCI
foreign key (IIN)
references Interpret on delete cascade,
constraint FKCS
foreign key (Titel)
references Song
);
Einfügen der Daten:
insert
insert
insert
insert
insert
insert
insert
insert
insert
into
into
into
into
into
into
into
into
into
Song
Song
Song
Song
Song
Song
Song
Song
Song
values(’All I wanna do’,3 );
values(’All you zombies’, 6);
values(’Johnny B.’, 2);
values(’Satisfied’, 8);
values(’All or nothing’, 6);
values(’Keep on running’, 5);
values(’Bad boy’, 2);
values(’Day by day’, 17);
values(’Sweet Lullaby’, 1);
1
insert
insert
insert
insert
insert
insert
into
into
into
into
into
into
Interpret
Interpret
Interpret
Interpret
Interpret
Interpret
values(212
values(716
values(629
values(312
values(117
values(224
,
,
,
,
,
,
’Crow’, ’Sheryl’);
’Hooters’, null);
’Marx’, ’Richard’);
’Milli Vanilli’, null);
’Harrow’, ’Den’);
’Deep Fores’, null);
insert into Kategorie values(’Rock’ ,40 );
insert into Kategorie values(’Pop’ , 55);
insert into Kategorie values(’Ethno’ , 5);
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
into
into
into
into
into
into
into
into
into
into
SingleCDs
SingleCDs
SingleCDs
SingleCDs
SingleCDs
SingleCDs
SingleCDs
SingleCDs
SingleCDs
SingleCDs
values(212,
values(716,
values(716,
values(716,
values(629,
values(312,
values(312,
values(117,
values(117,
values(224,
’All I wanna do’, 202 , 7, ’Rock’);
’Day by day’, 197, 12, ’Rock’);
’All you zombies’, 253,15 , ’Rock’);
’Johnny B.’, 233, 19, ’Rock’);
’Satisfied’,243 , 3, ’Rock’);
’All or nothing’, 198, 7, ’Pop’);
’Keep on running’,188 , 9, ’Pop’);
’Bad boy’, null, 22, ’Pop’);
’Day by day’, 214, 4, ’Pop’);
’Sweet Lullaby’, 512, 17, ’Ethno’);
Die Daten müssen entsprechend ihrer Fremdschlüsselbeziehungen in der richtigen Reihenfolge
eingefügt werden.
Aufgabe 2: SQL-DML
a) Der Wert NULL in Spieldauer wird hier als ’neutraler Wert’ 0 angesehen. NULL-Werte dürften
aber in dieser Berechnung nicht mit einfließen. Deshalb die verbesserte Query:
select Kat_Name, sum(Spieldauer) / count(*) as DSpieldauer
from SingleCDs
where Spieldauer IS NOT NULL
group by Kat_Name;
b) Da das Löschen kaskadiert durchgeführt wird, reicht das Löschen von ’Milli Vanilli’ in der
Relation Interpret:
delete from Interpret where Name=’Milli Vanilli’;
c) Lösung:
update SingleCDs
set Spieldauer = 200
where Titel = ’Day by day’
and IIN = (
select IIN
from Interpret
where Name = ’Hooters’);
2
d) Löschen von Bestand:
alter table SingleCDs drop column Bestand;
e) Hinzufügen von Preis:
alter table SingleCDs add Preis Integer;
Aufgabe 3: SQL-Views
a) Anlegen des Views:
create view FuerKunden(Titel, Kat_Name, Preis, Name, Vorname) as
select s.titel, s.kat_Name, s.preis, i.name, i.vorname from
SingleCDs s, Interpret i where s.IIN = i.IIN;
b) Beispiel für Update:
update FuerKunden set Preis = 3 where Titel=’All I wanna do’;
c) Der View von Aufgabe a) benötigt noch ein ’WITH READ ONLY’ um sicherzustellen, das
keine Daten geändert bzw. hinzugefügt werden.
Aufgabe 4: Zyklische Fremdschlüsselbeziehungen
create table chicken(
cID integer primary key
);
create table egg(
eIC integer primary key,
cID integer
constraint FKEC
references chicken deferrable
);
alter table chicken
add eID integer
constraint FKCE
references egg deferrable;
set constraints FKEC, FKCE deferred;
insert into chicken values (1,2);
insert into egg values (2,1);
commit;
3
Herunterladen