relationeel model

39
1 Gegevensbanken relationeel model Prof. Erik Duval 2010 - 2011

Upload: erik-duval

Post on 12-Jul-2015

1.132 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Relationeel Model

1

Gegevensbankenrelationeel model

Prof. Erik Duval2010 - 2011

Page 3: Relationeel Model

inleiding

Page 4: Relationeel Model

• 1962: Codasyl development committee, 'An information algebra’, CACM, 5, 4, apr 1962

• 1963: J. McCarthy, 'A basis for a mathematical theory of computation', in Computer programming and formal systems, Brafford & Hirschberg, eds, North-Holland, 1963

• 1968: D.L. Childs, 'Feasibility of a set-theoretical data-structure. A general structure based on a reconstituted definition of a relation', in Proc. IFIP congress 1968, North-Holland, 1968

• 1970: E.F. Codd, 'A relational model of data for large scale shared data banks', CACM, 13, 6, jun 1970

• … daarna: uitbreidingen, aanpassingen4

Page 5: Relationeel Model

rood

geel

groen

S

M

L

KLEUR MAAT

een relatie Rop de verzamelingen V1 , ... Vn

is een deelverzameling van de productverzameling V1×...× Vn :R ⊆ V1 × ... × Vn

5

Page 6: Relationeel Model

voorgesteld door tabel

6

Page 7: Relationeel Model

7

Page 8: Relationeel Model

8

Page 9: Relationeel Model

9

Page 10: Relationeel Model

• U = { A1, ..., An } : verzameling van alle attributen

• globaal: attribuut kan in meerdere relaties voorkomen

• DOM( Ai ) = verzameling alle mogelijke waarden van Ai

• heeft een naam en een type

• enkelvoudig : waarden zijn atomair

• vb. Adres atomair ⇒ we kunnen straatnaam niet isoleren

• actief domein (= "populatie") van A in een GB:

• verzameling alle attribuutwaarden op dat moment in GB

10

Page 11: Relationeel Model

(n-)tupel over de attributen X = { A1, ..., An }

• T = { (A1,w1), ..., (An,wn) } met elke wi ∈ DOM ( Ai ) of wi = null

• korter genoteerd:< (A1, ..., An ), ( w1, ..., wn )>< w1, ..., wn > indien geen verwarring mogelijk

• vb:< 5, "Karel Goossens", "Naamsestraat", "108", 3000, "Leuven" >

11

Page 12: Relationeel Model

< (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) >

of < (Leeftijd, Lengte, Gewicht), (4, 104, 17) >

of (4, 104, 17)

12

Page 13: Relationeel Model

• instantie of extensie r van relatieschema R(A1,...,An)

• eindige verzameling n-tupels over de attributen van R

• r = { t1, t2, ... , tn }

• r(R) ∈ DOM(A1) x ... x DOM(An)

• eigenschappen van relaties:

• tupels zijn niet geordend

• attributen zijn niet geordend

• behalve in notatie <w1, ..., wn>

• elk tupel komt max. 1 keer voor in een relatie

• tegenvoorbeeld: leeftijd, lengte en gewicht van kinderen13

Page 14: Relationeel Model

• één atomaire waarde per attribuut

• geen meerwaardige attributen

• geen samengestelde attributen

• alternatief: genest relationeel model

• Null-waarde kan betekenen:

• attribuut is niet van toepassing

• waarde is onbekend

14

Page 15: Relationeel Model

• Relatieschema met graad n: R(A1, ..., An)

• n-tupel van R : t = <w1, ..., wn>

• componentwaarde wi = t [ Ai ] = t . Ai

• deeltupel t [ Ai, Aj, ..., Ak ] = <wi,wj,...,wk> of t.(Ai,Aj, ...,Ak)

• Q, R, S: relatienamen

• q, r, s: instanties

• t, u, v, w: tupels

• Andere notatie voor attribuut A van relatie R: R.A15

Page 16: Relationeel Model

