Download - Relationeel Model
1
Gegevensbankenrelationeel model
Prof. Erik Duval2010 - 2011
2
http://www.slideshare.net/erik.duval
inleiding
• 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
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
voorgesteld door tabel
6
7
8
9
• 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
(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
< (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) >
of < (Leeftijd, Lengte, Gewicht), (4, 104, 17) >
of (4, 104, 17)
12
• 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
• éé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
• 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
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
company
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
19
20
• 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
• 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
Beperkingen
• 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
• 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
26
• 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
• 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
• 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)
30
• domeinbeperkingen
• vb. uurloon > 0
• vb. leeftijd > 23 ⇒ uurloon > minimum_uurloon
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
• 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
Aanpassen
• tupel toevoegen
• tupel weglaten
• tupel wijzigen
• integriteit moet gecontroleerd worden!
35
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
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
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
Vragen...?
39