Evaluating modeling techniques for business communication

advertisement
definitieve versie 2002
Databases I
Relationeel Model
Martin Caminada / Wiebren de Jonge
Vrije Universiteit, Amsterdam
Database ontwerp proces
Implementation model oude stijl (hiërarchisch)
D1
D2
engineering
500,000
E1
E2
E3
John
Joe
Jack
28-08-1964
04-04-1968
03-09-1969
Mary
Sue
daughter
wife
sales
E4
E5
200,000
Will
21-03-1971
Suzie
Tom
Mary
daughter
son
wife
Bridget
22-01-1972
Implementation model nieuwe stijl (relationeel)
DEPARTMENT
D#
NAME
D1
engineering
D2
sales
EMPLOYEE
E#
NAME
E1
John
E2
Joe
E3
Jack
E4
Will
E5
Bridget
BUDGET
500,000
200,000
BDATE
28-08-1964
04-04-1968
03-09-1969
21-03-1971
22-01-1972
D#
D1
D1
D1
D2
D2
DEPENDENT
E#
NAME
E3
Mary
E3
Sue
E4
Suzie
E4
Tom
E4
Mary
REL
daughter
wife
daughter
son
wife
Voorbeeld relatie (fig 7.1)
Definitie relatie

relatie: een deelverzameling van het Cartesisch product
D1  D2  …  Dn waarbij Di (i = 1…n) de domeinen zijn en
n de graad (degree / arity) is van de relatie
{ (E1,
(E2,
(E3,
(E4,
(E5,
John,
Joe,
Jack,
Will,
Bridget,
28-08-1964),
04-04-1968),
03-09-1969),
21-03-1971),
22-01-1972) }
voor ieder tupel (e, n, b) uit deze relatie moet gelden:
– e  E#
– n  NAME
– b  BDATE
Uitgebreide definitie relatie

een relatie is:
(1) een verzameling (attribuutnaam, domein)-paren
waarbij de attribuutnamen uniek zijn en
(2) een verzameling tupels, waarbij ieder tupel een
verzameling is van geordende paren (attribuutnaam,
waarde) waarbij elke attribuutnaam niet meer dan één
keer voor mag komen in een tupel en moet voorkomen in
de verzameling (attribuutnaam, domein)-paren van de
relatie en waarbij de waarde moet komen uit het bij de
attribuutnaam vermelde domein
Voorbeeld uitgebreide definitie
( {(E#, EMPNRS),
{{(E#, E1),
{(E#, E2),
{(E#, E3),
{(E#, E4),
{(E#, E5),
}
)
(NAME, STRING),
(NAME, John),
(NAME, Joe),
(NAME, Jack),
(NAME, Will),
(NAME, Bridget),
(BDATE, DATE)},
(BDATE, 28-08-1964)},
(BDATE, 04-04-1968)},
(BDATE, 03-09-1969)},
(BDATE, 21-03-1971)},
(BDATE, 22-01-1972)}
Begrippen en opmerkingen





oorspronkelijke eisen attributen relationeel model:
– niet composite
– niet multi-valued
intensie: geeft aan welke toestanden (waarden) en
toestandsovergangen toegestaan/mogelijk zijn
extensie:
– een extensie: een mogelijke/toegestane inhoud
– de extensie: de huidige inhoud
relatie-schema: beschrijving van de intensie v/e relatie
database-schema: beschrijving van de intensie v/e database
Keys



superkey: verzameling attributen die de tupels van een relatie
altijd (d.w.z. voor iedere extensie) uniek identificeert.
dus t1,t2R: (t1  t2  t1[SK]  t2[SK])
(candidate) key: minimale superkey
primary key: specifieke, door de modelleur daartoe
aangewezen key
foreign key: verzameling van attributen die wordt gebruikt om
naar tupels van een (andere) relatie te verwijzen.
voorbeeld:
Woning(plaats1, straat1, huisnr1,2, postcode2, prijs, naam_makelaar)
Makelaar(naam1, telefoon2, KvKnummer3)
Primary keys en foreign keys (fig 7.7)
Constraints



entity integrity: geen enkel tupel mag de waarde null
hebben in een attribuut dat tot de primary key behoort
key constraint: de attributen van een key moeten
(gezamelijk) voor ieder tupel uit de relatie unieke waarden
hebben
referential integrity: de waarden van foreign keys moeten:
– ofwel als sleutelwaarde voorkomen in de relatie waar
de FK naar verwijst (d.w.z. FK verwijst naar
daadwerkelijk bestaand tupel)
– ofwel geheel null zijn (d.w.z. ieder FK-attribuut null)
Problemen overlapping foreign keys...


voorbeeld:
R(A, B, C, D, E)
{B, C}
FK naar S
{C, D, E} FK naar T
S(B, C, F)
T(C, D, E, G)
in verband met referential integrity geldt:
geen verwijzing naar tupel van S
d.e.s.d.a.
geen verwijzing naar tupel van T
(want null-waarden mogen uitsluitend als de gehele FK null is)
Relatie schema





naam v/d relatie
namen attributen
voor ieder attribuut de naam van het bijbehorende domein
(beschreven in aparte domein schema’s)
beschrijving intra-relationele constraints
– key constraints
– overige constraints
(als tupel.leeftijd > 23 dan tupel.salaris >= minimumloon)
beschrijving van wat er moet gebeuren indien constraints
geschonden dreigen te worden
Database schema






naam v/d database
beschrijving alle domeinen (d.w.z. alle domeinschema’s)
alle relatieschema’s
alle view definities
beschrijving inter-relationele constraints
beschrijving wat er moet gebeuren als inter-relationele
constraints geschonden dreigen te worden
Operaties die database wijzigen



INSERT
– domain constraints
– key constraints
– entity integrity
– referential integrity (van tupel dat wordt toegevoegd)
DELETE
– referential integrity
(van tupels die verwijzen naar tupel dat wordt verwijderd!)
MODIFY
– domain constraints
– referential integrity (van tupel dat wordt gewijzigd)
let op: het wijzigen (MODIFY) van attributen van de primary
key is hetzelfde als een DELETE + INSERT (identiteit wijzigt)
Referential integrity (delete / update)



restricted
delete of update mag niet worden uitgevoerd
nullify
zet foreign key van verwijzend tuple op null
cascade
– bij delete: als tupel t verwijderd wordt, verwijder dan
ook alle tupels t’ die naar t verwijzen
– bij update: als van tupel t de betreffende key gewijzigd
wordt, wijzig dan ook de foreign keys van alle tupels t’
die naar t verwijzen
Voorbeeld referential integrity
D#
D1
D2
E#
E1
E2
E3
E4
E5
NAME
engineering
sales
NAME
John
Joe
Jack
Will
Bridget
BUDGET
500,000
200,000
BDATE
28-08-1964
04-04-1968
03-09-1969
21-03-1971
22-01-1972
E#
NAME REL
D#
E3
Mary
daughter
D1
E3
Sue
wife
D1
E4
Suzie daughter
D1
E4
Tom
son
D2
E4
Mary
wife
D2
\ ---> on delete cascade
\ ---> on delete nullify
Volgende keer


nalezen: 7.1 7.2 7.3 + aanvullingen hoofdstuk 7
voorbereiden: aanvullingen hoofdstuk 7 constraints
Download