SlideShare a Scribd company logo
1 of 54
Download to read offline
Gegevensbanken
relationeel model
Prof. Erik Duval
2012 - 2013


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




     2
relationeel model?
•   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
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
•   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
(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
• tupels zijn niet geordend
• attributen zijn niet geordend
  • behalve in notatie <w1, ..., wn>
• elk tupel komt max. 1 keer voor in een relatie




                           13
• éé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
• Q, R, S: 	

relatienamen
• q, r, s: 	

 	

 instanties
• t, u, v, w: 	

 tupels

• Andere notatie voor attribuut A van relatie R: R.A



                                15
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
• 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}
• 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
• 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
   • 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)
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
Questions?
 http://erikduval.wordpress.com/
            @ErikDuval




   Thanks!      36
(E)ER naar relationeel
       schema



          37
•   (E)ER schema afbeelden op relationele model?
    •   entiteitstypes
        (regulier, zwak)
    •   relatietypes
        (binaire of hogere graad)
    •   attributen
        (enkelvoudig, samengesteld, meerwaardig)
    •   restricties

•   ER	

 → relationeel

•   EER	

 → relationeel
                           38
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

                                                          39
1. voor elk regulier entiteitstype E:
 •   maak relatie R
 •   met alle enkelvoudige attributen van E
 •   kies één van sleutelattributen als primaire sleutel voor R

         EMPLOYEE
          Fname, Minit, Lname, Ssn, Bdate, Address,
         Sex, Salary

         DEPARTMENT
          Dname, Dnumber

         PROJECT
          Pname, Pnumber, Plocation
                               40
stap 2. voor elk zwak entiteitstype W:
 •   maak een relatie R
 •   met alle enkelvoudige attributen van W
 •   en als verwijssleutel de primaire sleutel van eigenaar




     DEPENDENT
      Essn, Dependent_Name, Sex, Bdate, Relationship



                              41
stap 3. voor elk binair 1:1 relatietype R:
 • S en T relaties voor deelnemende entiteitstypes van R
 • neem primaire sleutel van T op als verwijssleutel in S
     (of omgekeerd) - vermijd nul-waarden
 • neem ook enkelvoudige attributen op



         DEPARTMENT
          Dname, Dnumber, Mgr_ssn, Mgr_start_date



                               42
stap 4. voor elk binair 1:N relatietype R:
     • S relatie die entiteitstype van N-kant voorstelt
     • voeg in S primaire sleutel relatie aan 1-kant toe
     • neem ook enkelvoudige attributen op

EMPLOYEE
  Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary,
  Super_ssn, Dno

PROJECT
 Pname, Pnumber, Plocation, Dnum


                                  43
stap 5. voor elk binair N:M relatietype R:
 • maak nieuwe relatie S
 • met verwijssleutels primaire sleutels van deelnemende
     relaties
 • met verwijssleutels samen als primaire sleutel
 • neem ook enkelvoudige attributen van R op


                     WORKS_ON
                      Essn, Pno, Hours



                              44
stap 6. voor elk meerwaardig attribuut A:
 •   creëer een relatie R
 •   met attribuut dat overeenkomt met A
 •   + verwijssleutel: primaire sleutel K van bijhorende relatie
 •   als primaire sleutel: A en K samen



                    DEPT_LOCATIONS
                     Dnumber, Dlocation



                              45
46
Stap 7: voor elk n-air relatietype R (n>2) :
 • maak nieuwe relatie S
 • met verwijssleutels: primaire sleutels van deelnemende
     entiteitstypes
 • met alle enkelvoudige attributen van R
 • met primaire sleutel: alle verwijssleutels samen




                               47
