1 / 19

Databases I Relationeel Model

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 engineering 500,000 E1 John 28-08-1964 E2 Joe 04-04-1968 E3 Jack 03-09-1969

golda
Download Presentation

Databases I Relationeel Model

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. definitieve versie 2002 Databases IRelationeel Model Martin Caminada / Wiebren de JongeVrije Universiteit, Amsterdam

  2. Database ontwerp proces

  3. Implementation model oude stijl (hiërarchisch) D1 engineering 500,000 E1 John 28-08-1964 E2 Joe 04-04-1968 E3 Jack 03-09-1969 Mary daughter Sue wife D2 sales 200,000 E4 Will 21-03-1971 Suzie daughter Tom son Mary wife E5 Bridget 22-01-1972

  4. Implementation model nieuwe stijl (relationeel) DEPARTMENT D# NAME BUDGET D1 engineering 500,000 D2 sales 200,000 DEPENDENT EMPLOYEE E# NAME REL E# NAME BDATED#E3 Mary daughter E1 John 28-08-1964 D1 E3 Sue wife E2 Joe 04-04-1968 D1 E4 Suzie daughter E3 Jack 03-09-1969 D1 E4 Tom son E4 Will 21-03-1971 D2 E4 Mary wife E5 Bridget 22-01-1972 D2

  5. Voorbeeld relatie (fig 7.1)

  6. 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, John, 28-08-1964), (E2, Joe, 04-04-1968), (E3, Jack, 03-09-1969), (E4, Will, 21-03-1971), (E5, Bridget, 22-01-1972) } voor ieder tupel (e, n, b) uit deze relatie moet gelden: • e  E# • n  NAME • b  BDATE

  7. 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

  8. Voorbeeld uitgebreide definitie ( {(E#, EMPNRS), (NAME, STRING), (BDATE, DATE)},{{(E#, E1), (NAME, John), (BDATE, 28-08-1964)}, {(E#, E2), (NAME, Joe), (BDATE, 04-04-1968)}, {(E#, E3), (NAME, Jack), (BDATE, 03-09-1969)}, {(E#, E4), (NAME, Will), (BDATE, 21-03-1971)}, {(E#, E5), (NAME, Bridget), (BDATE, 22-01-1972)} } )

  9. 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

  10. 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 superkeyprimary 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)

  11. Primary keys en foreign keys (fig 7.7)

  12. 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)

  13. 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 Sd.e.s.d.a.geen verwijzing naar tupel van T(want null-waarden mogen uitsluitend als de gehele FK null is)

  14. 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

  15. 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

  16. 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)

  17. Referential integrity (delete / update) • restricteddelete of update mag niet worden uitgevoerd • nullifyzet 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

  18. Voorbeeld referential integrity D# NAME BUDGET D1 engineering 500,000 D2 sales 200,000 E#NAME REL E# NAME BDATED#E3 Mary daughter E1 John 28-08-1964 D1 E3 Sue wife E2 Joe 04-04-1968 D1 E4 Suzie daughter E3 Jack 03-09-1969 D1 E4 Tom son E4 Will 21-03-1971 D2 E4 Mary wife E5 Bridget 22-01-1972 D2 \ ---> on delete cascade \ ---> on delete nullify

  19. Volgende keer • nalezen: 7.1 7.2 7.3 + aanvullingen hoofdstuk 7 • voorbereiden: aanvullingen hoofdstuk 7 constraints

More Related