SlideShare uma empresa Scribd logo
1 de 88
Gegevensbanken
relationeel model
Prof. Erik Duval
2011 - 2012


                   1
http://www.slideshare.net/erik.duval




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




                            4
•   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
•   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
•   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
•   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
“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
KLEUR    MAAT              KLEUR   MAAT



 rood     S         rood                  S


 rood     M
 rood     L         geel
                                          M
  geel    M
  geel    L         groen
                                          L
groen     M
                6
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
7
8
9
10
•   U = { A1, ..., An } : verzameling van alle attributen
    •   globaal: attribuut kan in meerdere relaties voorkomen




                                  10
•   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
•   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
11
(n-)tupel over de attributen X = { A1, ..., An }




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




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


•   T = { (A1,w1), ..., (An,wn) }
    met 	

    elke wi ∈ DOM ( Ai ) of wi = null




                                   11
(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
(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
12
< (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) >




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

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




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

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

   (4, 104, 17)




                                 12
13
• 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
• 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
14
• één atomaire waarde per attribuut
  • geen meerwaardige attributen
  • geen samengestelde attributen
  • alternatief: genest relationeel model




                             14
• éé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
15
• Relatieschema met graad n: R(A1, ..., An)




                               15
• 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
• 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
• 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
• 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
• 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
• 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
• 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
16
r={
< 5, "Karel Goossens", "Naamsestraat", "108", 3000, "Leuven“ >,
< 12, "Sofie Vandale", "Rijselstraat", "33", 8500, "Kortrijk“ >,
< 34, "Frans Haerden", "Tiensestraat", "12", 3000, "Leuven” >
}




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




                             16
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“>




                             16
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“>




                             16
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
19
Beperkingen
21
• Domeinrestricties
   • beperken de mogelijke waarden van attributen
   • vb: leeftijd: geheel postief getal, tussen 18 en 65




                                 21
• Domeinrestricties
   • beperken de mogelijke waarden van attributen
   • vb: leeftijd: geheel postief getal, tussen 18 en 65
• Sleutelrestricties
   • waarden van sleutels moeten uniek zijn




                                 21
• 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
• relatieschema R(A1, ..., An), U = {A1, ..., An}
• relatieschema R(A1, ..., An), U = {A1, ..., An}
• supersleutel K ⊆ U :
   • verzameling attributen die tupel van R ondubbelzinnig
        bepalen (in om het even welke extensie)
• 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)
• 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)
• 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
• 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
23
• Integriteit = juistheid en volledigheid van GB
• Integriteit = juistheid en volledigheid van GB
• statica-regels: slaan op 1 toestand van GB
    • gelden in elke extensie
• 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
• 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
• 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]
• 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)
27
• 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 -verlagingen
                                29
•   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

                          30
Aanpassen
•   tupel toevoegen
•   tupel weglaten
•   tupel wijzigen


•   integriteit moet gecontroleerd worden!




                       32
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
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
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
http://emurgency.eu/             http://www.role-project.eu/   http://www.stellarnet.eu/




                  Questions?
                       http://erikduval.wordpress.com/
                                  @ErikDuval


                          Thanks!          36

Mais conteúdo relacionado

Mais de Erik Duval

InfoVis1415: slides sessie 12, 18 mei 2015
InfoVis1415: slides sessie 12, 18 mei 2015InfoVis1415: slides sessie 12, 18 mei 2015
InfoVis1415: slides sessie 12, 18 mei 2015Erik Duval
 
InfoVis1415: slides sessie 11, 11 mei 2015
InfoVis1415: slides sessie 11, 11 mei 2015InfoVis1415: slides sessie 11, 11 mei 2015
InfoVis1415: slides sessie 11, 11 mei 2015Erik Duval
 
InfoVis1415: slides sessie 10, 4 mei 2015
InfoVis1415: slides sessie 10, 4 mei 2015InfoVis1415: slides sessie 10, 4 mei 2015
InfoVis1415: slides sessie 10, 4 mei 2015Erik Duval
 
Evaluation
 of information visualisation
Evaluation
 of information visualisationEvaluation
 of information visualisation
Evaluation
 of information visualisationErik Duval
 
InfoVis1415: slides sessie 9, 27 april 2015
InfoVis1415: slides sessie 9, 27 april 2015InfoVis1415: slides sessie 9, 27 april 2015
InfoVis1415: slides sessie 9, 27 april 2015Erik Duval
 
Social Media and Science a wedding made in Heaven...
 or in Hell?
Social Media and Science a wedding made in Heaven...
 or in Hell?Social Media and Science a wedding made in Heaven...
 or in Hell?
Social Media and Science a wedding made in Heaven...
 or in Hell?Erik Duval
 
Information visualisation: 
Data ink design principles
Information visualisation: 
Data ink design principlesInformation visualisation: 
Data ink design principles
Information visualisation: 
Data ink design principlesErik Duval
 
