Lösungsvorschlag Einführung in Datenbanksysteme Endterm 2005

Aus VISki
Wechseln zu: Navigation, Suche

Aufgabe 1

a)

create table Buch(Titel varchar(30) primary key);
create table Leser(Name varchar(30) primary key);
create table Kapitel(Titel varchar(30) references Buch on update cascade on delete cascade,
                   Nr integer not null, 
                   primary key (Titel, Nr));
create table liest(LeserName varchar(30) references Leser on update cascade on delete cascade,
                   BuchTitel varchar(30) references Buch on update cascade on delete cascade,
                   primary key (LeserName, BuchTitel));

Alternative MySQL

a)

CREATE TABLE Buch(Titel VARCHAR(30),
                  PRIMARY KEY( Titel ));
CREATE TABLE Leser(Name VARCHAR(30),
                   PRIMARY KEY( Name ));
CREATE TABLE Kapitel(Titel VARCHAR(30),
                     Nr INT,
                     PRIMARY KEY( Titel, Nr )
                     FOREIGN KEY ( Titel ) REFERENCES Buch(Titel) ON DELETE CASCADE ON UPDATE CASCADE);
CREATE TABLE liest(Titel VARCHAR(30),
                   Name VARCHAR(30),
                   PRIMARY KEY( Titel, Name )
                   FOREIGN KEY ( Titel ) REFERENCES Buch(Titel) ON DELETE CASCADE ON UPDATE CASCADE,
                   FOREIGN KEY ( Name ) REFERENCES Leser(Name) ON DELETE CASCADE ON UPDATE CASCADE);

b)

DELETE FROM Buch WHERE Titel='Die wilde Wutz';

Alle Einträge in den Tables "liest", die 'Die wilde Wutz' enthalten, werden gelöscht. Ebenso das Buch selbst sowie alle Kapitel des Buches.

Aufgabe 2

a)

Question.png

Dem Autor des Lösungsvorschlags stellt sich eine Unklarheit betreffend der Prüfungsfrage oder deren Lösung:
Dieser Vorschlag ist FALSCH. Er funktioniert nur "per Zufall" wenn bei der Auswertung des HAVING Kriteriums das richtige Tupel genommen wird. (getestet unter MySQL). Auch das Select * mit Group-By geht nicht wirklich. Wenn es in MySQL geht, heisst es lange nicht, dass es korrektes SQL ist. MySQL gibt dann einfach zufällige Werte für die anderen Attribute aus.
Hilf mit, die Qualität dieser Seite zu verbessern, indem du eine eindeutige Lösung einfügst oder auf der Diskussionsseite dieses Themas deine Meinung äusserst.

create view ProfBuecher as
  select b.* 
  from buch b , kapitel k 
  where b.isbn = k.isbn 
  group by k.isbn 
    having k.titel not like "%Wutz%";

grant select
  on ProfBuecher
  to Professor;

Kommentar: Anstatt mit group by zu arbeiten koennte man auch ein select distinct machen.


b) Nein, die Sicht verletzt folgendes Kriterium für veränderbare Sichten: Veränderbare Sichten verwenden nur genau eine Tabelle (also Basisrelation oder Sicht), die ebenfalls veränderbar sein muss.


a) Korrekt

create view ProfBuecher as
select *
from buch
where isbn not in (select isbn from kapitel where titel like "%Wutz%")

grant wurde in der Vorlesung nicht behandelt.

b) Das Schreiben in die Sicht ist möglich. Sinnvoll?

Aufgabe 3

Bemerkung weils nicht ganz sauber steht in der Aufgabenstellung: Ich gehe davon aus, dass die erste FD so aussieht: (A,B -> C)

a) Die Kandidatenschlüssel sind: AB, BC, BD

b)

  • 1NF: ja (keine geschachtelte Relation)
  • 2NF: ja (es gibt gar keine Nichtschlüssel-Attribute, also trivialerweise erfüllt)
  • 3NF: ja (alle rechten Seiten der FDs sind in Kandidatenschlüsseln enthalten)
  • BCNF: nein (z.B. C->D ist weder trivial noch ist C ein Superschlüssel)
  • 4NF: wird nicht verlangt

c) Nach der kanonischen Überdeckung bleiben immer noch die gleichen FDs stehen. Nach dem 2.Schritt erhalten wir die neuen Schemata X,Y,Z:

  • X(A,B,C)
  • Y(C,D)
  • Z(D,A)

Weil X einen Kandidatenschlüssel enthält, ist der Synthesealgorithmus beendet.

d) Alle neuen Teile sind in BCNF, da gibt es nichts mehr zu tun.

Aufgabe 4

a) Definition MVD: Für jede Tupel t1, t2 mit gleichen -Werten muss es Tupel t3 und t4 geben so dass und und und und

