Sie sind auf Seite 1von 7

Ajdin Memić

Blatt 6
Aufgabe 1 (SQL)

• Die versendeten Nachrichten sollen abgerechnet werden. Jede Nachricht soll


0,06 € kosten. Jedes Mitglied hat 2 Nachrichten frei. Erstellen Sie einen View
„Accounting“ der für jede Person (Email, Vorname, Nachname), die mehr als 0
Euro zahlen muss den zu zahlenden Betrag für den Monat 07/09 ausgibt.

create view Accounting as


select p.vorname,p.nachname,p.email,(0.06*(count(*)-2)) AS kosten
from nachricht n, person p
where p.email = n.vonemail
and n.datum >= to_Date ('01.07.2009','DD.MM.YYYY') and n.datum <=
to_Date('30.07.2009','DD.MM.YYYY')
group by p.email, p.vorname, p.nachname
having (0.06*(count(*)-2)) > 0;
Select * from Accounting;

• Erstellen Sie einen View „AccountingZero“ der für jede Person (Email,
Vorname, Nachname) den zu zahlenden Betrag für den Monat 07/09 ausgibt.
Personen, die im Monat 07/09 keine Nachricht versendet haben sollen mit
einem Betrag von 0 aufscheinen. Im Gegensatz zu a) soll die Abrechnung ab
der ersten Nachricht erfolgen und auch Personen, die keine Nachricht gesendet
haben sollen aufscheinen.

create view AccountingZero as


select p.vorname,p.nachname,p.email,(0.05*(count(*))) AS kosten
from nachricht n, person p
where p.email = n.vonemail
and n.datum >= to_Date ('01.07.2009','DD.MM.YYYY') and n.datum <=
to_Date('30.07.2009','DD.MM.YYYY')
group by p.email, p.vorname, p.nachname;
Select * from Accounting;