r = {< 5, "Karel Goossens", "Naamsestraat", "108", 3000, "Leuven“ >,< 12, "Sofie Vandale", "Rijselstraat", "33", 8500, "Kortrijk“ >,< 34, "Frans Haerden", "Tiensestraat", "12", 3000, "Leuven” >}

t = <5,"Karel Goossens","Naamsestraat","108", 3001,"Leuven“>

t [ Nr , Naam ] = < 5, "Karel Goossens“ >

16

Page 17: Relationeel Model

company

Page 18: Relationeel Model

18

EMPLOYEE

SexName

Ssn

Fname Minit Lname

Address

Bdate

Salary

DEPARTMENT

Number

LocationsName

PROJECT

Name

Number

LocationDEPENDENT

NameSex BirthDate

Relationship

WORKS_FOR

CONTROLS

MANAGES

StartDate

SUPERVISESHAS_DEP.

1N

11

1

N

supervisor supervisee1

N

1 NWORKS_ON

Hours

NM

Page 19: Relationeel Model

19

Page 20: Relationeel Model

20

Page 21: Relationeel Model

• regulier entiteitstype → relatie met alle enkelvoudige attributen

• kies sleutelattribuut(en)

• zwak entiteitstype → relatie met alle enkelvoudige attributen

• + verwijssleutel: primaire sleutel van eigenaarsentiteitstype

• binair 1:1 relatietype

• primaire sleutel van ene als verwijssleulel in andere relatie

• ook eventuele enkelvoudige attributen

• binair 1:N relatietype

• aan N-kant primaire sleutel van 1-kant

• ook eventuele enkelvoudige attributen21

Page 22: Relationeel Model

• binair N:M relatietype → relatie

• beide sleutels als verwijssleutels en samen primaire sleutel

• ook eventuele enkelvoudige attributen

• meerwaardig attribuut → relatie met dat attribuut

• als verwijssleutel de primaire sleutel van bijhorende relatie

• primaire sleutel: combinatie van beide

22

Page 23: Relationeel Model

Beperkingen

Page 24: Relationeel Model

• Domeinrestricties

• beperken de mogelijke waarden van attributen

• vb: leeftijd: geheel postief getal, tussen 18 en 65

• Sleutelrestricties

• waarden van sleutels moeten uniek zijn

• Algemene integriteitsrestricties

24

Page 25: Relationeel Model

• relatieschema R(A1, ..., An), U = {A1, ..., An}

• supersleutel K ⊆ U :

• verzameling attributen die tupel van R ondubbelzinnig bepalen (in om het even welke extensie)

• kandidaatsleutel K

• supersleutel K zonder overtollige attributen(er bestaat geen supersleutel K' ⊂ K)

• samengestelde sleutel (meer dan 1 attribuut)enkelvoudige sleutel (1 attribuut)

• primaire sleutel: gekozen uit kandidaatsleutels

• andere kandidaatsleutels zijn alternatieve sleutels

• conventie: primaire sleutel onderstrepen in schema

Page 26: Relationeel Model

26

Page 27: Relationeel Model

• Integriteit = juistheid en volledigheid van GB

• statica-regels: slaan op 1 toestand van GB

• gelden in elke extensie

• dynamica-regels: slaan op toestandsovergangen

• gelden voor elke overgang van 1 extensie naar andere

Page 28: Relationeel Model

• attribuut-restricties

• 1 NV-eis: domein van een attribuuut is enkelvoudig

• entiteit-restricties

• tupel mag niet meer dan 1 keer voorkomen in extensie

• tegenvoorbeeld: relatie R(Leeftijd, Lengte, Gewicht)

• geen null-waarden in primaire sleutel

• referentiële integriteit

• Als tupel naar ander tupel verwijst, moet ander tupel bestaan

• vb. VOLGT-relatie: geen nrs. van vakken die niet bestaan

Page 29: Relationeel Model

• verzameling attributen FK van relatie R1 is verwijssleutel a.s.a.

• attributen van FK hebben zelfde domein als primaire sleutelattributen PK van relatie R2

• elke waarde van FK in R1 komt voor als waarde van een tupel in R2 of is null

• ∀ t1 ∈ R1 : t1[FK] is null of ∃ t2 ∈ R2 : t1[FK] = t2[PK]

• verwijssleutel kan naar eigen relatie verwijzen

• → recursieve relatie; bv. SUPERSSN(overste van werknemer is ook werknemer)

Page 30: Relationeel Model

30

Page 31: Relationeel Model

• domeinbeperkingen

• vb. uurloon > 0

• vb. leeftijd > 23 ⇒ uurloon > minimum_uurloon

Page 32: Relationeel Model

dynamica-regels• Autorisatieregels

• mag deze gebruiker die actie uitvoeren?

• Coördinatieregels

• vb. NEGATIEF-SALDO: tupel toevoegen wanneer saldo<0

• Precondities / postcondities

• vb. geld afhalen van rekening kan enkel indien saldo > 0

• Overgangsregels

• beschrijven welke volgordes van extensies zijn toegestaan

• vb. enkel loonsverhogingen, geen -verlagingen32

Page 33: Relationeel Model

• intra-relationele restricties

• intern binnen 1 relatie

• meestal gemakkelijker te controleren

• inter-relationele restricties

• verschillende relaties betrokken

• vb. salaris werknemer < salaris overste

• tendens

• steeds meer soorten restrictiesautomatisch laten controleren door DBMS

33

Page 34: Relationeel Model

Aanpassen

Page 35: Relationeel Model

• tupel toevoegen

• tupel weglaten

• tupel wijzigen

• integriteit moet gecontroleerd worden!

35

Page 36: Relationeel Model

toevoegen

36

• INSERT <4,"Jan Caers",nul,nul,3000,"Leuven“>INTO STUDENT

• Studentnr 5 ipv 4 ⇒ uniciteit van sleutel geschonden

• Studentnr nul ⇒ regel sleutel niet nul geschonden

• INSERT < 5, 6 > INTO VOLGT :

• referentiële integriteit geschonden (cursus bestaat niet)

• reactie van DBMS op niet-toegelaten toevoeging:

• weigeren + reden voor weigering meedelen aan gebruiker

Page 37: Relationeel Model

weglaten• vb. DELETE VAK TUPLE WITH Vaknr = 8

• referentiële integriteit geschonden: er zijn VOLGT tupels die verwijzen naar dat vak

• DBMS kan:

• weglating weigeren

• verwijzende tupels ook weglaten

• verwijzende waarden aanpassen (bv. nul)

• verschillend reageren in verschillende situaties

• door gebruiker ingesteld37

Page 38: Relationeel Model

wijzigen• vb. MODIFY Titel OF VAK WITH Nr = 8 TO "Filosofie"

• weer gevaar voor

• referentiële integriteit,

• uniciteit van sleutel,

• ...

• wijziging van attribuut dat geen primaire of verwijssleutel is

• meestal geen probleem

• wijziging primaire sleutel: weglaten + toevoegen

• wijziging verwijssleutel: referentiële integriteit controleren38

Page 39: Relationeel Model

Vragen...?

39