ER model                                relationeel model
•   entiteitstype                       •   “entiteits” relatie
•   1:1 of 1:N relationship type        •   verwijssleutel of relatie
•   M:N relationship type               •   relatie met 2 verwijssleutels
•   n-aire relationship type            •   relatie met n verwijssleutels
•   enkelvoudig attribuut               •   attribuut
•   samengesteld attribuut              •   verzameling attributen
•   meerwaardig attribuut               •   relatie of verwijssleutel
•   value set                           •   domein
•   sleutel attribuut                   •   primaire sleutel
                                   48
Stap 8: behandeling van super/subklasse-relaties
• Elke specialisatie met m subklassen { S1, S2,..., Sm }
    en superklasse C met attributen { k, a1, ..., an }
• Optie 8A
  • maak relatie L voor C met attr(L) = { k, a1, ..., an }
    • en primaire sleutel PK(L) = k
  • en relaties Li voor elke subklasse Si met
    • attr(Li) = { k } ∪ { attr(Si) }
    • en PK(Li) = k
                                  49
50
• Optie 8B
    • maak voor elke subklasse Si een relatie Li
          met attr(Li) = { attr(Si) } ∪ { k, a1, ..., an }
          en PK(Li) = k
      • werkt enkel correct voor disjuncte, totale specialisatie
      • niet totale specialisatie	

 → verlies van gegevens (∉ Si)
      • niet disjuncte specialisatie 	

→ redundantie




                                   51
• Optie 8C: één relatie L
   attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en
   PK(L) = k
• waarbij t duidt aan tot welke subklasse elk tupel behoort
  • weggelaten als specialisatie predikaatgedefinieerd
  • enkel voor disjuncte subklassen
  • veel verschillende attributen in subklassen: veel nul




                                    52
• Optie 8D: één relatie L
   met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) }
   ∪ { t1, t2, ..., tm } en PK(L) = k
   • ti, 1≤ i ≤ m is boolean die aangeeft of entiteit in Si zit
• gebruikt voor overlappende subklassen
• ook hier gevaar voor veel nulwaarden




                                    53
Vragen...?

    54

More Related Content

Viewers also liked

Extra credit for snb resources tech snack
Extra credit for snb resources tech snackExtra credit for snb resources tech snack
Extra credit for snb resources tech snack
algona81
 
Capita selecta: inleiding
Capita selecta: inleidingCapita selecta: inleiding
Capita selecta: inleiding
Erik Duval
 
How To Use Smart Recorder
How To Use Smart RecorderHow To Use Smart Recorder
How To Use Smart Recorder
algona81
 
Ace HR Services Presantation at BHRMDA 8th International Conference
Ace HR Services Presantation at BHRMDA 8th International ConferenceAce HR Services Presantation at BHRMDA 8th International Conference
Ace HR Services Presantation at BHRMDA 8th International Conference
Margarita Evtimova
 
About the CHI course
About the CHI courseAbout the CHI course
About the CHI course
Erik Duval
 
Neptune Report
Neptune ReportNeptune Report
Neptune Report
algona81
 
20130219 chi cursus
20130219 chi cursus20130219 chi cursus
20130219 chi cursus
Erik Duval
 
Capita selecta: les 1
Capita selecta: les 1Capita selecta: les 1
Capita selecta: les 1
Erik Duval
 

Viewers also liked (20)

Jason Rhode Dissertation Overview
Jason Rhode Dissertation OverviewJason Rhode Dissertation Overview
Jason Rhode Dissertation Overview
 
Extra credit for snb resources tech snack
Extra credit for snb resources tech snackExtra credit for snb resources tech snack
Extra credit for snb resources tech snack
 
Interactive Seminars: Goals in Google Analytics
Interactive Seminars: Goals in Google AnalyticsInteractive Seminars: Goals in Google Analytics
Interactive Seminars: Goals in Google Analytics
 
Inleiding Human Computer Interaction
Inleiding Human Computer InteractionInleiding Human Computer Interaction
Inleiding Human Computer Interaction
 
Smart board connections
Smart board connectionsSmart board connections
Smart board connections
 
