20130214 les gb2
TRANSCRIPT
http://www.slideshare.net/erik.duval
2
• 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, aanpassingen4
“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.”
5
http://www.fang.ece.ufl.edu/reject.html
een relatie Rop de verzamelingen V1 , ... Vn
is een deelverzameling van de productverzameling V1×...× Vn :R ⊆ V1 × ... × Vn
rood
geel
groen
S
M
L
KLEUR MAAT
6
KLEUR MAATrood Srood Mrood Lgeel Mgeel L
groen M
• 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
• 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
• 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)
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 -verlagingen29
• 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 restrictiesautomatisch laten controleren door DBMS
30
toevoegen
33
• 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
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 ingesteld34
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 controleren35
36
Thanks!
Questions?
http://erikduval.wordpress.com/@ErikDuval
• (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
EMPLOYEE
SexName
Ssn
Fname Minit Lname
Address
Bdate
Salary
DEPARTMENT
Number
LocationsName
PROJECT
Name
Number
LocationDEPENDENT
NameSex BirthDate
Relationship
WORKS_FOR
CONTROLS
MANAGES
StartDate
SUPERVISESHAS_DEP.
1N
11
1
N
supervisor supervisee1
N
1 NWORKS_ON
Hours
NM
1. voor elk regulier entiteitstype E:
• maak relatie R
• met alle enkelvoudige attributen van E
• kies één van sleutelattributen als primaire sleutel voor R
40
EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary
DEPARTMENT Dname, Dnumber
PROJECT Pname, Pnumber, Plocation
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
41
DEPENDENT Essn, Dependent_Name, Sex, Bdate, Relationship
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
42
DEPARTMENT Dname, Dnumber, Mgr_ssn, Mgr_start_date
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
43
EMPLOYEEFname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary,Super_ssn, Dno
PROJECT Pname, Pnumber, Plocation, Dnum
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
44
WORKS_ON Essn, Pno, Hours
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
45
DEPT_LOCATIONS Dnumber, Dlocation
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
• entiteitstype
• 1:1 of 1:N relationship type
• M:N relationship type
• n-aire relationship type
• enkelvoudig attribuut
• samengesteld attribuut
• meerwaardig attribuut
• value set
• sleutel attribuut48
relationeel model
• “entiteits” relatie
• verwijssleutel of relatie
• relatie met 2 verwijssleutels
• relatie met n verwijssleutels
• attribuut
• verzameling attributen
• relatie of verwijssleutel
• domein
• primaire sleutel
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
• 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 Lattr(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 Lmet 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