Beweis: Für 2 Beliebige Tupel t1 und t2 mit gleichen -Werten gibt es die Tupel t3=t1 und t4=t2 die alle Bedingungen erfüllen.
*  folgt aus Voraussetzung und t1=t3 und t2=t4.
*  und  folgen aus t1=t3 und t2=t4
*  und  folgt aus  und 

b) Gesetze aus Slides:

  • impliziert (Verallgemeinerung)
  • impliziert (Komplement)

Beweis: Aus folgt (Verallgemeinerung). Daraus folgt (Komplement). Unter der Annahme, dass zu und disjunkt ist, folgt .

Question.png

Dem Autor des Lösungsvorschlags stellt sich eine Unklarheit betreffend der Prüfungsfrage oder deren Lösung:
Unklar ist, ob man annehmen darf, dass beta zu alpha und gamma disjunkt ist.
Hilf mit, die Qualität dieser Seite zu verbessern, indem du eine eindeutige Lösung einfügst oder auf der Diskussionsseite dieses Themas deine Meinung äusserst.

Aufgabe 5

Question.png

Dem Autor des Lösungsvorschlags stellt sich eine Unklarheit betreffend der Prüfungsfrage oder deren Lösung:
Ohne Gewähr. b) korrigiert. PeeDee
Hilf mit, die Qualität dieser Seite zu verbessern, indem du eine eindeutige Lösung einfügst oder auf der Diskussionsseite dieses Themas deine Meinung äusserst.

a) Nicht serialisierbar.

  • T1->T2: w1(X)...r2(X)
  • T2->T3: r2(X)...w3(X)
  • T3->T1: w3(X)...a1 (Das abort zählt wie ein w1(X) weil es ja quasi die Änderung and X rückgängig machen muss.)

b) Ist serialisierbar. T5 macht nur read und am Ende abort, damit ist sie völlig unabhängig vom Rest. Allerdings habe ich auch einen Zyklus bekommen im Graphen und sie zuerst für nicht serialisierbar gehalten. Was auftritt ist ein Phantomproblem, das keine Auswirkungen hat. Gilt das nun als serialisierbar? Ich sage mal ja, bitte korrigiert mich...

Aufgabe 6

Question.png

Dem Autor des Lösungsvorschlags stellt sich eine Unklarheit betreffend der Prüfungsfrage oder deren Lösung:
Ohne Gewähr. Flavour Sorry musste a) rausnehmen weils falsch war, siehe Diskussionsseite.PeeDee
Hilf mit, die Qualität dieser Seite zu verbessern, indem du eine eindeutige Lösung einfügst oder auf der Diskussionsseite dieses Themas deine Meinung äusserst.

a)

Wenn ich es richtig verstanden habe, dann gibt es so etwas gar nicht, weil eine höhere NF automatisch alle niederen NF impliziert.
Es ist also eine Fangfrage!


Hier mein salopper Beweis, hoffe es stimmt =):


Sei in 3 NF und seien die Kandidatenschlüssel von .


Falls nicht in 2 NF ist dann muss es eine nichttriviale FD mit folgenden Eigenschaften geben:

Dies widerspricht jedoch der Annahme dass in 3 NF ist da:

nichttrivial ist

kein Superschlüssel ist, da für irgendein j

B kein Primattribut ist da


Deshalb ist die Relation auch in 2 NF.


b)

Haben wir nicht behandelt?

c)

Question.png

Dem Autor des Lösungsvorschlags stellt sich eine Unklarheit betreffend der Prüfungsfrage oder deren Lösung:
diese aufgabe benötigt diskussion.
Hilf mit, die Qualität dieser Seite zu verbessern, indem du eine eindeutige Lösung einfügst oder auf der Diskussionsseite dieses Themas deine Meinung äusserst.

ii.) liefert das grössere Ergebnis falls es in S.a und R.x 'null' Werte hat. Diese fallen durch das "=" in i.) heraus. Das 'in' lässt sie aber in der Ergebnismenge.

Ein kurzes Experiment in MySQL zeigt, dass NULL nicht IN (NULL, ..) ist. Die beiden Ergebnisse sind also gleich gross, auch wenn NULL in den Daten vorkommt.


d)

siehe Slides Transaktionen (haben leider keine Nummerierung)

einfaches beispiel


T1        T2
BOT
R(x)
do(x)
          BOT
          R(x)
          do(x)
          W(x)
          COMMIT
W(x)
COMMIT

Im allgemeinen ist ein Lost-Update wenn die zweite transaktion den datenbestand ändert bevor der erste seine änderungen speichern kann. dadurch wird alles auf die erste Transaktion "zurückgesetzt". man vergisst somit die zweite Transaktion.