6. • 1962: Codasyl development committee, 'An information
algebra’, CACM, 5, 4, apr 1962
5
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
5
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
5
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
5
10. • 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
5
12. een relatie R
op de verzamelingen V1 , ...Vn
is een deelverzameling van de productverzameling V1×...× Vn :
R ⊆ V1 × ... × Vn
KLEUR MAAT
rood S
geel
M
groen
L
6
19. • U = { A1, ..., An } : verzameling van alle attributen
• globaal: attribuut kan in meerdere relaties voorkomen
11
20. • 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
11
21. • 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
11
25. (n-)tupel over de attributen X = { A1, ..., An }
• T = { (A1,w1), ..., (An,wn) }
met
elke wi ∈ DOM ( Ai ) of wi = null
12
26. (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
12
27. (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" >
12
33. • 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)
14
34. • 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
14
36. • één atomaire waarde per attribuut
• geen meerwaardige attributen
• geen samengestelde attributen
• alternatief: genest relationeel model
15
37. • éé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
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)
16
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)
16
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
16
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
16
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
16
45. • 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
16
46. • 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
16
54. Fname Minit Lname Number
Salary Name
Name N WORKS_FOR 1 Locations
Sex Address
Ssn StartDate
EMPLOYEE DEPARTMENT
1
Bdate 1 1
MANAGES
Hours CONTROLS
supervisor supervisee
1
N
1 N N
SUPERVISES WORKS_ON M
HAS_DEP.
PROJECT
N
Name Location
DEPENDENT
Number
Name
Relationship
Sex BirthDate
19
58. • regulier entiteitstype → relatie met alle enkelvoudige attributen
• kies sleutelattribuut(en)
22
59. • regulier entiteitstype → relatie met alle enkelvoudige attributen
• kies sleutelattribuut(en)
• zwak entiteitstype → relatie met alle enkelvoudige attributen
• + verwijssleutel: primaire sleutel van eigenaarsentiteitstype
22
60. • 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
22
61. • 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 attributen
22
63. • binair N:M relatietype → relatie
• beide sleutels als verwijssleutels en samen primaire sleutel
• ook eventuele enkelvoudige attributen
23
64. • 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
23
67. • Domeinrestricties
• beperken de mogelijke waarden van attributen
• vb: leeftijd: geheel postief getal, tussen 18 en 65
25
68. • Domeinrestricties
• beperken de mogelijke waarden van attributen
• vb: leeftijd: geheel postief getal, tussen 18 en 65
• Sleutelrestricties
• waarden van sleutels moeten uniek zijn
25
69. • 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
25
72. • relatieschema R(A1, ..., An), U = {A1, ..., An}
• supersleutel K ⊆ U :
• verzameling attributen die tupel van R ondubbelzinnig
bepalen (in om het even welke extensie)
73. • 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)
74. • 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)
75. • 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
76. • 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
80. • Integriteit = juistheid en volledigheid van GB
• statica-regels: slaan op 1 toestand van GB
• gelden in elke extensie
81. • 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
84. • 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
85. • 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
86.
87. • 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]
88. • 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)
96. 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
37
97. 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
38
98. 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
39