InfoVis1415: slides sessie 8, 20 april 2015
InfoVis1415: slides sessie 8, 20 april 2015InfoVis1415: slides sessie 8, 20 april 2015
InfoVis1415: slides sessie 8, 20 april 2015Erik Duval
 
A short history (and even shorter future)
 of information visualisation
A short history (and even shorter future)
 of information visualisationA short history (and even shorter future)
 of information visualisation
A short history (and even shorter future)
 of information visualisationErik Duval
 
InfoVis1415: slides sessie 7, 30 March 2015
InfoVis1415: slides sessie 7, 30 March 2015InfoVis1415: slides sessie 7, 30 March 2015
InfoVis1415: slides sessie 7, 30 March 2015Erik Duval
 
InfoVis1415: slides sessie 6, 23 March 2015
InfoVis1415: slides sessie 6, 23 March 2015InfoVis1415: slides sessie 6, 23 March 2015
InfoVis1415: slides sessie 6, 23 March 2015Erik Duval
 
History of Human Computer Interaction
History of Human Computer InteractionHistory of Human Computer Interaction
History of Human Computer InteractionErik Duval
 
InfoVis1415: slides sessie 5, 9 March 2015
InfoVis1415: slides sessie 5, 9 March 2015InfoVis1415: slides sessie 5, 9 March 2015
InfoVis1415: slides sessie 5, 9 March 2015Erik Duval
 
InfoVis1415: slides sessie 4, 2 March 2015
InfoVis1415: slides sessie 4, 2 March 2015InfoVis1415: slides sessie 4, 2 March 2015
InfoVis1415: slides sessie 4, 2 March 2015Erik Duval
 
InfoVis1415: slides sessie 3, 23 Feb 2015
InfoVis1415: slides sessie 3, 23 Feb 2015InfoVis1415: slides sessie 3, 23 Feb 2015
InfoVis1415: slides sessie 3, 23 Feb 2015Erik Duval
 
InfoVis1415: slides sessie 2, 16 Feb 2015
InfoVis1415: slides sessie 2, 16 Feb 2015InfoVis1415: slides sessie 2, 16 Feb 2015
InfoVis1415: slides sessie 2, 16 Feb 2015Erik Duval
 
Technology that makes HUMANS smarter
Technology that makes HUMANS smarterTechnology that makes HUMANS smarter
Technology that makes HUMANS smarterErik Duval
 
InfoVis1415: slides sessie 1, 10 Feb 2015
InfoVis1415: slides sessie 1, 10 Feb 2015InfoVis1415: slides sessie 1, 10 Feb 2015
InfoVis1415: slides sessie 1, 10 Feb 2015Erik Duval
 
201502010 pen ocw_les1_erik
201502010 pen ocw_les1_erik201502010 pen ocw_les1_erik
201502010 pen ocw_les1_erikErik Duval
 
Inleiding Human Computer Interaction
Inleiding Human Computer InteractionInleiding Human Computer Interaction
Inleiding Human Computer InteractionErik Duval
 

Mais de Erik Duval (20)

InfoVis1415: slides sessie 12, 18 mei 2015
InfoVis1415: slides sessie 12, 18 mei 2015InfoVis1415: slides sessie 12, 18 mei 2015
InfoVis1415: slides sessie 12, 18 mei 2015
 
InfoVis1415: slides sessie 11, 11 mei 2015
InfoVis1415: slides sessie 11, 11 mei 2015InfoVis1415: slides sessie 11, 11 mei 2015
InfoVis1415: slides sessie 11, 11 mei 2015
 
InfoVis1415: slides sessie 10, 4 mei 2015
InfoVis1415: slides sessie 10, 4 mei 2015InfoVis1415: slides sessie 10, 4 mei 2015
InfoVis1415: slides sessie 10, 4 mei 2015
 
Evaluation
 of information visualisation
Evaluation
 of information visualisationEvaluation
 of information visualisation
Evaluation
 of information visualisation
 
InfoVis1415: slides sessie 9, 27 april 2015
InfoVis1415: slides sessie 9, 27 april 2015InfoVis1415: slides sessie 9, 27 april 2015
InfoVis1415: slides sessie 9, 27 april 2015
 
Social Media and Science a wedding made in Heaven...
 or in Hell?
Social Media and Science a wedding made in Heaven...
 or in Hell?Social Media and Science a wedding made in Heaven...
 or in Hell?
Social Media and Science a wedding made in Heaven...
 or in Hell?
 
Information visualisation: 
Data ink design principles
Information visualisation: 
Data ink design principlesInformation visualisation: 
Data ink design principles
Information visualisation: 
Data ink design principles
 
InfoVis1415: slides sessie 8, 20 april 2015
InfoVis1415: slides sessie 8, 20 april 2015InfoVis1415: slides sessie 8, 20 april 2015
InfoVis1415: slides sessie 8, 20 april 2015
 
A short history (and even shorter future)
 of information visualisation
A short history (and even shorter future)
 of information visualisationA short history (and even shorter future)
 of information visualisation
A short history (and even shorter future)
 of information visualisation
 
