Document

Werbung
2Relationenmodell
InformationssystemefürIngenieure
Herbstsemester 2016
“There is nothing more practical than a good theory.”
-- James C. Maxwell
“In theory, there is no difference between practice and theory.
But in practice, there is.”
-- Jan L.A. van de Snepscheut
R.Marti
ZieldesKapitels
• KenntnisdesRelationenmodells,einemDatenmodell,welchesunabhängigvonComputerHardwareundSoftware(inkl.physischenSpeicherstrukturen)definiertist,insbesondereder
wesentlichstenBegriffefür
–
dieDeklarationvonRelationenalsMengevonDatensätzen(Tupeln)
–
dieDeklarationwichtigerIntegritätsbedingungen zurErhöhungderDatenqualität
–
dieDefinitionvonAusdrückenderRelationenalgebra,dieeserlaubt,OperationenaufMengenvonTupeln
auszuführen,diezurBeantwortungvonAnfragenverwendetwerdenkönnen
GrundfürdieVermittlungdiesesStoffs
• DasRelationenmodellbildetdietheoretischeGrundlagerelationalerDatenbanken,diein
derPraxissehrgrosseVerbreitunghaben.
• EtlicheIdeendesRelationenmodellsflossen/fliessenauchin"modernere"
Datenbanksystemeein,u.a.inobjektorientierteDatenbanksysteme,XMLDaten,
sowieinAnfragesprachenwieHiveQLauf"BigData"File-SystemenwieHadoop
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
2
Grundlage:MathematischeRelationenundTupel
• Das Relationenmodell(auchrelationalesModell genannt)basiertaufdemKonzeptder
mathematischenRelation:
• Inder"reinenMathematik"isteinen-stelligeRelation R (relation of arity n)
eineTeilmengedeskartesischenProduktesvonn (nichtnotwendigerweiseverschiedenen)
MengenD1, D2, ... , Dn (mitn > 0):
R Í D1 ´ D2 ´ ... ´ Dn
RelationenderStelligkeit n = 1 heissenauchunär(unary).
RelationenderStelligkeit n = 2 heissenauchbinär(binary).
RelationenderStelligkeit n = 3 heissenauchternär(ternary).
• EinElement<d1, d2, ... , dn>Î R (mit di Î Di für 1 ≤ i ≤ n) wirdInder"reinen
Mathematik"als(n-)Tupel bezeichnet.
• Achtung:Indieser"reinenMathematikNotation"spieltdieReihenfolgederMengenDi
bzw.ihrerElementedi eineRolle!
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
3
ZurGeschichtedesRelationenmodells
• FürDatenbankenwurdedasRelationenmodell 1969ineinemIBM ResearchReportvom
englischenMathematikerEdgarF.Codd (1923−2003)vorgestelltund
1970ineinemangesehenenJournalpubliziert:
ARelationalModelforLargeSharedDataBanks,CommunicationsoftheACM,1970.
• DasPapierhat– zusammenmitCodd'sweiterenArbeiten1971,1972und1974– die
Datenbank-Technologierevolutioniert:
– DasRelationenmodellwardasersteDatenmodell,dasunabhängigvonderphysischen
Speicherungdefiniertwurde(vgl.physischeDatenunabhängigkeitinKap1).
– Codd'sAbfragesprache(Alpha)warwedersatzorientiertnochprozedural(wieheutenoch
praktischalleProgrammiersprachen),sondernmengenorientiert unddeklarativ.
• DieIdeewurdewegenZweifelnanderRealisierbarkeiteinesperformantenrelationalenDBMS
skeptischaufgenommen.ZudemwollteIBM ihrProduktIMS/DB nichtkonkurrenzieren.
• Mitteder70-erJahreexisitiertenerstePrototypenrelationalerSysteme:
PRTV undSYSTEM/R beiIBM ,INGRES anderUniversityofCaliforniainBerkeley
• Codderhielt1981denACM TouringAward.(≈"Nobel-PreisfürInformatiker")
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
4
Definition:Domäne
• Domäne (auchWertebereich,engl.:domain):
EineMengevon(atomaren)Werten,wobeizujederDomäneimplizitauchder
spezielleWertnull gehört,derfürfehlendeWertesteht.
InderTheoriekönntenwirunsz.B.folgendeDomänenvorstellen:
SwissCities = { Aarau, Basel, Bern, ... , Zürich }
BodyHeights = { 30, 31, 32, ... , 250 }
EyeColors = { Blue, Brown, Green, Grey }
InderPraxisentsprichteineDomänejedochimwesentlicheneinem
(unstrukturierten) DatentypeinerhöherenProgrammiersprache:
ganzeZahlen(Integer),
Gleitkommazahlen(Float)
ZeichenkettenvariablerLänge(Text)[auchString genannt]
DatumundZeitAngaben(Date,Time)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
5
Definitionen:(DB-)Relation,Attribut
Gegebenseienm nichtnotwendigerweiseverschiedeneDomänen D1, ... , Dm .
• Eine(Datenbank-) Relation R bestehtaus
1. einemRelationenschema sch(R) = { A1, ... , An } (mit n > 0)
wobeidieAi (mit 1 ≤ i ≤ n) Attribute heissenundjedemAttributAi
eineDomäneDj (mit 1 ≤ j ≤ m) zugeordnetwird:
dom(Ai) = Dj .[dom(Ai) bezeichnetdieDomänevonAi ]
DieAttributeeinerRelationsindverschieden,willheissen,siehaben
unterschiedliche(eindeutige)NameninnerhalbeinerRelation.
2. einerExtension(auchAusprägung,Instanz,Wert)ext(R) ,
fürdiezujedemZeitpunktgilt:
ext(R) Í dom(A1) ´ ... ´ dom(An)
DiesentsprichtdemKonzeptder"mathematischenRelation".
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
6
BeispieleinerRelation(1)
Attribut
(Domänenwerdenhiernichtgezeigt)
City
CityName
CountryCode Population
'Seoul'
'ROK'
10229262
'Mumbai'
'IND'
9925891
'Karachi'
'PK'
9863000
'Mexico?City'
'MEX'
9815795
'Sao?Paulo'
'BR'
9811776
Relationenschema:sch(City)
Ausprägung:ext(City)
KurznotationfürRelationenschemasch(City):
City( { CityName, CountryCode, Population } )
Esgilt:ext(City)
R.Marti
Í dom(CityName) ´ dom(CountryCode) ´ dom(Population)
= Text ´ Text ´ Integer
InformationssystemefürIngenieure2016 – 2Relationenmodell
7
BeispieleinerRelation(2)
ZweiDarstellungendergleichenRelationwieaufdervorangehendenSeite:
Links:
DieExtensioneinerRelationisteineMenge.
⇒ DieOrdnungderElementederExtension(sog.➛Tupel)istegal.
Rechts:
R.Marti
DasSchema einerRelationisteineMenge.
⇒ DieOrdnung der Attribute des Schemas ist (inderTheorie) egal.
InformationssystemefürIngenieure2016 – 2Relationenmodell
8
BeispieleinerRelation(3)
DasSchema einerRelationwirdimfolgendenalsunveränderlichbetrachtet.
InderPraxiskannsicheinSchemaüberdieZeitändern,wennauch"selten".
DieExtensioneinerRelationverändertsich(inallerRegel)überdieZeit.
SiekanninsbesondereauchkeineElementeodernureineinzigesElemententhalten.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
9
Achtung:DiessindkeineRelationen
AttributnamenmüsseninnerhalbeinerRelationeindeutigsein.
Borders
CountryCode CountryCode Length
'CH'
'D'
334
'CH'
'F'
573
'CH'
'I'
740
DoppelteElemente(Tupel)sind(in
derrelationalenTheorie) unzulässig.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
10
Definitionen:Tupel
• Tupel (tuple)
EinElementt derAusprägungext(R) einerRelationR:t Î ext(R).
• Beispiel:
City
CityName
CountryCode Population
...
...
'Mexico)City'
'MEX'
...
...
...
9815795
Tupel t
...
• AlsElementeinerRelationCity Í Text ´ Text ´ Integer inder"reinenMathematik"würde
diesesTupelals
< 'Mexico City', 'MEX', 9815795 >
dargestellt,dadieReihenfolgedortimGegensatzzuDB-RelationeneineRollespielt.
• Soferndiesnötigwird,bezeichnenwirdasobige(DB-)Tupelstattdessenwiefolgt:
< CityName: 'Mexico City', CountryCode: 'MEX', Population: 9815795 >
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
11
AbstraktesBeispieleinerRelation
Attribute
R
Tupel
A
B
1
'x'
2
'y'
3
'z'
(Relationen-)Schemasch(R)
RelationR
Ausprägung ext(R)
• Seit dasersteTupel(WerteingrünerSchrift)indieserDarstellungderRelationR.
Dannbezeichnett.A denAttributwert desAttributst.A vonTupelt .Esgilt:
t.A = 1 (und,analog,t.B = 'x' ).
(DieseNotationwirdineinigenderfolgendenDefinitionenverwendet.)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
12
BemerkungenzurNotation
Hinweis:ImBuchvonKemper&Eickler[KE] wirdteilweiseeineleichtunterschiedliche
Notationverwendet.Insbesondere:
• In[KE] enthältdieText-NotationfüreinSchemadieDomänen,z.B.
City : { [ CityName: Text, CountryCode: Text, Population: Integer ] }
anstellevon
City( { CityName, CountryCode, Population } )
• In[KE] wird- etwasunsauber- nichtzwischen(1)derRelationmitSchemaund
Ausprägung und(2)derAusprägungalleine unterschieden,z.B.stehtCity
sowohl fürsch(City) zusammenmitderAusprägungvonCity
wieauchfürdieAusprägungvonCity alleine.
IndiesemTextstehtCity fürSchema sch(City) mitAusprägung ext(City)
undext(City) fürdieAusprägungalleine.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
13
Attributwertemüssenatomarsein
RelationenmitstrukturiertenAttributen (wieMengen,ListenoderVektorenvon
Werten)sind verboten.
Student_illegal
FCode FacultyName
EnrolNo
Name
IT_Skills
'EC'
'Economy'
'10+250+7654' 'Scholes' {7'SQL'7}
'CS'
'Computer7Science'
'09+432+3456' 'Guttag' {7'Java',7'C',7Python'7}
'MA'
'Mathematics'
'12+777+4227' 'Gauss'
'CS'
'Computer7Science'
'11+839+5288' 'Cattell' {7'Java',7'SQL'7}
'EE'
'Electrical7Engineering' '10+773+2290' 'Myers'
{7}
{7'C',7'C++'7}
DerartigeunzulässigenRelationenheissenunnormalisiert.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
14
Normalisierung:Grundideeder1.Normalform(1NF)
BeimehrwertigenAttributen(wiez.B.IT_Skills) mussjederEinzelwertseparat
ineinemTupelgespeichertwerden.
Student_1NF
FCode FacultyName
EnrolNo
Konsequenzen:
'EC'
'Economy'
'10+250+7654' 'Scholes' 'SQL'
- Wiederholungen
(Redundanz)
'CS'
'Computer<Science'
'09+432+3456' 'Guttag' 'Java'
'CS'
'Computer<Science'
'09+432+3456' 'Guttag' 'C'
- Notwendigkeitvon
'CS'
'Computer<Science'
'09+432+3456' 'Guttag' 'Python'
Nullwerten (null)
'MA'
'Mathematics'
'12+777+4227' 'Gauss'
'CS'
'Computer<Science'
'11+839+5288' 'Cattell' 'Java'
'CS'
'Computer<Science'
'11+839+5288' 'Cattell' 'SQL'
'EE'
'Electrical<Engineering' '10+773+2290' 'Myers'
'C'
'EE'
'Electrical<Engineering' '10+773+2290' 'Myers'
'C++'
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
Name
IT_Skill
null
15
WeitereNormalisierung
Redundanz(undwennmöglichauchNullwerte) solltenvermiedenwerden!
Faustregeln(vgl.KapitelDatenbank-Entwurf):
- EigenschaftenvonObjekten,die"fürsichalleinstehenkönnen"(z.B.Faculty),
gehörenineineeigeneRelation
- jedemehrwertigeEigenschaftvonObjekten(z.B.IT_Skills)gehörtebenfalls
ineineeigeneRelation
Faculty
Student
IT_Skill
FCode FacultyName
EnrolNo
'EC'
'Economy'
'10$250$7654' 'Scholes' 'EC'
'10$250$7654' 'SQL'
'CS'
'Computer/Science'
'09$432$3456' 'Guttag' 'CS'
'09$432$3456' 'Java'
'MA'
'Mathematics'
'12$777$4227' 'Gauss'
'09$432$3456' 'C'
'EE'
'Electrical/Engineering'
'11$839$5288' 'Cattell' 'CS'
'09$432$3456' 'Python'
'10$773$2290' 'Myers'
'11$839$5288' 'Java'
Name
FCode
'MA'
'EE'
EnrolNo
IT_Skill
'11$839$5288' 'SQL'
ZusammenhängewerdendurchgleicheAttributwertein
verschiedenenRelationendargestellt(➛Fremdschlüssel):
- AttributFCode inFaculty undStudent
- AttributEnrolNo inStudent undIT_Skill
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
'10$773$2290' 'C'
'10$773$2290' 'C++'
16
Nichtempfohlen:Text-AttributemitspeziellerSyntax
MehrwertigeAttribute(Mengen,ListenoderVektoren)könntenalsTextmit
einerspeziellenSyntaxabgelegtwerden,indemz.B.einzelneWertedurch
einspeziellesSymbol(wiez.B.dasZeichen'|')getrenntwerden.
Diesistzwartechnischmöglichundnichtgrundätzlichverboten,
aber nichtempfohlen,insbesonderedaesdieFormulierungvonAnfragen
(undÄnderungsoperationen)komplexermacht.
Student_not_recommended
R.Marti
FCode FacultyName
EnrolNo
Name
IT_Skills
'EC'
'Economy'
'10+250+7654' 'Scholes' 'SQL'
'CS'
'Computer<Science'
'09+432+3456' 'Guttag' 'Java|C|Python'
'MA'
'Mathematics'
'12+777+4227' 'Gauss'
'CS'
'Computer<Science'
'11+839+5288' 'Cattell' 'Java|SQL'
'EE'
'Electrical<Engineering' '10+773+2290' 'Myers'
''
'C|C++'
InformationssystemefürIngenieure2016 – 2Relationenmodell
17
Definitionen:Datenbank
• EineDatenbank bestehtauseinerMengevon(DB-)Relationen.
• AufderkonzeptionellenEbenewerdenjeweils"logischzusammengehörige"
EigenschafteneinesTypsvonObjektensoineinerRelationgespeichert,dass
(möglichst)keineRedundanzenauftreten.
• Beispiele:
- Universität:
RelationenfürStudierende,Räume,Vorlesungen,Prüfungen,…
- Bank:
RelationenfürKunden,Konten,Angestellte,Finanzinstrumente,…
- Internet-Buchladen:
RelationenfürBücher,Lager,Lieferanten,Kunden,Bestellungen,…
• AufexternerEbenekönnenauchRelationenauftreten,dieEigenschaften
verschiedenerObjekteineinerRelationenthalten(inkl.Redundanzen).
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
18
Integritätsbedingungen
• Integritätsbedingungen sindEinschränkungenaufdenDaten,diealleAusprägungen
derDatenbankjederzeit erfüllenmüssen
• ImrelationalenModellgibtesdiefolgendenKlassenvonIntegritäts-bedingungen:
– Schlüssel (keys) und Entitätsintegrität (entityintegrity)
– Domänenintegrität (domainintegrity)
– ReferentielleIntegrität (referentialintegrity)
• DieobigenIntegritätsbedingungenwerdenvondenmeistenDBMSsautomatisch
überwacht.
• DieDefinitionvonIntegritätsbedingungenfördertdieDatenqualitätinDBs.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
19
Definition:Superschlüssel
SeiR eineRelationmitdemRelationenschemasch(R) = { A1, ... , An }
• EineMengeK Í { A1, ... , An } vonAttributenheisstSuperschlüssel (superkey),
wennfürzweibeliebigeTupelt1, t2 Î ext(R) jederzeit
(alsofürjedemöglicheAusprägungvonR) gilt:
t1.K = t2.K Þ t1 = t2
Bemerkung:t1.K = t2.K bedeutet:"A Î K: t1.A = t2.A
MitanderenWorten:
-
-
WennfürzweibeliebigeTupeleinerRelationallesichentsprechenden
AttributwerteAi imSuperschlüsselK gleichsind,dannsinddiebeiden
Tupelgleich.
bzw.:DieAttributwertevonK reichenaus,umdieTupelinR eindeutig
zuidentifizieren.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
20
Definition:SchlüsselkandidatundPrimärschlüssel
SeiK Í { A1, ... , An } einSuperschlüsseleinerRelationR mitdem
Relationenschemasch(R) = { A1, ... , An }
• DerSuperschlüsselK heisstSchlüsselkandidat (candidatekey),
wenneskeineechteTeilmengevonK gibt,dieauchSuperschlüsselist.
MitanderenWorten:
Wenn eskeineechteTeilmengevonK gibt,welchedieTupelinR eindeutig
identifizieren,
bzw.wenn K einminimaler Superschlüsselist,
dann istK einSchlüsselkandidat.
• JedeRelationbesitztimmermindestenseinenSchlüsselkandidaten.
Frage:Warum?
• EinerderSchlüsselkandidateneinerRelationR (vonallenfallsmehreren)wirdals
Primärschlüssel ausgezeichnet.
Dieserdientals"primärerMechanismus",umTupeleinerRelationR zuidentifizieren.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
21
Beispiel:Superschlüssel,SchlüsselkandidatenundPrimärschlüssel
GegebenseieineRelationEmployee ( { EmpNo, FamName, FstName } )
DerVerantwortlichefürdasPersonalwesenerklärt:
- EmpNo isteineLaufnummer,neueAngestelltebekommendienächsthöhereNummer.
- FamName istderFamiliennameeiner/einesAngestellten.
- FstName istderVornameeiner/einesAngstellten.
- Fernerwirdniemandeingestellt,dereinenNamen(Familien- undVorname)eines
existierendenAngestelltenträgt. [Obdiessinnvollist,seidahingestellt...]
Superschlüssel sinddemnach:
{ EmpNo, FamName, FstName }
{ EmpNo, FamName }
{ EmpNo, FstName }
{ EmpNo }
ß
{ FamName, FstName }
(alleAttributebezeichnenTupelimmereindeutig)
(EmpNo alleinebezeichnetTupelbereitseindeutig)
(EmpNo alleinebezeichnetTupelbereitseindeutig)
minimalerSuperschlüssel,somitSchlüsselkandidat
(Superschlüsselmitnur1Attributistimmerminimal!)
ß minimalerSuperschlüssel,somitSchlüsselkandidat
(FamName undFstName alleinsindnichteindeutig)
Primärschlüssel istdemnachentweder{ EmpNo } oder{ FamName, FstName } .
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
22
Beispiel:SchlüsselkandidatenineinerKunden-DB
Bem.:Diefolgendene-mailAdressenundAdressensindfreierfunden...
Customers
CusNo CusFamName CusFstName MidIn Title Email
Street
No Zip
City
Ctry
'Fed:Pen'
null '801210'
'Littleton' 'USA'
234 'Skilling'
'Jeffrey'
'R'
null '[email protected]'
235 'Cassano'
'Joseph'
'J'
null '[email protected]' 'Subprime:St' 123 'W1D:1NN' 'London'
236 'Ospel'
'Marcel'
'L'
null '[email protected]'
'Paradiesstr'
45 '8832'
'Wollerau' 'CH'
237 'Bruggisser'
'Philippe'
null
null '[email protected]' 'Hunterweg'
67 '8000'
'Zürich'
'CH'
238 'Rosenfeld'
'Eric'
'R'
'Dr' '[email protected]'
890 '02108'
'Boston'
'USA'
239 'Scholes'
'Myron'
'S'
'Prof' '[email protected]'
'Quant:Rd'
'Nobel:Dr'
2 'M4B:1B3' 'Toronto'
'GB'
'CAN'
Schlüsselkandidaten:
{ CusNo }
"bydesign"– jederneueKundeerhälteine(unveränderliche)Laufnummer
{ Email }
"bydesign"– e-mailAdressensindweltweiteindeutig
wobeieinKundeseinee-mailAdresseüberdieZeitevt.ändert!
{ CusFamName, CusFstName, MidIn, Title, Street, No, Zip, Ctry }
EindeutigkeitderTupelistzwarobenerfüllt,aberwiesiehtdiesinZukunftaus?
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
23
Beispiel:PrimärschlüsselineinerKunden-DB
Bem.:Diefolgendene-mailAdressenundAdressensindfreierfunden...
Customers
CusNo CusFamName CusFstName MidIn Title Email
Street
No Zip
City
Ctry
'Fed:Pen'
null '801210'
'Littleton' 'USA'
234 'Skilling'
'Jeffrey'
'R'
null '[email protected]'
235 'Cassano'
'Joseph'
'J'
null '[email protected]' 'Subprime:St' 123 'W1D:1NN' 'London'
236 'Ospel'
'Marcel'
'L'
null '[email protected]'
'Paradiesstr'
45 '8832'
'Wollerau' 'CH'
237 'Bruggisser'
'Philippe'
null
null '[email protected]' 'Hunterweg'
67 '8000'
'Zürich'
'CH'
238 'Rosenfeld'
'Eric'
'R'
'Dr' '[email protected]'
890 '02108'
'Boston'
'USA'
239 'Scholes'
'Myron'
'S'
'Prof' '[email protected]'
'Quant:Rd'
'Nobel:Dr'
2 'M4B:1B3' 'Toronto'
'GB'
'CAN'
AlsPrimärschlüsselempfiehltessich,{ CusNo } zuverwenden,wasinderobigen
DarstellungderRelationCustomers durchUnterstreichung gekennzeichnetwurde.
Begründung:
- DerSchlüsselkandidat{ CusNo } bestehtnurauseinemAttribut.
- DieWertediesesSchlüsselkandidatenändernsichnicht.
Achtung:WertegelöschterTupelsolltennichtfürneueTupelwiederverwendetwerden.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
24
IntegrierteÜbung:SchlüsselkandidateninBooks
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
25
IntegrierteÜbung:SchlüsselkandidateninCourses
Courses
Annahme:
AlleStundeneinesFachs(Subject)müssenimmer
imgleichenRaum(Room)stattfinden.
DergesundeMenschenverstandlegtnocheine
weitereAnnahmenahe,diehiernichterwähntist.
R.Marti
Subject
Room WkDay StartHour
'DB$Systems' 'A,36'
'Tue'
9
'DB$Systems' 'A,36'
'Tue'
10
'DB$Systems' 'A,36'
'Thu'
9
'DB$Systems' 'A,36'
'Thu'
10
'DB$Design
'B,32'
'Tue'
9
'DB$Design'
'B,32'
'Tue'
10
'DB$Design
'B,32'
'Wed'
13
'DB$Design'
'B,32'
'Wed'
14
'Big$Data'
'A,36'
'Fri'
16
InformationssystemefürIngenieure2016 – 2Relationenmodell
26
IntegrierteÜbung:SchlüsselkandidateninExamResults
ExamResults
CrsTitle
R.Marti
StuEnrolNo Grade Semester
'DB$Systems' '10-111-2222'
'B'
'2012-2'
'DB$Systems' '10-999-8888'
'B'
'2012-2'
'DB$Systems' '09-333-4444'
'B'
'2012-2'
'Accounting' '12-555-5555'
'A'
'2013-1'
'Options'
'08-777-7777'
'B'
'2012-1'
'Options
'12-555-5555'
'C'
'2012-1'
'Accounting' '11-666-3333'
'A'
'2012-1'
'Accounting' '10-999-8888'
'D'
'2013-1'
InformationssystemefürIngenieure2016 – 2Relationenmodell
27
DomänenintegritätundEntitätsintegrität
• DieDomänenintegrität (domainintegrity)verlangt,dassalleAttributwerteausder
entsprechendenDomänestammen.
IneinemDBMS könnennebendemDatentypweitereBedingungenformuliertwerden,z.B.
EinschränkungaufMengewenigerWerteundinsbeseinVerbotvonnull-Werten.
• FüreinenPrimärschlüsselwirdzusätzlichverlangt,dassdessenAttributwertenicht
null seindürfen.
DiesePrimärschlüsselbedingungwirdauchals Entitätsintegrität
(entityintegrity)bezeichnet.
FormallautetdieBedingung:
DieAttributedesPrimärschlüsselsK einerRelationR dürfennieden
Nullwertannehmen:
"t Î ext(R), "A Î K: t.A ¹ null .
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
28
Fremdschlüssel(1)
• AlleWerteeines(odermehrerer) AttributeeinerRelationkönnensichauf
existierendeWertedesPrimärschlüsselseineranderenRelationbeziehen.
EinsolchesAttributwirdalsFremdschlüssel (foreignkey)bezeichnet.
• Beispiel(vgl.frühereFolie"WeitereNormalisierung"):
Faculty
FCode FacultyName
Student
EnrolNo
Name
FCode
'EC'
'Economy'
'10$250$7654' 'Scholes' 'EC'
'CS'
'Computer/Science'
'09$432$3456' 'Guttag' 'CS'
'MA'
'Mathematics'
'12$777$4227' 'Gauss'
'EE'
'Electrical/Engineering'
'11$839$5288' 'Cattell' 'CS'
'10$773$2290' 'Myers'
'MA'
'EE'
DasAttributFCode inRelationStudent
isteinFremdschlüssel,daessichaufdenPrimärschlüsselderRelationFaculty,
ebenfallsFCode genannt,bezieht.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
29
Fremdschlüssel(2)
SeiR eineRelationmitdemRelationenschemasch(R) = { K, A },
wobeiK derPrimärschlüsselvonR ist.
SeiS eineandereRelationmitdemRelationenschemasch(S) = { F, B },
mitbeliebigemPrimärschlüssel.
• DasAttributF heisstFremdschlüssel (foreign key)inderRelationS ,sofernim
AttributF füralleTupelzurjederZeitentwederderWertnull oderaberein
momentanexistierenderWertdesPrimärschlüsselsK derRelationR steht.
Bemerkungen:
– DieseDefinitionkannaufPrimär- /FremdschlüsselmitmehrerenAttributen
verallgemeinertwerden.
– DieAttributnamendesPrimärschlüsselsvonR unddesFremdschlüsselsvonS
müssennichtgleichsein– auchwenndiesoftderFallist.
– Selbstwenn(1)AttributA PrimärschlüsselvonR istund(2)AttributA auchinS
vorkommt,somussA inS nichtFremdschlüsselsein.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
30
ReferentielleIntegrität
• DiereferentielleIntegrität (referentialintegrity)basiertaufdemFremdschlüssel
Konzept:
• FürjedenWerteinesFremdschlüsselsF ineinerRelationS mussinder
referenziertenRelationR jeweilsentwedereinTupelmitdemselbenWertim
PrimärschlüsselK existieren,
oderderWertdesFremdschlüsselattributsmussderNullwertsein.
• Formal:
"s Î ext(S): ( ($r Î ext(R): s.F = r.K) Ú (s.F = null) ) .
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
31
Beispiel:Lieferdatenbank
Customers
CusNo CusName CusCity BalanceDue Discount
101 'Legrand'
'Genève'
0.00
0.10
102 'Studer'
'Zürich'
480.00
0.20
103 'Huber'
'Zürich'
0.00
0.05
Orders.CusNo istein
Fremdschlüssel
Orders.PrdNo istein
Fremdschlüssel
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
32
ElementareRelationenalgebra
• DieelementareRelationenalgebra(RA,auchrelationaleAlgebra,relational
algebra)definierteineReihevonOperationenaufRelationen:
-
Selektions
Projektionp
VereinigungÈ
Differenz−
KartesischesProdukt×
Umbenennung(renaming)r
• SiebildetdasoperationelleFundamentfürdieRealisierungvonDatenbankanfragesprachen(wiez.B.SQL).DieRA istalsoprozedural.
• DieRelationenalgebraistabgeschlossen:
JedeOperationhateineoderzweiRelationenalsOperanden(input)
undproduzierteineRelationalsResultat(output).
DieresultierendeRelationwirddefiniertdurcheinSchemasowieeineExtension.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
33
Selektion
BeiderSelektion (selection,auchrestriction,filtering,dargestelltdurchdasSymbols)
gehtesumdieAuswahleinerMengevonTupel einerRelation.
SeiR eineRelationundp eineBoolescheFormel,dassog.Selektions-prädikat,
bestehendauseinfachenVergleichsbedingungenzwischen
- zweiAttributenderRelationR,z.B.Ai < Aj
- einemAttributderRelationR undeinerKonstanten,z.B.Ak = 5 (oder Al = 'xy' )
allenfallsverknüpftmitdenlogischenOperatoren¬(not),Ù (and)sowie∨ (or).
• DasSchemaderSelektionvonsp (R) istgleichwiedasSchemavonR.
DieExtensionderSelektion sp (R) (linearauchs[p](R) geschrieben) ist:
ext(sp (R)) := { t | t Î ext(R) Ù p }
wobeiimSelektionprädikatp dieAttributwertevont eingesetztwerden.
• sp (R) enthältdiejenigenTupel,welchedieFormelp erfüllen.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
34
Selektion:BeispielmiteinfachemSelektionsprädikat
Finde alle Zürcher Kunden
s CusCity = 'Zürich' (Customers)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
35
Selektion:BeispielmitzusammengesetztemPrädikat
Finde alle Zürcher Kunden, die uns
Geld schulden
s CusCity = 'Zürich' Ù BalanceDue > 0 (Customers)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
36
SelektioneinerSelektion:Beispiel
Zürcher Kunden
Kunden, die uns Geld schulden
s CusCity = 'Zürich' (Customers)
s BalanceDue > 0 (Customers)
Zürcher Kunden, die uns Geld schulden
s BalanceDue > 0 (s CusCity = 'Zürich' (Customers))
R.Marti
s CusCity = 'Zürich' (s BalanceDue > 0 (Customers))
InformationssystemefürIngenieure2016 – 2Relationenmodell
37
Projektion
BeiderProjektion (projection,Symbolp)gehtesumdieAuswahlderrelevanten
Attribute einerRelation.
SeiA = { A1, ... , Ak } eineTeilmengederAttributeeinerRelationR mitdem
Schema{ A1, ... , An } .(Esgiltalsok ≤ n,meistsogark < n).
• DasSchema derProjektion pA (R) bestehtausdenAttributeninA.
• DieExtensionderProjektion pA (R) (auchp[A](R) geschrieben)ist:
ext(pA (R)) := { t | $r Î ext(R): t.Ai = r.Ai , 1 ≤ i ≤ k }
pA (R) enthältnurdieAttributwertederTupel vonR,diezueinemAttribut
ausderTeilmengeA allerAttributegehören.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
38
Projektion:Beispiel
Finde Beschreibung, Lagerort und
Lagerbestand für alle Produkte
p PrdDescr, Warehouse, Stock (Products)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
39
KombinationvonSelektionundProjektion:Beispiel
Beschreibung, Lagerort
und Lagerbestand
für Produkte, deren
Lagerbestand < 300 ist
p PrdDescr, Warehouse, Stock (Products)
s Stock < 300 (p PrdDescr, Warehouse, Stock (Products))
R.Marti
s Stock < 300 (Products)
p PrdDescr, Warehouse, Stock (s Stock < 300 (Products))
InformationssystemefürIngenieure2016 – 2Relationenmodell
40
Umbenennung vonAttributen
DieUmbenennung einesAttributs einerRelation(renaming, Symbolr)isteine
Hilfsoperation,dievorderAnwendungbinärerOperationennotwendigseinkann,
umdieÜbereinstimmungvonAttributnamenderOperanden
- entwederzuerzwingen
- oderaberzuvermeiden
SeiR eineRelation mitdemSchema{ A1 , ... , Ak−1 , Ak, Ak+1 , ... , An }
undB einAttributname.
• DasSchema vonrB ← Ak (R) bestehtaus{ A1 , ... , Ak−1 , B , Ak+1 , ... , An }.
DieExtension der(Attribut-)Umbenennung rB ← Ak (R) ist:
ext(rB ← Ak (R)) := { t | $r Î ext(R): t.Ai = r.Ai für i ≠ k und t.B = r.Ak }
•
Bemerkung:
DerAttribut-UmbenennungsoperatorkannfürdiegleichzeitigeUmbenennungmehrererAttribute
verallgemeinertwerden.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
41
Umbenennung vonRelationen
DieUmbenennung einerRelation (renaming, Symbolr) isteineHilfsoperation,die
vorderAnwendungbinärerOperatorennotwendigseinkann,umeineungewollte
ÜbereinstimmungderRelationennamen derbeidenOperandenzuverhindern.
SeiR eineRelation mitdemSchemaA = { A1 , ... , An } = sch(R)
undS einRelationenname.
• DasSchema vonS := rS (R) bestehtaus A = { A1 , ... , An } = sch(S) .
• DieExtension der(Relationen-)Umbenennung rS (R) ist:
ext(rS (R)) := { t | $r Î ext(R): t.A = r.A } = ext(S)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
42
Vereinigung
FürzweiRelationenR undS mitdemgleichenSchema,sch(R) = sch(S) ,
kanndiefolgendeüblicheMengenoperationendefiniertwerden.
• DieVereinigung (union,SymbolÈ )zweierRelationenR undS mitdem
gleichenSchemaistdieMengeallerTupel,dieentwederinR oderinS oderin
beidenRelationensind.
• DasSchemaderVereinigungR È S ist
sch(R È S) = sch(R) = sch(S)
• DieExtensionderVereinigungR È S ist:
ext(R È S) := { t | t Î ext(R) Ú t Î ext(S) }
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
43
Vereinigung:Beispiel
Nummer, Beschreibung,
Gewicht und Preis
für bestehende und
neue Produkte
p PrdNo, PrdDescr, Weight, Price Products
È
p PrdNo, PrdDescr, Weight, Price (Products) È NewProducts
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
44
Differenz
FürzweiRelationenR undS mitdemgleichenSchema,sch(R) = sch(S) ,
kanndiefolgendeüblicheMengenoperationendefiniertwerden:
• DieDifferenz (difference,Symbol– )zweierRelationenR undS mitdem
gleichenSchemaistdieMengeallerTupel,dieinR abernichtinS sind.
• DasSchemaderDifferenzR – S ist
sch(R – S) = sch(R) = sch(S)
• DieExtensionderDifferenzR – S ist:
ext(R – S) := { t | t Î ext(R) Ù t Ï ext(S) }
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
45
Differenz:Beispiel
Nummer, Beschreibung,
Gewicht und Preis
für neue Produkte, die
noch nicht im ProduktKatalog sind
p PrdNo, PrdDescr, Weight, Price (Products)
−
NewProducts − p PrdNo, PrdDescr, Weight, Price (Products)
Result_9
PrdNo PrdDescr
1001 'iPhone*007'
R.Marti
Weight Price
120 900.00
InformationssystemefürIngenieure2016 – 2Relationenmodell
46
KartesischesProdukt
BeimkartesischenProdukt (auchKreuzprodukt,cartesian product,crossproduct,
crossjoin,Symbol´ )gehtes umdasKombinierenderTupelzweierRelationen.
SeiR eineRelationmitSchemaA = { A1, ... , An }
undS eineRelationmitSchemaB = { B1, ... , Bm } ,wobeiA Ç B = ∅ .
WenneinAttributinbeidenSchemasvorkommt,somussmindestenseinesder
beidenVorkommenumbenanntwerden.
• DasSchema vonR ´ S bestehtausdenAttributeninA È B .
• DieExtension deskartesischenProdukts R ´ S ist:
ext(R ´ S) := { t | $r Î ext(R), $s Î ext(S): t.A = r.A Ù t.B = s.B }
• IntuitiveBedeutung:
R ´ S enthält alle möglichen PaarevonTupel aus R undTupel aus S.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
47
KartesischesProdukt:AbstraktesBeispiel
S
×
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
B1
C
2
'X'
2
'Y'
3
'Z'
48
KartesischesProdukt:KonkretesBeispiel(1)
ρ [CusNo1(<*(CusNo] ((Customers)
×
CusNo1 CusName
... Discount
101 'Legrand'
...
0.10
102 'Studer'
...
0.20
103 'Huber'
...
0.05
Orders × r CusNo1 ß CusNo (Customers)
Result_10
OrdNo CusNo PrdNo Qty ... ShipDate CusNo1 CusName ... Discount
67890
101
901 100 ... 2013*07*20
101 'Legrand'
...
0.10
67890
101
901 100 ... 2013*07*20
102 'Studer'
...
0.20
67890
101
901 100 ... 2013*07*20
103 'Huber'
...
0.05
67891
101
901 100 ... 2013*07*28
101 'Legrand'
...
0.10
67891
101
901 100 ... 2013*07*28
102 'Studer'
...
0.20
67891
101
901 100 ... 2013*07*28
103 'Huber'
...
0.05
…
…
103 'Huber'
...
…
67893
R.Marti
…
102
…
903
…
...
…
1 ... 2013*09*21
…
InformationssystemefürIngenieure2016 – 2Relationenmodell
insgesamt 12
(=4×3)
Tupel
…
0.05
49
KartesischesProdukt:KonkretesBeispiel(2)
Result_10
OrdNo CusNo PrdNo Qty ... ShipDate CusNo1 CusName ... Discount
67890
101
901 100 ... 2013*07*20
101 'Legrand'
...
0.10
67890
101
901 100 ... 2013*07*20
102 'Studer'
...
0.20
67890
101
901 100 ... 2013*07*20
103 'Huber'
...
0.05
67891
101
901 100 ... 2013*07*28
101 'Legrand'
...
0.10
67891
101
901 100 ... 2013*07*28
102 'Studer'
...
0.20
67891
101
901 100 ... 2013*07*28
103 'Huber'
...
0.05
…
…
103 'Huber'
...
…
…
67893
102
…
903
…
...
…
1 ... 2013*09*21
…
Bestellungen mit
den "passenden"
Kundendaten
Selektionsprädikat
CusNo1 = CusNo
…
0.05
s CusNo1 = CusNo ( Orders × r CusNo1 ß CusNo (Customers) )
Result_11
OrdNo CusNo PrdNo Qty ... ShipDate CusNo1 CusName ... Discount
67890
101
901 100 ... 2013*07*20
101 'Legrand'
...
0.10
67891
101
901 100 ... 2013*07*28
101 'Legrand'
...
0.10
67892
101
902
8 ... 9999*12*31
101 'Legrand'
...
0.10
67893
102
903
1 ... 2013*09*21
102 'Studer'
...
0.20
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
50
KartesischesProdukt:KonkretesBeispiel(3)
Result_11
OrdNo CusNo PrdNo Qty ... ShipDate CusNo1 CusName ... Discount
67890
101
901 100 ... 2013*07*20
101 'Legrand'
...
0.10
67891
101
901 100 ... 2013*07*28
101 'Legrand'
...
0.10
67892
101
902
8 ... 9999*12*31
101 'Legrand'
...
0.10
67893
102
903
1 ... 2013*09*21
102 'Studer'
...
0.20
Bestellungen mit
den "passenden"
Kundendaten
(nur Kundenname):
p OrdNo, CusNo, CusName, PrdNo, Qty, ShipDate ( s CusNo1 = CusNo ( Orders × r CusNo1 ß CusNo (Customers) ) )
Result_12
OrdNo CusNo PrdNo Qty ShipDate CusName
R.Marti
67890
101
901 100 2013)07)20 'Legrand'
67891
101
901 100 2013)07)28 'Legrand'
67892
101
902
8 9999)12)31 'Legrand'
67893
102
903
1 2013)09)21 'Studer'
InformationssystemefürIngenieure2016 – 2Relationenmodell
Dieses "Zusammenkleben" von Relationen
ist häufig
⇒ eigene Operation
(siehe später).
51
DefinitionelementarerRA Ausdrücke
• EinelementarerAusdruckderrelationalenAlgebraist
– eineRelationR inderDatenbank
• FallsE1 undE2 AusdrückederelementarenRelationenalgebrasind,dannlassen
sichweitereAusdrückewiefolgtbilden:
– sp(E1)
p einPrädikat,dassichaufAttributevonE1 bezieht
– pA(E1)
A eineAttributmengemitA ⊆ sch(E1)
– E1 È E2
mitsch(E1) = sch(E2)
– E1 − E2
mitsch(E1) = sch(E2)
– E1 × E2
mitsch(E1) ∩ sch(E2) = ∅
– rB ß A (E1)
A einAttributinE1 ,B einAttributmitB ∉ sch(E1)
bzw.rR (E1)
R.Marti
R einneuerRelationenname
InformationssystemefürIngenieure2016 – 2Relationenmodell
52
AnfrageninelementarerRelationenalgebra:Beispiele(1)
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
Q1
NamenderKunden,dieunsGeldschulden.
pCusName (sBalanceDue > 0 (Customers))
Q2
NamenderKunden,dieeinegelieferte(Status'2 shipped')Bestellung
erhaltenhaben,dievorAnfangSeptember2013 erfolgte.
pCusName (sCusNo = D Ù Status = '2 shipped' Ù ShipDate < 2013-09-01 (rD ß CusNo (Orders) × Customers))
Q3
KundennummernderKunden,vondenenkeineBestellung registriertist.
pCusNo (Customers) – pCusNo (Orders)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
53
AnfrageninelementarerRelationenalgebra:Beispiele(2)
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
Q4
NamenderKunden,vondenenmindestenseineBestellung registriertist.
pCusName ( sCusNo = D ( Customers × rD ß CusNo (Orders) ) )
Q5
NamenderKunden,vondenenkeineBestellung registriertist.
pCusName (Customers) – pCusName ( sCusNo = D ( Customers × rD ß CusNo (Orders) ) )
zumVergleich(sieheQ3,vorhergehendeFolie):
NummernderKunden,vondenenkeineBestellungregistriertist.
pCusNo (Customers) – pCusNo (Orders)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
54
AnfrageninelementarerRelationenalgebra:Beispiele(3)
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
Q6
NamenderZürcherKunden,dieeinProdukt ausZürichbestellt haben.
pCusName
( s CusNo = D1 Ù PrdNo = D2 Ù CusCity = 'Zürich' Ù Warehouse = ‘Zürich’
( Customers
× Products
× rD1 ß CusNo, D2 ß PrdNo (Orders)
)
)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
55
IntegrierteÜbung:AnfrageninelementarerRA
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
QI1
BeschreibungvonProdukten,diemindestenseinmalbestellt wurden.
...
QI2
NameundStadtvonKunden,dieeineBestellung vonmehralsCHF1000
getätigthaben.
...
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
56
ErweiterteRelationenalgebra
• NebendenbishereingeführtenelementarenOerationenderrelationalenAlgebra
sindinderLiteratureinigeweitereOperationenzufinden,welche
–
dieAlgebrazwarnichtausdrucksstärkermachen
(diezusätzlichenOperatorenkönnenmitHilfederelementarenOperatoren
ausgedrü̈cktwerden;deshalbsindsieredundant)
–
aberdieFormulierunghäufigerArtenvonAnfragenzumTeilerheblichvereinfacht.
• Essinddiesinsbesondere
-Mengendurchschnitt(intersection)Ç
-NatürlicherVerbund(naturaljoin)⋈
-AllgemeinerVerbund(thetajoin)
-ÄussereVerbunde(outerjoins)
-Zuweisung(assignment)
-RelationaleDivision(relationaldivison)÷
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
57
Mengendurchschnitt
FürzweiRelationenR undS mitdemgleichenSchema,
sch(R) = sch(S) ,sinddieüblichenMengenoperationendefiniert:
• DerMengendurchschnitt (intersection,SymbolÇ )zweierRelationenR undS
mitdemgleichenSchemaistdieMengeallerTupel,diesowohlinR alsauchinS
sind.
• DasSchemadesMengendurchschnittsR Ç S ist
sch(R Ç S) = sch(R) = sch(S)
• DieExtensiondesMengendurchschnittsR ∩ S ist
ext(R Ç S) := { t | t Î ext(R) Ù t Î ext(S) }
• Esgilt:R Ç S = R – (R – S)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
R
S
58
NatürlicherVerbund
BeimnatürlichenVerbund (naturaljoin,Symbol⋈ )gehtesumdieVerbindung
zweierRelationenübergleicheAttributnamen undgleicheAttributwerte der
jeweiligenTupel.
R
SeiR eineRelationmitSchemasch(R) = { A, B }
undS eineRelationmitSchemasch(S) = { B, C } .
A
B
S
B
C
B
C
• DasSchemadesnatürlichenJoins R ⋈ S (auchR * S geschrieben)ist:
sch(R ⋈ S) := sch(R) È sch(S) = { A, B, C }.
Bem:DasgemeinsameAttributB wirdJoin-Attributgenannt.
R"|x|"S
A
• DieExtensiondesnatürlichenJoins R ⋈ S ist:
ext(R ⋈ S) :=
{ t | $r Î ext(R), $s Î ext(S): t.A = r.A Ù t.B = r.B Ù r.B = s.B Ù t.C = s.C }
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
59
deshalb sind die neuen Operatoren redundant)
NatürlicherVerbund:AbstraktesBeispiel
I die Formulierung häufiger Anfragen zum Teil erheb
I
I
I
Mengendurchschnitt \
|×|
Join 1
Zuweisung
InfO12, Relationale Algebra
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
46/54
60
deshalb sind die neuen Operatoren redundant)
NatürlicherVerbund:KonkretesBeispiel
I die Formulierung häufiger Anfragen zum Teil er
I
I
I
Mengendurchschnitt \
Join 1
×
Zuweisung
InfO12, Relationale Algebra
46/54
p OrdNo, CusNo, CusName, PrdNo, Qty, ShipDate ( Orders ⋈ Customers )
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
61
deshalb sind die neuen Operatoren redundant)
I die Formulierung häufiger Anfragen zum Teil erheb
NatürlicherVerbund:KonkretesBeispiel
I
I
I
Mengendurchschnitt \
Join 1
×
Zuweisung
InfO12, Relationale Algebra
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
46/54
62
NatürlicherVerbund:Kreuzproduktà Selektionà Projektion
DernatürlicheVerbundkannmitHilfevonKreuzprodukt,SelektionundProjektion
(sowieevt.einerUmbenennung)ausgedrücktwerden.
SeiR eineRelationmitSchema{ A, B }
undS eineRelationmitSchema{ B, C }.
Esgilt:
R ⋈ S = p A, B, C ( s B1 = B ( R ´ r B1 ß B ( S )))
Beweis:
VergleichderresultierendenSchemasundExtensionen
gemässformalenDefinitionen...
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
63
NatürlicherVerbund:×à s à p:AbstraktesBeispiel
ρ![B1!<&!B]!(S)
×
R"x"ρ"[B1"<("B]"(S)
R.Marti
A
B
B1
C
'a'
1
2
'X'
'a'
1
2
'Y'
'a'
1
3
'Z'
'b'
2
2
'X'
'b'
2
2
'Y'
'b'
2
3
'Z'
'c'
2
2
'X'
'c'
2
2
'Y'
'c'
2
3
'Z'
'd'
3
2
'X'
'd'
3
2
'Y'
'd'
3
3
'Z'
B1
C
2
'X'
2
'Y'
3
'Z'
s
p
InformationssystemefürIngenieure2016 – 2Relationenmodell
64
AllgemeinerVerbund(auchallgemeinerJoin,Theta-Join)
BeimallgemeinenVerbund(Theta-Join,thetajoin,Symbol⋈p )
gehtes– wiebeimnatürlichenVerbund– umdasZusammenfügenvonTupeln
zweierRelationen,abernichtaufgrundgleicherAttributeundgleicherWerte,
sondernuntereinerexplizitenBedingung,diealsPrädikatp formuliertwird.
SeiR eineRelationmitSchemaX undS eineRelationmitSchemaY,
mitX Ç Y = Æ.SeienA Î X undB Î Y AttributevonR respektiveS
undq einederVergleichsoperationen= , ¹ , < , ≤ , ≥ , > .
• DasSchema vonR ⋈A q B S bestehtausX È Y .
• DieExtension desTheta-Joins (auchq-Join)R ⋈A q B S ist:
ext(R ⋈A q B S) := ext( sA q B (R ´ S) )
• Wennq dieGleichheit(=) ist,dannheisstderq-JoinauchEqui-Join .
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
65
AnfrageninerweiterterRelationenalgebra:Beispiele(1)
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
Q2
NamenderKunden,dieeinegelieferte(nochunbezahlte)Bestellung
erhaltenhaben,dievorAnfangSeptember2013 erfolgte.
mitTheta-Join(genauer:mitEqui-Join):
pCusName (sStatus = '2 shipped' Ù ShipDate < 2013-09-01 (rD ß CusNo (Orders) ⋈CusNo = D Customers))
= pCusName (sStatus = '2 shipped' Ù ShipDate < 2013-09-01 (rD ß CusNo (Orders)) ⋈CusNo = D Customers)
mitnatürlichemJoin:
pCusName (sStatus = '2 shipped' Ù ShipDate < 2013-09-01 (Orders) ⋈ Customers)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
66
AnfrageninerweiterterRelationenalgebra:Beispiele(2)
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
Q4
NamenderKunden,vondenenmindestenseineBestellung registriertist.
mitnatürlichemJoin:
pCusName ( Customers ⋈ Orders )
Q5
NamenderKunden,vondenenkeineBestellung registriertist.
mitnatürlichemJoin:
pCusName (Customers) – pCusName ( Customers ⋈ Orders )
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
67
AnfrageninerweiterterRelationenalgebra:Beispiele(3)
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
Q6
NamenderZürcherKunden,dieeinProdukt ausZürichbestellt haben.
mitnatürlichemJoin:
pCusName ( s CusCity = 'Zürich' Ù Warehouse = ‘Zürich’ ( Customers ⋈ Orders ⋈ Products ) )
= pCusName (
s CusCity = 'Zürich' ( Customers ) ⋈ Orders ⋈ s Warehouse = ‘Zürich’ ( Products )
)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
68
AnfrageninerweiterterRelationenalgebra:Beispiele(4)
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
Q7
NummernneuerEinzelbestellungen,derenStückzahlüberdenVorrateines
Produkts hinausgehen.
pOrdNo ( sStatus = '1 ordered' ( Orders ) ⋈ PrdNo = D Ù Qty > Stock r D ß PrdNo ( Products ) )
Q8
NamenvonPaarenvonKunden,dieinderselbenStadtwohnen,mitStadt.
pCusName, OtherName, CusCity (
Customers ⋈ OtherNo > CusNo Ù OtherCity = CusCity
rOtherNo ß CusNo, OtherName ß CusName, OtherCity ß CusCity ( Customers )
)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
69
IntegrierteÜbung:AnfrageninerweiterterRA
Customers( { CusNo, CusName, CusCity, BalanceDue, Discount } )
Products( { PrdNo, PrdDescr, Weight, Price, Warehouse, Stock } )
Orders( { OrdNo, CusNo, PrdNo, Qty, Amount, Status, OrderDate, ShipDate } )
QI3
LagerortevonProdukten,mitmehrals20kg(Einzel-)Gewicht,vondenen
mindestenseineBestellung registriertist.(BitteJoin-Operatorverwenden.)
…
QI4
R.Marti
NamenderKunden,vondenenkeineBestellung registriertist.
…
InformationssystemefürIngenieure2016 – 2Relationenmodell
70
VergleichnatürlicherJoinundEqui-Join
• SowohlnatürlicherJoinwieEqui-Join
- bestehenauseinemKreuzproduktgefolgtvoneinerSelektion
-
könneneffizienterrealisiertwerdenalsKreuzproduktà Selektion
-
kombinierenTupelauszweiRelationenaufgrundgleicherWertein
bestimmtenAttributen
• BeimnatürlichenJoin
- istdasSelektionsprädikatimplizitdurchgleicheAttributnamengegeben
folgtdenOperationenKreuzproduktà Selektioneineimplizite
-
Projektion,inderdoppelteAttributeeliminiertwerden
• BeimEqui-Join
R.Marti
-
mussdasSelektionsprädikat explizitformuliertwerden,wobeidie
-
Attribute(inderklassischenRATheorie) nichtgleichheissendürfen
mussdieProjektionexplizitverlangtwerdenfallserwünscht
InformationssystemefürIngenieure2016 – 2Relationenmodell
71
VergleichnatürlicherJoinundEqui-Join:Bsp.(1)
Beispiel,indemdasFremdschlüsselattribut andersheisstalsdas
referenziertePrimärschlüsselattribut
Q9
Städtename,NamedesLandessowiePopulationallerStädte:
NatürlicherJoin:
pCityName, CName, Population ( rCode ß CountryCode ( City ) ⋈ Country )
Equi-Join(SpezialfalldesallgemeinenJoins):
pCityName, CName, Population ( City ⋈ Code = CountryCode Country )
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
72
VergleichnatürlicherJoinundEqui-Join:Bsp.(2)
Beispiel,indemeinige Fremdschlüsselattribute andersheissenalsdas
referenziertePrimärschlüsselattribut
Q10
NamenvonAusgangs- undZielstadtallerFlüge
hiernurmitEqui-Join:
pFrom, To ( Schedule
⋈AptFrom = AptCode pAptCode, From ( r From ß AptCity ( Airport ) )
⋈AptTo = T pT, To ( r T ß AptCode, To ß AptCity ( Airport ) )
)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
73
WeitereOperationen:ÄussereVerbunde(OuterJoins)
DeräussereVerbund(outerjoin)isteinJoin,beidemalleTupel
– deslinken Operanden(left outerjoin,Symbol⟕ )
– bzw.desrechtenOperanden(rightouterjoin,Symbol⟖ )
– bzw.beiderOperanden(fullouterjoin,Symbol⟗ )
imResultatbeibehaltenwerden,selbstwennimanderenOperandenkeineTupelmit
passendenAttributwertenexistieren.
DiefehlendenAttributwertewerdendurchNullwerte aufgefüllt.
SeiR eineRelationmitSchema{A, B} undS eineRelationmitSchema{B, C}.
Danngiltz.B.für
denLeft OuterJoin:
Relationbestehendauseinem
TupelmitAttributC mitWertnull
R ⟕ S := ( R ⋈ S ) È ( R − pA, B ( R ⋈ S ) ) ´ { < C: null > } )
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
74
LeftOuterJoin:KonkretesBeispiel
×
"normaler" natürlicher Verbund
( sog. inner join )
"Auffüllen" mit null
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
75
Zuweisung
• DieZuweisung (assignment,Symbol←)weisteinerRelationT denWerteiner
Relation(bzw.einesRA-Ausdrucks)S zu:T ← S .
BessereFormulierung:DieZuweisungbindeteinenneuen,bishernichtgebrauchten
RelationennamenT andenWerteinesRA-AusdrucksS .
• DieZuweisungerlaubtes,komplexeAusdrückeinkleinere,übersichtlichere
Ausdrückeaufzubrechen.
• Achtung:BeiderEntwicklungkomplexerAnfragenmachtesSinn,sovorzugehen.
BeimAusführen vonAnfragenmit➛SQLsolltenaber➛viewsdefiniert(undnicht
etwa➛insert Anweisungenverwendet)werden.
Beispiel:
Q5 NamenderKunden,vondenenkeineBestellungregistriertist:
Tmp ← sCusNo = D (Customers × rD ß CusNo (Orders) )
pCusName (Customers) – pCusName (Tmp)
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
76
RelationaleVollständigkeit
• Satz
MinimaleMengevonOperatorenderelementaren Relationenalgebra
È ,–,s,p und× (sowieUmbenennungr)bildeneineminimaleMengevon
Operationen,mitdenensichalleOperationenderRelationenalgebraausdrücken
lassen.
Diesbedeutet:
WeitereOperatoren,wiez.B.DurchschnittundnatürlicherVerbund,könnenauf
dieobigen5Operatorenzurückgeführtwerden.
• Definition
RelationaleVollständigkeit
EineAnfragespracheheisstrelationalvollständig,wennsichdamitalleAnfragen
derelementarenRelationenalgebraausdrückenlassen.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
77
EinigeÄquivalenzregelnderRelationenalgebra
sf(sy(R)) = sy(sf(R))
pA(sf(R)) = sf(pA(R))
fallsf nurAttributeausMengeA referenziert
R⋈S = S⋈R
R ⋈ (S ⋈ T) = (R ⋈ S) ⋈ T
pA(pC(R)) = pA(R)
fallsA Í C
sf(sy(R) ) = sf Ù y(R)
pA(R È S) = pA(R) È pA(S)
sf(R È S) = sf(R) È sf(S)
sf(R ⋈ S) = sf(R) ⋈ S
fallsf nurAttributevonR referenziert
pA, B, C (R ⋈ S) = pA, B (R) ⋈ pB, C (S)
R ⋈ (S È T) = (R ⋈ S) È (R ⋈ T)
SolcheRegelnwerdeninDBMSsangewendet,umdieBerechnungeffizienterzugestalten:
z.B.werdenSelektionundProjektionsofrühwiemöglichangewendet.
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
78
Zusammenfassung
DasRelationenmodellisteineinfachesModellmitfolgendenBausteinen:
• Struktur:
- Relation(➛ Tabelle)
- Attribut(➛ SpalteeinerTabelle)
- Tupel(➛ ZeileeinerTabelle)
• Integritätsbedingungen:
- PrimärschlüsselzurIdentifikationvonTupel
- weitereSchlüsselkandidaten
- FremdschlüsselzumVerweisaufTupeleineranderenRelation
• AuswahlvonTeileneinerodermehrererRelationen:
- elementareRelationenalgebramitfolgendenOperationen:
Selektions ,Projektionp ,VereinigungÈ ,Differenz− ,Kreuzprodukt× ,Umbenennungr
- weitereOperationen("syntacticsugar","creaturecomforts"),
insbesonderenatürlicherJoinundThetaJoin
R.Marti
InformationssystemefürIngenieure2016 – 2Relationenmodell
79
Herunterladen