Capita selecta: inleiding
Capita selecta: inleidingCapita selecta: inleiding
Capita selecta: inleiding
 
How To Use Smart Recorder
How To Use Smart RecorderHow To Use Smart Recorder
How To Use Smart Recorder
 
Business Game Factory
Business Game FactoryBusiness Game Factory
Business Game Factory
 
Open Educational Resources
Open Educational ResourcesOpen Educational Resources
Open Educational Resources
 
Ace HR Services Presantation at BHRMDA 8th International Conference
Ace HR Services Presantation at BHRMDA 8th International ConferenceAce HR Services Presantation at BHRMDA 8th International Conference
Ace HR Services Presantation at BHRMDA 8th International Conference
 
Assessment Assumptions
Assessment AssumptionsAssessment Assumptions
Assessment Assumptions
 
Learning analytics
Learning analyticsLearning analytics
Learning analytics
 
New Teachers Jc
New Teachers JcNew Teachers Jc
New Teachers Jc
 
Creating & Sustaining Groups in Blackboard
Creating & Sustaining Groups in BlackboardCreating & Sustaining Groups in Blackboard
Creating & Sustaining Groups in Blackboard
 
About the CHI course
About the CHI courseAbout the CHI course
About the CHI course
 
Rock on SLATE! An Up Close Look at How a Blackboard User Group Has Impacted T...
Rock on SLATE! An Up Close Look at How a Blackboard User Group Has Impacted T...Rock on SLATE! An Up Close Look at How a Blackboard User Group Has Impacted T...
Rock on SLATE! An Up Close Look at How a Blackboard User Group Has Impacted T...
 
Neptune Report
Neptune ReportNeptune Report
Neptune Report
 
20130219 chi cursus
20130219 chi cursus20130219 chi cursus
20130219 chi cursus
 
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
 
Capita selecta: les 1
Capita selecta: les 1Capita selecta: les 1
Capita selecta: les 1
 

More from Erik 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 2015
Erik Duval
 

More from Erik Duval (20)

eCloud newspapers
eCloud newspaperseCloud newspapers
eCloud newspapers
 
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
 
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
 
PenO1: tools
PenO1: toolsPenO1: tools
PenO1: tools
 