InfoVis1415: slides sessie 7, 30 March 2015
InfoVis1415: slides sessie 7, 30 March 2015InfoVis1415: slides sessie 7, 30 March 2015
InfoVis1415: slides sessie 7, 30 March 2015
 
InfoVis1415: slides sessie 6, 23 March 2015
InfoVis1415: slides sessie 6, 23 March 2015InfoVis1415: slides sessie 6, 23 March 2015
InfoVis1415: slides sessie 6, 23 March 2015
 
History of Human Computer Interaction
History of Human Computer InteractionHistory of Human Computer Interaction
History of Human Computer Interaction
 
InfoVis1415: slides sessie 5, 9 March 2015
InfoVis1415: slides sessie 5, 9 March 2015InfoVis1415: slides sessie 5, 9 March 2015
InfoVis1415: slides sessie 5, 9 March 2015
 
InfoVis1415: slides sessie 4, 2 March 2015
InfoVis1415: slides sessie 4, 2 March 2015InfoVis1415: slides sessie 4, 2 March 2015
InfoVis1415: slides sessie 4, 2 March 2015
 
InfoVis1415: slides sessie 3, 23 Feb 2015
InfoVis1415: slides sessie 3, 23 Feb 2015InfoVis1415: slides sessie 3, 23 Feb 2015
InfoVis1415: slides sessie 3, 23 Feb 2015
 
InfoVis1415: slides sessie 2, 16 Feb 2015
InfoVis1415: slides sessie 2, 16 Feb 2015InfoVis1415: slides sessie 2, 16 Feb 2015
InfoVis1415: slides sessie 2, 16 Feb 2015
 
Technology that makes HUMANS smarter
Technology that makes HUMANS smarterTechnology that makes HUMANS smarter
Technology that makes HUMANS smarter
 
InfoVis1415: slides sessie 1, 10 Feb 2015
InfoVis1415: slides sessie 1, 10 Feb 2015InfoVis1415: slides sessie 1, 10 Feb 2015
InfoVis1415: slides sessie 1, 10 Feb 2015
 
201502010 pen ocw_les1_erik
201502010 pen ocw_les1_erik201502010 pen ocw_les1_erik
201502010 pen ocw_les1_erik
 
Inleiding Human Computer Interaction
Inleiding Human Computer InteractionInleiding Human Computer Interaction
Inleiding Human Computer Interaction
 

Relationeel Model

  • 4. 4
  • 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
  • 13. 7
  • 14. 8
  • 15. 9
  • 16. 10
  • 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
  • 20. 11
  • 21. (n-)tupel over de attributen X = { A1, ..., An } 11
  • 22. (n-)tupel over de attributen X = { A1, ..., An } 11
  • 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
  • 26. 12
  • 27. < (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) > 12
  • 28. < (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) > of < (Leeftijd, Lengte, Gewicht), (4, 104, 17) > 12
  • 29. < (Leeftijd, 4), (Lengte, 104), (Gewicht, 17) > of < (Leeftijd, Lengte, Gewicht), (4, 104, 17) > of (4, 104, 17) 12
  • 30. 13
  • 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
  • 33. 14
  • 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
  • 36. 15
  • 37. • Relatieschema met graad n: R(A1, ..., An) 15
  • 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
  • 45. 16
  • 46. r={ < 5, "Karel Goossens", "Naamsestraat", "108", 3000, "Leuven“ >, < 12, "Sofie Vandale", "Rijselstraat", "33", 8500, "Kortrijk“ >, < 34, "Frans Haerden", "Tiensestraat", "12", 3000, "Leuven” > } 16
  • 47. r={ < 5, "Karel Goossens", "Naamsestraat", "108", 3000, "Leuven“ >, < 12, "Sofie Vandale", "Rijselstraat", "33", 8500, "Kortrijk“ >, < 34, "Frans Haerden", "Tiensestraat", "12", 3000, "Leuven” > } 16
  • 48. 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“> 16
  • 49. 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“> 16
  • 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“> t [ Nr , Naam ] = < 5, "Karel Goossens“ > 16
  • 52. 18
  • 53. 19
  • 55. 21
  • 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
  • 59.
  • 60. • relatieschema R(A1, ..., An), U = {A1, ..., An}
  • 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
  • 66. 23
  • 67.
  • 68. • Integriteit = juistheid en volledigheid van GB
  • 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
  • 71.
  • 72. • attribuut-restricties • 1 NV-eis: domein van een attribuuut is enkelvoudig
  • 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)
  • 78. 27
  • 79.
  • 80. • domeinbeperkingen • vb. uurloon > 0 • vb. leeftijd > 23 uurloon > minimum_uurloon
  • 81. 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 29
  • 82. 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 30
  • 84. tupel toevoegen • tupel weglaten • tupel wijzigen • integriteit moet gecontroleerd worden! 32
  • 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
  • 88. http://emurgency.eu/ http://www.role-project.eu/ http://www.stellarnet.eu/ Questions? http://erikduval.wordpress.com/ @ErikDuval Thanks! 36

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n