5. • 1962: Codasyl development committee, 'An information
algebra’, CACM, 5, 4, apr 1962
4
6. • 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
4
7. • 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
4
8. • 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
4
9. • 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, aanpassingen
4
10. “Adding together the lack of any real-world
example, performance experiment, and
implementation indication or detail, we are left
with an obscure exercise using unfamiliar
mathematics and of little or no practical
consequence. It can be safely rejected.”
http://www.fang.ece.ufl.edu/reject.html
5
11. KLEUR MAAT KLEUR MAAT
rood S rood S
rood M
rood L geel
M
geel M
geel L groen
L
groen M
6
12. een relatie R
op de verzamelingen V1 , ...Vn
is een deelverzameling van de productverzameling V1×...× Vn :
R ⊆ V1 × ... × Vn
KLEUR MAAT KLEUR MAAT
rood S rood S
rood M
rood L geel
M
geel M
geel L groen
L
groen M
6
17. • U = { A1, ..., An } : verzameling van alle attributen
• globaal: attribuut kan in meerdere relaties voorkomen
10
18. • 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
10
19. • 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
23. (n-)tupel over de attributen X = { A1, ..., An }
• T = { (A1,w1), ..., (An,wn) }
met
elke wi ∈ DOM ( Ai ) of wi = null
11
24. (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
11
25. (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
31. • 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)
13
32. • 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 kinderen
13
34. • één atomaire waarde per attribuut
• geen meerwaardige attributen
• geen samengestelde attributen
• alternatief: genest relationeel model
14
35. • éé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
38. • 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)
15
39. • 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)
15
40. • 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
15
41. • 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
15
42. • 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
15
43. • 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
15
44. • 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.A
15
56. • Domeinrestricties
• beperken de mogelijke waarden van attributen
• vb: leeftijd: geheel postief getal, tussen 18 en 65
21
57. • Domeinrestricties
• beperken de mogelijke waarden van attributen
• vb: leeftijd: geheel postief getal, tussen 18 en 65
• Sleutelrestricties
• waarden van sleutels moeten uniek zijn
21
58. • 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
21
61. • relatieschema R(A1, ..., An), U = {A1, ..., An}
• supersleutel K ⊆ U :
• verzameling attributen die tupel van R ondubbelzinnig
bepalen (in om het even welke extensie)
62. • 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)
63. • 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)
64. • 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
65. • 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
69. • Integriteit = juistheid en volledigheid van GB
• statica-regels: slaan op 1 toestand van GB
• gelden in elke extensie
70. • 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
73. • 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
74. • 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
75.
76. • 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]
77. • 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)
85. toevoegen
• 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
33
86. 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 ingesteld
34
87. 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 controleren
35