• Erstellen Sie eine neue Gruppe „Breaking Bad“ und fügen Sie alle Mitglieder
der Gruppe Villach oder Klagenfurt, deren Name mit „b“ beginnt in die neue
Gruppe ein.
• insert into gruppe (name,beschreibung,emailowner) values ('Breaking
Bad','hallo',NULL);

insert into istingruppe (gruppename,email)


Select 'Breaking Bad' as gruppename, p.email as email
from istingruppe g, person p
where g.email = p.email
and left (p.nachname,1) =’B’
and (g.gruppename = 'Klagenfurt' or g.gruppename = 'Villach' );

• Löschen Sie die Gruppe Klagenfurt.

DELETE FROM istingruppe WHERE gruppename = ‚Klagenfurt‘

Aufgabe 2 (SQL)

• Erstellen Sie eine Tabelle „notlikes“. Diese Tabelle soll aus drei Feldern
(email1, email2, fromDate) bestehen. Die Felder email1 sowie email2
referenzieren Personen. Die Person, die durch email1 angegeben ist, mag die
Person, die durch email2 angegeben ist nicht. Weiters gibt das Feld
„fromDate“ an, ab welchem Datum (inklusive) diese Beziehung gilt. Keines
der drei Felder darf NULL sein. Des Weiteren ist es nicht erlaubt, dass eine
Person eine zweite Person mehr als einmal nicht mag und es ist nicht
erlaubt, dass eine Person sich selbst nicht mag.

create table notlikes(


email1 varchar2(50) references person(email) not null,
email2 varchar2(50) references person(email) not null,
fromDate not null,
constraint notlikesKEY primary key (email1,email2)
)
Select * from notlikes;

• Fügen Sie 5 Einträge in die Tabelle „notlikes“ ein.

insert into notlikes values('carmen@yahoo.com' , 'claudia@gmx.net', '11.11.2001');


insert into notlikes values ('maria@live.at','marius@sms.at','22.12.2012');
insert into notlikes values ('adi@gmail.com','andi@yahoo.com','23.03.2013');
insert into notlikes values ('mihai@gmx.net','mirel@live.at','14.04.2014');
insert into notlikes values ('vali@sms.at','teo@gmail.com','25.05.2015');

• Entfernen sie alle Freunde Einträge zwischen Personen a und b, falls es


einen notlikes Eintrag zwischen a und b oder b und a gibt.

delete from hatfreund h


where h.email in(
Select a.email
from person a, person b, notlikes l
where (l.email1 = a.email
and l.email2 = b.email) or
(l.email1 = b.email
and l.email2 = a.email));

Aufgabe 3 (Normalisierung )

Gegeben ist folgendes Relationenschema R = (A,F), mit den Attributen


A={A,B,C,D,E,F,G,H,I,J,K} und der Menge der Abhängigkeiten
F = {CIK, ADE. JC, HA, HJFG, GB }.
Zerlegen Sie die Relation R mit dem BCNF- Dekompositionsalgorithmus.
Untersuchen Sie die Ergebnisse bzgl. Verbundtreue und Abhängigkeitstreue.

R = B, D, E,F,I,K,
L = J, H
N =-
M = A, C, G
Wurzel = N und L = JH
{HJ}+ = {IKADECFGBHJ} SCHLÜSSELKANDIDAT
nicht prime Attribute: {A, B, C, D, E, F, G, I ,K}

Die Minimale Überdeckung von F


Mache F kanonisch
F : { CI, CK, AD, AE, JC, HA, HJF, HJG, GB}

Überprufe auf Redundanz


CI nein
CK nein
AD nein
AE nein
JC nein
HA nein
HJF nein
HJG nein
GB nein

Überprüfe auf überflüssige Attribute

HJFG;
Ist H überflüssig ?
{H}+ = {A,D,E,H} nein

Ist J überflüssig ?
{J}+ = {C, I, J, K} nein

Suche FD YA ( Y nicht Schlüssel , A nicht prim)

F : { CI, CK, AD, AE, JC, HA, HJF, HJG, GB}


HJ ist Key

Bösartige Abhängigkeit : GB

R1 = ({A,C,D,E,F,G,H,I,J,K}, { CI, CK, AD, AE, JC, HA, HJF, HJG })


Schlüssel HJ
R2 = ({G,B}, { GB}) SCHLÜSSEL G

Zerlegung R1 : Bösartige Abhängigkeit : CI

R11 = ({A,C,D,E,F,G,H,J,K}, { CK, AD, AE, JC, HA, HJF, HJG })


SCHLÜSSEL HJ
R12 = ({C, I}, {CI}) SCHLÜSSEL C

Zerlegung R11: Bösartige Abhängigkeit : CK

R111 = ({A,C,D,E,F,G,H,J}, { AD, AE, JC, HA, HJF, HJG })


SCHLÜSSEL HJ
R112 = ({C, K}, {CK}) SCHLÜSSEL C
Zerlegung R111: Bösartige Abhängigkeit : AD

R1111 = ({A,C,E,F,G,H,J}, { AE, JC, HA, HJF, HJG })


SCHLÜSSEL HJ
R1112 = ({A, D}, {AD}) SCHLÜSSEL A

Zerlegung R1111: Bösartige Abhängigkeit : AE

R11111 = ({A,F,G,H,J}, { JC, HA, HJF, HJG })


SCHLÜSSEL HJ
R11112 = ({A, E}, {AE}) SCHLÜSSEL A

Zerlegung R11111: Bösartige Abhängigkeit : JC

R111111 = ({A,F,G,H,J}, { HA, HJF, HJG })


SCHLÜSSEL HJ
R111112 = ({J, C}, {JC}) SCHLÜSSEL J

Zerlegung R111111: Bösartige Abhängigkeit : HA

R1111111 = ({A,F,G,H,J}, { HA, HJF, HJG })


SCHLÜSSEL HJ
R1111112 = ({J, C}, {JC}) SCHLÜSSEL J

Zerlegung R1111111: Bösartige Abhängigkeit : HA

R11111111 = ({F,G,H,J}, { HJF, HJG })


SCHLÜSSEL HJ
R11111112 = ({H, A}, {HA}) SCHLÜSSEL H

Die Zerlegung ist : (


R2,R12,R112,R1112,R11112,R111112,R1111112,R11111112,R11111111)

Aufgabe 4 Mehrwertige Abhängigkeiten und 4NF


Gegeben ist die Relation melden_an(SVNR, LVNr, Lieblingsfarbe). In der
Relation meldet_an gibt es keine funktionalen Abhängigkeiten und eine
mehrwertige Abhängigkeit SVNR ->> LVNr.
• Stellen Sie die Relation melden_an als Tabelle dar und befüllen Sie sie mit
beliebiges Daten, sodass die mehrwertige Abghängigkeit SVNR->> LVNr
lauf Definition erfüllt ist.

t1(X) = t2(X) t1.SVNR = t2.SVNR


t3(Z) = t2(Z) t3.Lieblingsfarbe = t2.Lieblingsfarbe
t3(Y) = t1(Y) t3.LVNr = t1.LVNr

Melden_an(SVNR, LVNr,Lieblingsfarbe )

Meldet_an SVNR(X) LVNr(Y) Lieblingsfarbe(Z)


T1 1 1111 Blau
T2 1 2222 Gelb
T3 1 1111 Gelb
T4 1 2222 Blau
1 1111 Lila
1 2222 Lila

SVNR ->> LVNr

• Zerlegen Sie die Relation meldet_an in 4NF.

R: S = { SVNR, LVNr,Lieblingsfarbe }
F={ SVNR -->> LVNr }

Es gibt keine Schlüssel, also zerlegen wir S in zwei Relationen :

S1(SVNR ,LVNR) und S2(SVNR, Lieblingsfarbe) .


S1 und S2 haben keine FDs und nur eine MVD.
• 4NF
Eine Relation R ist in 4NF, falls sie in BCNF ist und falls sie nicht mehr als eine mehrwertigen
Abhängigkeit enthält.

S1(SVNR,LVNr)
SVNR LVNr
1 1111
1 2222

S2(SVNR, Lieblingsfarbe)
SVNR Lieblingsfarbe
1 Blau
1 Gelb

Das könnte Ihnen auch gefallen