20130214 les gb2

  • 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
  • 5. “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
  • 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. 7
  • 8. 8
  • 9. 9
  • 10. 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
  • 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) > of < (Leeftijd, Lengte, Gewicht), (4, 104, 17) > of (4, 104, 17) 12
  • 13. • tupels zijn niet geordend • attributen zijn niet geordend • behalve in notatie <w1, ..., wn> • elk tupel komt max. 1 keer voor in een relatie 13
  • 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. • 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” > } t = <5,"Karel Goossens","Naamsestraat","108", 3001,"Leuven“> t [ Nr , Naam ] = < 5, "Karel Goossens“ > 16
  • 18. 18
  • 19. 19
  • 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
  • 22. • 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. 23
  • 24. • 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
  • 25. • attribuut-restricties • 1 NV-eis: domein van een attribuuut is enkelvoudig • entiteit-restricties • tupel mag niet meer dan 1 keer voorkomen in extensie • 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
  • 26. • 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. 27
  • 28. • domeinbeperkingen • vb. uurloon > 0 • vb. leeftijd > 23 uurloon > minimum_uurloon
  • 29. 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
  • 30. 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
  • 32. tupel toevoegen • tupel weglaten • tupel wijzigen • integriteit moet gecontroleerd worden! 32
  • 33. 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
  • 34. 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
  • 35. 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
  • 38. (E)ER schema afbeelden op relationele model? • entiteitstypes (regulier, zwak) • relatietypes (binaire of hogere graad) • attributen (enkelvoudig, samengesteld, meerwaardig) • restricties • ER → relationeel • EER → relationeel 38
  • 39. 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 39
  • 40. 1. voor elk regulier entiteitstype E: • maak relatie R • met alle enkelvoudige attributen van E • kies één van sleutelattributen als primaire sleutel voor R EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary DEPARTMENT Dname, Dnumber PROJECT Pname, Pnumber, Plocation 40
  • 41. stap 2. voor elk zwak entiteitstype W: • maak een relatie R • met alle enkelvoudige attributen van W • en als verwijssleutel de primaire sleutel van eigenaar DEPENDENT Essn, Dependent_Name, Sex, Bdate, Relationship 41
  • 42. stap 3. voor elk binair 1:1 relatietype R: • S en T relaties voor deelnemende entiteitstypes van R • neem primaire sleutel van T op als verwijssleutel in S (of omgekeerd) - vermijd nul-waarden • neem ook enkelvoudige attributen op DEPARTMENT Dname, Dnumber, Mgr_ssn, Mgr_start_date 42
  • 43. stap 4. voor elk binair 1:N relatietype R: • S relatie die entiteitstype van N-kant voorstelt • voeg in S primaire sleutel relatie aan 1-kant toe • neem ook enkelvoudige attributen op EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno PROJECT Pname, Pnumber, Plocation, Dnum 43
  • 44. stap 5. voor elk binair N:M relatietype R: • maak nieuwe relatie S • met verwijssleutels primaire sleutels van deelnemende relaties • met verwijssleutels samen als primaire sleutel • neem ook enkelvoudige attributen van R op WORKS_ON Essn, Pno, Hours 44
  • 45. stap 6. voor elk meerwaardig attribuut A: • creëer een relatie R • met attribuut dat overeenkomt met A • + verwijssleutel: primaire sleutel K van bijhorende relatie • als primaire sleutel: A en K samen DEPT_LOCATIONS Dnumber, Dlocation 45
  • 46. 46
  • 47. Stap 7: voor elk n-air relatietype R (n>2) : • maak nieuwe relatie S • met verwijssleutels: primaire sleutels van deelnemende entiteitstypes • met alle enkelvoudige attributen van R • met primaire sleutel: alle verwijssleutels samen 47
  • 48. ER model relationeel model • entiteitstype • “entiteits” relatie • 1:1 of 1:N relationship type • verwijssleutel of relatie • M:N relationship type • relatie met 2 verwijssleutels • n-aire relationship type • relatie met n verwijssleutels • enkelvoudig attribuut • attribuut • samengesteld attribuut • verzameling attributen • meerwaardig attribuut • relatie of verwijssleutel • value set • domein • sleutel attribuut • primaire sleutel 48
  • 49. Stap 8: behandeling van super/subklasse-relaties • Elke specialisatie met m subklassen { S1, S2,..., Sm } en superklasse C met attributen { k, a1, ..., an } • Optie 8A • maak relatie L voor C met attr(L) = { k, a1, ..., an } • en primaire sleutel PK(L) = k • en relaties Li voor elke subklasse Si met • attr(Li) = { k } ∪ { attr(Si) } • en PK(Li) = k 49
  • 50. 50
  • 51. • Optie 8B • maak voor elke subklasse Si een relatie Li met attr(Li) = { attr(Si) } ∪ { k, a1, ..., an } en PK(Li) = k • werkt enkel correct voor disjuncte, totale specialisatie • niet totale specialisatie → verlies van gegevens (∉ Si) • niet disjuncte specialisatie → redundantie 51
  • 52. • Optie 8C: één relatie L attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en PK(L) = k • waarbij t duidt aan tot welke subklasse elk tupel behoort • weggelaten als specialisatie predikaatgedefinieerd • enkel voor disjuncte subklassen • veel verschillende attributen in subklassen: veel nul 52
  • 53. • Optie 8D: één relatie L met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t1, t2, ..., tm } en PK(L) = k • ti, 1≤ i ≤ m is boolean die aangeeft of entiteit in Si zit • gebruikt voor overlappende subklassen • ook hier gevaar voor veel nulwaarden 53