Relationeel Model

1,284 views

Published on

Relational Model

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,284
On SlideShare
0
From Embeds
0
Number of Embeds
144
Actions
Shares
0
Downloads
45
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Relationeel Model

    1. 1. Gegevensbanken relationeel model Prof. Erik Duval 2009 - 2010 1
    2. 2. http://www.slideshare.net/erik.duval 2
    3. 3. • Inleiding • Begrippen en notaties • Beperkingen in het relationele model • Relaties aanpassen 3
    4. 4. inleiding
    5. 5. 5
    6. 6. • 1962: Codasyl development committee, 'An information algebra’, CACM, 5, 4, apr 1962 5
    7. 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. 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. 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. 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
    11. 11. KLEUR MAAT rood S geel M groen L 6
    12. 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
    13. 13. 7
    14. 14. voorgesteld door tabel 7
    15. 15. 8
    16. 16. 9
    17. 17. 10
    18. 18. 11
    19. 19. • U = { A1, ..., An } : verzameling van alle attributen • globaal: attribuut kan in meerdere relaties voorkomen 11
    20. 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. 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
    22. 22. 12
    23. 23. (n-)tupel over de attributen X = { A1, ..., An } 12
    24. 24. (n-)tupel over de attributen X = { A1, ..., An } 12
    25. 25. (n-)tupel over de attributen X = { A1, ..., An } • T = { (A1,w1), ..., (An,wn) } met elke wi ∈ DOM ( Ai ) of wi = null 12
    26. 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. 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
    28. 28. 13
    29. 29. < (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) > 13
    30. 30. < (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) > of < (Leeftijd, Lengte, Gewicht), (4, 104, 17) > 13
    31. 31. < (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) > of < (Leeftijd, Lengte, Gewicht), (4, 104, 17) > of (4, 104, 17) 13
    32. 32. 14
    33. 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. 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
    35. 35. 15
    36. 36. • één atomaire waarde per attribuut • geen meerwaardige attributen • geen samengestelde attributen • alternatief: genest relationeel model 15
    37. 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
    38. 38. 16
    39. 39. • Relatieschema met graad n: R(A1, ..., An) 16
    40. 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. 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. 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. 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. 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. 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. 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
    47. 47. 17
    48. 48. r={ < 5, "Karel Goossens", "Naamsestraat", "108", 3000, "Leuven“ >, < 12, "Sofie Vandale", "Rijselstraat", "33", 8500, "Kortrijk“ >, < 34, "Frans Haerden", "Tiensestraat", "12", 3000, "Leuven” > } 17
    49. 49. r={ < 5, "Karel Goossens", "Naamsestraat", "108", 3000, "Leuven“ >, < 12, "Sofie Vandale", "Rijselstraat", "33", 8500, "Kortrijk“ >, < 34, "Frans Haerden", "Tiensestraat", "12", 3000, "Leuven” > } 17
    50. 50. 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“> 17
    51. 51. 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“> 17
    52. 52. 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“ > 17
    53. 53. company
    54. 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
    55. 55. 20
    56. 56. 21
    57. 57. 22
    58. 58. • regulier entiteitstype → relatie met alle enkelvoudige attributen • kies sleutelattribuut(en) 22
    59. 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. 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. 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
    62. 62. 23
    63. 63. • binair N:M relatietype → relatie • beide sleutels als verwijssleutels en samen primaire sleutel • ook eventuele enkelvoudige attributen 23
    64. 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
    65. 65. Beperkingen
    66. 66. 25
    67. 67. • Domeinrestricties • beperken de mogelijke waarden van attributen • vb: leeftijd: geheel postief getal, tussen 18 en 65 25
    68. 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. 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
    70. 70. • relatieschema R(A1, ..., An), U = {A1, ..., An}
    71. 71. • relatieschema R(A1, ..., An), U = {A1, ..., An} • supersleutel K ⊆ U : • verzameling attributen die tupel van R ondubbelzinnig bepalen (in om het even welke extensie)
    72. 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) • kandidaatsleutel K • supersleutel K zonder overtollige attributen (er bestaat geen supersleutel K' ⊂ K)
    73. 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) • samengestelde sleutel (meer dan 1 attribuut) enkelvoudige sleutel (1 attribuut)
    74. 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) • primaire sleutel: gekozen uit kandidaatsleutels • andere kandidaatsleutels zijn alternatieve sleutels
    75. 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 • conventie: primaire sleutel onderstrepen in schema
    76. 76. 27
    77. 77. • Integriteit = juistheid en volledigheid van GB
    78. 78. • Integriteit = juistheid en volledigheid van GB • statica-regels: slaan op 1 toestand van GB • gelden in elke extensie
    79. 79. • 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
    80. 80. • attribuut-restricties • 1 NV-eis: domein van een attribuuut is enkelvoudig
    81. 81. • 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
    82. 82. • 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
    83. 83. • 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]
    84. 84. • 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. 85. 31
    86. 86. • domeinbeperkingen • vb. uurloon > 0 • vb. leeftijd > 23 uurloon > minimum_uurloon
    87. 87. 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 -verlagingen 33
    88. 88. • 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 restricties automatisch laten controleren door DBMS 34
    89. 89. Aanpassen
    90. 90. • tupel toevoegen • tupel weglaten • tupel wijzigen • integriteit moet gecontroleerd worden! 36
    91. 91. 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
    92. 92. 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
    93. 93. 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
    94. 94. Vragen...? 40

    ×