Databases I Relationeel Model Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002
Database ontwerp proces
Implementation model oude stijl (hiërarchisch) D1engineering500,000 E1John E2Joe E3Jack Marydaughter Suewife D2sales200,000 E4Will Suziedaughter Tomson Marywife E5Bridget
Implementation model nieuwe stijl (relationeel) DEPARTMENT D#NAMEBUDGET D1engineering500,000 D2sales200,000 DEPENDENT EMPLOYEE E#NAME REL E#NAME BDATE D# E3Mary daughter E1John D1 E3Sue wife E2Joe D1 E4Suzie daughter E3Jack D1 E4Tom son E4Will D2 E4Mary wife E5Bridget D2
Voorbeeld relatie (fig 7.1)
Definitie relatie u relatie: een deelverzameling van het Cartesisch product D 1 D 2 … D n waarbij D i (i = 1…n) de domeinen zijn en n de graad (degree / arity) is van de relatie {(E1, John, ), (E2, Joe, ), (E3, Jack, ), (E4, Will, ), (E5, Bridget, ) } voor ieder tupel (e, n, b) uit deze relatie moet gelden: –e E# –n NAME –b BDATE
Uitgebreide definitie relatie u 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),(NAME, STRING),(BDATE, DATE)}, {{(E#, E1), (NAME, John),(BDATE, )}, {(E#, E2), (NAME, Joe),(BDATE, )}, {(E#, E3), (NAME, Jack),(BDATE, )}, {(E#, E4), (NAME, Will),(BDATE, )}, {(E#, E5), (NAME, Bridget),(BDATE, )} } )
Begrippen en opmerkingen u oorspronkelijke eisen attributen relationeel model: –niet composite –niet multi-valued u intensie: geeft aan welke toestanden (waarden) en toestandsovergangen toegestaan/mogelijk zijn u extensie: –een extensie: een mogelijke/toegestane inhoud –de extensie: de huidige inhoud u relatie-schema: beschrijving van de intensie v/e relatie u database-schema: beschrijving van de intensie v/e database
Keys u superkey: verzameling attributen die de tupels van een relatie altijd (d.w.z. voor iedere extensie) uniek identificeert. dus t 1,t 2 R: (t 1 t 2 t 1 [SK] t 2 [SK]) u (candidate) key: minimale superkey primary key: specifieke, door de modelleur daartoe aangewezen key u foreign key: verzameling van attributen die wordt gebruikt om naar tupels van een (andere) relatie te verwijzen. voorbeeld: Woning(plaats 1, straat 1, huisnr 1,2, postcode 2, prijs, naam_makelaar) Makelaar(naam 1, telefoon 2, KvKnummer 3 )
Primary keys en foreign keys (fig 7.7)
Constraints u entity integrity: geen enkel tupel mag de waarde null hebben in een attribuut dat tot de primary key behoort u key constraint: de attributen van een key moeten (gezamelijk) voor ieder tupel uit de relatie unieke waarden hebben u 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... u 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) u 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 u naam v/d relatie u namen attributen u voor ieder attribuut de naam van het bijbehorende domein (beschreven in aparte domein schema’s) u beschrijving intra-relationele constraints –key constraints –overige constraints (als tupel.leeftijd > 23 dan tupel.salaris >= minimumloon) u beschrijving van wat er moet gebeuren indien constraints geschonden dreigen te worden
Database schema u naam v/d database u beschrijving alle domeinen (d.w.z. alle domeinschema’s) u alle relatieschema’s u alle view definities u beschrijving inter-relationele constraints u beschrijving wat er moet gebeuren als inter-relationele constraints geschonden dreigen te worden
Operaties die database wijzigen u INSERT –domain constraints –key constraints –entity integrity –referential integrity (van tupel dat wordt toegevoegd) u DELETE –referential integrity (van tupels die verwijzen naar tupel dat wordt verwijderd!) u 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) u restricted delete of update mag niet worden uitgevoerd u nullify zet foreign key van verwijzend tuple op null u 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#NAMEBUDGET D1engineering500,000 D2sales200,000 E#NAME REL E#NAME BDATE D# E3Mary daughter E1John D1 E3Sue wife E2Joe D1 E4Suzie daughter E3Jack D1 E4Tom son E4Will D2 E4Mary wife E5Bridget D2 \ ---> on delete cascade \ ---> on delete nullify
Volgende keer u nalezen: aanvullingen hoofdstuk 7 u voorbereiden: aanvullingen hoofdstuk 7 constraints