Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Het relationeel databasemodel Hoofdstuk 4 Database, Document and Content Management
Vakgroep Telecommunicatie en Informatieverwerking 2 Overzicht Structurele aspecten Integriteitaspecten Gedragsaspecten
Vakgroep Telecommunicatie en Informatieverwerking 3 Overzicht Structurele aspecten –Basisrelaties –Metadata –Views –Werken met indexen –Behandelen van ontbrekende informatie Integriteitaspecten Gedragsaspecten
Vakgroep Telecommunicatie en Informatieverwerking 4 Structurele aspecten Basisrelaties –Atomaire datatypes Domein Operatoren voorbeeld: Boolean domein = {waar, onwaar} verzameling van operatoren = {=, , , , } Typecompatibiliteit waaronwaar waar onwaar waar onwaar waar onwaar waar onwaar waar onwaar
Vakgroep Telecommunicatie en Informatieverwerking 5 Structurele aspecten –Basisrelaties Relatieschema Het schema R(A 1 :T 1, A 2 :T 2, …,A n :T n ) van een relatie is opgebouwd uit een relatienaam R en een eindige verzameling van attributen {A 1 :T 1, A 2 :T 2, …,A n :T n }. Elk attribuut A i :T i, 1 i n is op zijn beurt opgebouwd uit een attribuut- naam A i en een geassocieerd atomair datatype T i.
Vakgroep Telecommunicatie en Informatieverwerking 6 Structurele aspecten Extentie De extentie van een basisrelatie met schema R(A 1 :T 1, A 2 :T 2, …,A n :T n ) is een met de tijd variërende verzameling van m, (m 0) n-tuples, die alle volledig worden gekarakteriseerd door de attributen uit het schema van de relatie. Elk n-tuple t i ={A 1 :w i,1, A 2 :w i,2, …,A n :w i,n }, 1 i m is op zijn beurt opgebouwd uit n (attribuutnaam:waarde)-paren A j :w i,j, 1 j n, waarbij er geldt dat w i,j behoort tot het domein van het atomair datatype T j.
Vakgroep Telecommunicatie en Informatieverwerking 7 Structurele aspecten Artiest(A_ID:char(3), Naam:varchar, Voornaam:varchar, Geboren: integer, Gestorven: integer) {(A_ID:A01, Naam:‘Da Vinci’, Voornaam:‘Leonardo’, Geboren:1452, Gestorven:1519), (A_ID:A02, Naam:‘Degas’, Voornaam:‘Edgar’, Geboren:1834, Gestorven:1917), (A_ID:A03, Naam:‘Ensor’, Voornaam:‘James’, Geboren:1860, Gestorven:1949), (A_ID:A04, Naam:‘Monet’, Voornaam:‘Claude’, Geboren:1840, Gestorven:1926)}
Vakgroep Telecommunicatie en Informatieverwerking 8 Structurele aspecten Tabel Artiest Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 EnsorJames1860 MonetClaude1840 Gestorven: integer A_ID: char(3) A01 A02 A03 A04 Visualisatie
Vakgroep Telecommunicatie en Informatieverwerking 9 Structurele aspecten Terminologie Tabel Artiest Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 EnsorJames1860 MonetClaude1840 Gestorven: integer A_ID: char(3) A01 A02 A03 A04 graad relatienaam attributen intentie extentie tuples kardinaliteit relatie cel met attribuutwaarde
Vakgroep Telecommunicatie en Informatieverwerking 10 Structurele aspecten Eigenschappen –Binnen een relatie kunnen geen dubbele tuples voorkomen. –De tuples van een relatie zijn niet geordend. –De attributen van een relatie zijn niet geordend. –Alle attributen van een relatie zijn atomair. Interpretatie –Schema = declaratie van een veronderstelling –Tuple = feit of particuliere instantie van deze veronderstelling
Vakgroep Telecommunicatie en Informatieverwerking 11 Structurele aspecten Metadata: de cataloog –Gebruikersgedefinieerde relaties –Syteemgedefinieerde relaties –Werken met de cataloog relationele database = verzameling van basisrelaties data metadata gebruikers en toepassingen dbms
Vakgroep Telecommunicatie en Informatieverwerking 12 Structurele aspecten Views of afgeleide relaties Een view is een benoemde, virtuele relatie die afgeleid van -gebruikersgedefinieerde en/of systeemgedefinieerde- basisrelaties en/of andere views. relationele database = verzameling van basisrelaties data metadata view
Vakgroep Telecommunicatie en Informatieverwerking 13 Structurele aspecten –Definiërende expressie View ‘Artiesten_uit_de_19 de _eeuw’ CREATE VIEW Artiesten_uit_19de_eeuw AS SELECT Naam, Voornaam, Geboren FROM Artiest WHERE Geboren >= 1800 AND Geboren < 1900
Vakgroep Telecommunicatie en Informatieverwerking 14 Structurele aspecten Tabel Artiest Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 EnsorJames1860 MonetClaude1840 Gestorven: integer A_ID: char(3) A01 A02 A03 A04 basisrelatie + definiërende expressie SELECT Naam, Voornaam, Geboren FROM Artiest WHERE Geboren >= 1800 AND Geboren < 1900 view Tabel Artiesten_uit_19de_eeuw Naam: varchar Voornaam: varchar Geboren: integer DegasEdgar1834 EnsorJames1860 MonetClaude1840
Vakgroep Telecommunicatie en Informatieverwerking 15 Structurele aspecten Tabel Artiest Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 EnsorJames1860 MonetClaude1840 Gestorven: integer A_ID: char(3) A01 A02 A03 A04 basisrelatie + definiërende expressie SELECT Naam, Voornaam, Gestorven – Geboren AS Leeftijd FROM Artiest view Tabel Artiesten_info Naam: varchar Voornaam: varchar Leeftijd: integer DegasEdgar EnsorJames MonetClaude Da VinciLeonardo
Vakgroep Telecommunicatie en Informatieverwerking 16 Structurele aspecten View ‘Artiesten_info’ CREATE VIEW Artiesten_info AS SELECT Naam, Voornaam, Gestorven - Geboren AS Leeftijd FROM Artiest View ‘Oude_artiesten’ CREATE VIEW Oude_artiesten AS SELECT Naam, Voornaam, Leeftijd FROM Artiesten_info WHERE Leeftijd > 80
Vakgroep Telecommunicatie en Informatieverwerking 17 Structurele aspecten –Nut van views Logische data-onafhankelijkheid (Lenigen van individuele gebruikersnoden) Afleiden van nieuwe data Inkorten van bevragingsinstructies Afschermen van data
Vakgroep Telecommunicatie en Informatieverwerking 18 Structurele aspecten –Werken met views Bevragen –Querymodificatie SELECT Naam, Voornaam FROM Artiesten_uit_19de_eeuw WHERE Geboren > 1850 SELECT Naam, Voornaam FROM (SELECT Naam, Voornaam, Geboren FROM Artiest WHERE Geboren >= 1800 AND Geboren < 1900) WHERE Geboren > 1850 SELECT Naam, Voornaam FROM Artiest WHERE Geboren > 1850 AND Geboren < 1900
Vakgroep Telecommunicatie en Informatieverwerking 19 Structurele aspecten Aanpassen, toevoegen en verwijderen –De view moet expliciet als aanpasbaar zijn gedefinieerd ‘with check option’ –De manipulatie mag niet conflicterend zijn met de definiërende expressie van de view –Er mogen geen manipulaties worden uitgevoerd op afgeleide data Toegelaten aanpassingen worden gepropageerd naar de onderliggende basisrelaties
Vakgroep Telecommunicatie en Informatieverwerking 20 Structurele aspecten Indexen Een index over n attributen van een basisrelatie R kan worden omschreven als een geordende lijst van (n+1)-tuples. Voor elk tuple t uit de extentie van R is er één (n+1)-tuple opgenomen in de lijst. Dit (n+1)-tuple is opgebouwd uit de n beschouwde attribuutwaarden van t en een referentie naar t. De (n+1)-tuples zijn geordend op basis van de n attribuutwaarden, volgens een opgegeven volgorde.
Vakgroep Telecommunicatie en Informatieverwerking 21 Structurele aspecten Tabel Artiest Naam: varchar Voornaam: varchar Geboren: integer Van GoghVincent1853 DegasEdgar1834 EnsorJames1860 MonetClaude1840 Gestorven: integer A_ID: char(3) A05 A02 A03 A04 Da VinciLeonardo A01Van Gogh Degas Ensor Monet Da Vinci Index ID_Naam Index ID_Sterfdata CREATE INDEX ID_Naam ON Artiest(Naam ASC); CREATE INDEX ID_Sterfdata ON Artiest(Gestorven DESC); Opmerking: uniciteitindex
Vakgroep Telecommunicatie en Informatieverwerking 22 Structurele aspecten Ontbrekende informatie –Onderscheid Onbekende informatie Niet-gedefinieerde informatie –Null-waarden Null 0 Operatoren waaronwaar waar onwaar waar onwaar waar onwaar waar null waar null waarnull onwaar null onwaar null
Vakgroep Telecommunicatie en Informatieverwerking 23 Structurele aspecten Uitbreiding van andere operatoren: resultaat is ‘null’ als één van de argumenten ‘null’ is Gebruik: onwaar waar onwaar null onwaar waar MAYBE onwaar null waar Tabel Artiest Naam: varchar Voornaam: varchar Geboren: integer Van GoghVincent1853 DegasEdgar1834 EnsorJamesnull MonetClaudenull Gestorven: integer A_ID: char(3) A05 A02 A03 A04 Da VinciLeonardo1452nullA01
Vakgroep Telecommunicatie en Informatieverwerking 24 Structurele aspecten Queries: enkel tuples waarvoor de evaluatie van de criteria ‘waar’ oplevert worden opgenomen in het resultaat Problemen met null-waarden –Wet van uitgesloten derde ‘a (a) = onwaar’ en ‘a (a) = waar’ geldt niet langer want: ‘null (null) = null’ en ‘null (null) = null’ SELECT A_ID FROM Artiest WHERE Geboren >= 1800 SELECT A_ID FROM Artiest WHERE Geboren < 1800
Vakgroep Telecommunicatie en Informatieverwerking 25 Structurele aspecten –Defaultwaarden Problemen met defaultwaarden Geboren integer DEFAULT 0 versus Geboren integer NOT NULL
Vakgroep Telecommunicatie en Informatieverwerking 26 Overzicht Structurele aspecten Integriteitaspecten –Sleutels –Integriteitrestricties –Stored procedures –Triggers Gedragsaspecten
Vakgroep Telecommunicatie en Informatieverwerking 27 Integriteitaspecten Sleutels –Kandidaatsleutels Als K een deelverzameling is van de verzameling van alle attributen van een gegeven basisrelatie R, dan is K een kandidaatsleutel voor R als en slechts als voldaan is aan: 1. De uniciteiteigenschap: Geen enkele legale extentie van R bevat twee tuples met dezelfde waarden voor alle attributen uit K. 2. De irreducibiliteiteigenschap: Wanneer uit K attributen worden weggelaten, mag niet meer voldaan zijn aan de uniciteiteigenschap. Opmerking: Enkelvoudig versus samengesteld
Vakgroep Telecommunicatie en Informatieverwerking 28 Integriteitaspecten –Primaire sleutels Eén van de kandidaatsleutels wordt gekozen als primaire sleutel, alle overige worden alternatieve sleutels genoemd. Voorbeelden: PRIMARY KEY (A_ID) UNIQUE (Naam, Voornaam, Geboren)
Vakgroep Telecommunicatie en Informatieverwerking 29 Integriteitaspecten –Vreemde sleutels Een vreemde sleutel F van een basisrelatie R 2 is een verzameling van attributen van R 2, waarvoor geldt dat: 1. Er bestaat een basisrelatie R 1 (R 1 niet noodzakelijk verschillend van R 2 ) met een kandidaatsleutel K, die evenveel attributen bevat als F en waarbij er een één op één correspondentie is tussen de attributen van K en de attributen van F, zodat corresponderende attributen dezelfde geassocieerde datatypes hebben. 2. Op elk tijdstip komt elke reguliere waarde van F in R 2 eveneens voor als waarde van in K in een tuple van R 1. Voorbeeld: FOREIGN KEY (Artiest) REFERENCES Artiest
Vakgroep Telecommunicatie en Informatieverwerking 30 Integriteitaspecten Tabel Schilderij primaire sleutel = {S_ID} vreemde sleutels = {Artiest} en {Eigenaar} Tabel Artiest primaire sleutel = {A_ID} S_ID: char(3) Naam: varchar Artiest: char(3) Periode: integer Waarde: real Eigenaar: varchar S01VissershuisA041882Boymans S02De balletlesA021872Louvre S03Mona LisaA011499Louvre Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 EnsorJames1860 MonetClaude1840 Gestorven: integer A_ID: char(3) A01 A02 A03 A04 S05Na het badA021883Louvre
Vakgroep Telecommunicatie en Informatieverwerking 31 Integriteitaspecten Tabel Artiest primaire sleutel = {A_ID} vreemde sleutel = {Geïnspireerd_door} null A04 A02 Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 EnsorJames1860 MonetClaude1840 Gestorven: integer A_ID: char(3) A01 A02 A03 A04 A02 Geïnspireerd_door: char(3) Zelfreferentie Referentiële integriteit
Vakgroep Telecommunicatie en Informatieverwerking 32 Integriteitaspecten Integriteitrestricties Een integriteitrestrictie is een voorwaarde waaraan alle data uit een database op elk moment moeten voldoen. CREATE ASSERTION sterftejaarrestrictie CHECK ( Artiest.Gestorven >= Artiest.Geboren ); DROP ASSERTION sterftejaarrestrictie
Vakgroep Telecommunicatie en Informatieverwerking 33 Integriteitaspecten –Toestandrestricties versus transitierestricties –Relatierestrictie versus databaserestrictie (typerestricties en attribuutrestricties) De waarde van een schilderij moet een positief getal zijn (toestandrestrictie en relatierestrictie): CREATE ASSERTION waarderestrictie CHECK ( Schilderij.Waarde > 0 ); De periode van een schilderij moet binnen de leefperiode van de artiest vallen (toestandrestrictie en databaserestrictie): CREATE ASSERTION perioderestrictie CHECK ( NOT EXISTS ( SELECT * FROM Schilderij, Artiest WHERE Schilderij.Artiest = Artiest.A_ID AND ( Schilderij.Periode < Artiest.Geboren OR Schilderij.Periode > Artiest.Gestorven ) ) );
Vakgroep Telecommunicatie en Informatieverwerking 34 Integriteitaspecten Het loon van een werknemer mag niet afnemen (transitierestrictie en relatierestrictie): CREATE ASSERTION loonrestrictie CHECK ( Old.Werknemer.Loon <= New.Werknemer.Loon ); Hierbij zijn Old en New systeemfuncties die respectievelijk de oude en potentiële nieuwe waarde van het attribuut weergeven. De burgerlijke stand van een persoon moet correct worden aangepast (transitierestrictie en relatierestrictie): CREATE ASSERTION burgerlijke_standrestrictie CHECK ( NOT(Old.Persoon.Burg_Stand= ‘ongehuwd’ AND New.Persoon.Burg_Stand= ‘gescheiden’) ); KMSK bezit geen schilderijen van Da Vinci (toestandrestrictie en databaserestrictie): CREATE ASSERTION DaVinci_restrictie CHECK ( NOT EXISTS ( SELECT * FROM Schilderij, Artiest WHERE Schilderij.Artiest = Artiest.A_ID AND Schilderij.Eigenaar = KMSK AND Artiest.Naam = ‘Da Vinci’ ) );
Vakgroep Telecommunicatie en Informatieverwerking 35 Integriteitaspecten Stored procedures –SQL/PSM (Persisten Storage Module) –Opbouw Declaraties: ‘DECLARE’-instructie Belangrijkste controlestructuren: CREATE PROCEDURE procedurenaam (parameterlijst) lokale_declaraties procedure_corpus ‘CALL/RETURN’, ‘BEGIN/END’, ‘FOR/ENDFOR’, ‘REPEAT/UNTIL/ENDREPEAT’, ‘WHILE/ENDWHILE’, ‘LOOP/ENDLOOP’, ‘IF/THEN/ELSE/ELSEIF/ENDIF’, ‘LEAVE’ en ‘CASE/ENDCASE’
Vakgroep Telecommunicatie en Informatieverwerking 36 Integriteitaspecten CREATE PROCEDURE Controle_Voorraad (CodeIn IN varchar, Aantal OUT integer, Actie OUT varchar) AS BEGIN DECLARE Geldige_code integer; DECLARE Aantal_onbekend integer; SELECT COUNT(*) INTO Geldige_code FROM Voorraad WHERE Code=CodeIn; IF Geldige_code=0 THEN Actie=‘Onbestaande code!’ ELSE SELECT COUNT(*) INTO Aantal_onbekend FROM Voorraad WHERE Code=CodeIn AND Aantal IS NULL; IF Aantal_onbekend=1 THEN Actie=‘Manuele telling nodig!’ ELSE SELECT Aantal FROM Voorraad WHERE Code=CodeIn; IF Aantal<5 THEN Actie=‘Dringend bijbestellen!’ ELSEIF Aantal<10 THEN Actie = ‘Aandacht!’ ELSE Actie=‘Voldoende voorraad’; ENDIF; END;
Vakgroep Telecommunicatie en Informatieverwerking 37 Integriteitaspecten –Oproepen van een stored procedure CALL Controle_Voorraad (‘onderdeelcode’, Aantal, Actie); Praktijk: EXECUTE PROCEDURE Trigger Is een stored procedure die automatisch wordt uitgevoerd wanneer bij een bepaalde gebeurtenis voldaan is aan een bepaalde conditie –Naam –Trigger event –Optionele trigger condition –Triggered action
Vakgroep Telecommunicatie en Informatieverwerking 38 Integriteitaspecten CREATE TRIGGER Automatische_Controle_Voorraad AFTER UPDATE OF Aantal ON Voorraad FOR EACH ROW BEGIN IF Aantal IS NULL THEN InformeerGebruiker(Code, ‘Geen informatie beschikbaar!’) ELSEIF Aantal<5 THEN InformeerGebruiker(Code, ‘Dringend bijbestellen!’) ELSEIF Aantal<10 THEN InformeerGebruiker(Code, ‘Aandacht’) ELSE InformeerGebruiker(Code, ‘Voldoende voorraad’); ENDIF; END;
Vakgroep Telecommunicatie en Informatieverwerking 39 Overzicht Structurele aspecten Integriteitaspecten Gedragsaspecten –Relationele algebra
Vakgroep Telecommunicatie en Informatieverwerking 40 Gedragsaspecten Relationele algebra Aangepaste versies van traditionele verzamelingoperatoren vereniging of unie doorsnede verschil Cartesisch product Speciale relationele operatoren selectie projectie join deling
Vakgroep Telecommunicatie en Informatieverwerking 41 Gedragsaspecten Twee relatieschema’s zijn van hetzelfde type indien ze evenveel attributen bevatten en er een één op één correspondentie is tussen hun attributen, zodat corresponderende attributen dezelfde geassocieerde datatypes hebben. Als R een relatie is met attribuut A:T, dan resulteert de ‘rename’-operatie R RENAME A AS A new in een nieuwe relatie met een schema dat bekomen wordt uit het schema van R door het attribuut A:T is vervangen door het attribuut A new :T en dezelfde extentie als R.
Vakgroep Telecommunicatie en Informatieverwerking 42 Gedragsaspecten –De verenigingoperator Als R 1 en R 2 twee relaties zijn met schema’s van hetzelfde type, dan is de vereniging, R 1 UNION R 2 van deze relaties een relatie met een schema van hetzelfde type en een extentie die bestaat uit alle tuples die ofwel voorkomen in R 1, ofwel voorkomen in R 2, ofwel voorkomen in R 1 en R 2.
Vakgroep Telecommunicatie en Informatieverwerking 43 Gedragsaspecten Tabel Artiest_A Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 A_ID: char(3) A01 A02 Tabel Artiest_B Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 A_ID: char(3) A01 MonetClaude1840 A04 Tabel (Artiest_A UNION Artiest_B) Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 A_ID: char(3) A01 MonetClaude1840 A04 DegasEdgar1834 A02 vereniging
Vakgroep Telecommunicatie en Informatieverwerking 44 Gedragsaspecten –De doorsnede-operator Als R 1 en R 2 twee relaties zijn met schema’s van hetzelfde type, dan is de doorsnede, R 1 INTERSECT R 2 van deze relaties een relatie met een schema van hetzelfde type en een extentie die bestaat uit alle tuples die zowel voorkomen in R 1 als in R 2.
Vakgroep Telecommunicatie en Informatieverwerking 45 Gedragsaspecten Tabel Artiest_A Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 A_ID: char(3) A01 A02 Tabel Artiest_B Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 A_ID: char(3) A01 MonetClaude1840 A04 Tabel (Artiest_A INTERSECT Artiest_B) Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 A_ID: char(3) A01 doorsnede
Vakgroep Telecommunicatie en Informatieverwerking 46 Gedragsaspecten –De verschiloperator Als R 1 en R 2 twee relaties zijn met schema’s van hetzelfde type, dan is het verschil, R 1 MINUS R 2 van deze relaties een relatie met een schema van hetzelfde type en een extentie die bestaat uit alle tuples die wel voorkomen in R 1 en niet in R 2.
Vakgroep Telecommunicatie en Informatieverwerking 47 Gedragsaspecten Tabel Artiest_A Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 A_ID: char(3) A01 A02 Tabel Artiest_B Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 A_ID: char(3) A01 MonetClaude1840 A04 Tabel (Artiest_A MINUS Artiest_B) Naam: varchar Voornaam: varchar Geboren: integer DegasEdgar1834 A_ID: char(3) A02 verschil
Vakgroep Telecommunicatie en Informatieverwerking 48 Gedragsaspecten –De Cartesisch productoperator Als R 1 en R 2 twee relaties zijn die geen gemeenschappelijke attributen hebben, dan is het Cartesisch product, R 1 TIMES R 2 van deze relaties een nieuwe relatie waarvan de attributen uit het relatieschema worden bekomen door de unie te nemen van de verzameling van de attributen van R 1 en de verzameling van de attributen van R 2. De extentie van de resulterende relatie bestaat uit alle tuples die worden bekomen door een tuple dat voorkomt in R 1 samen te voegen met een tuple dat voorkomt in R 2.
Vakgroep Telecommunicatie en Informatieverwerking 49 Gedragsaspecten
Vakgroep Telecommunicatie en Informatieverwerking 50 Gedragsaspecten –De selectieoperator Als R een relatie is en e een logische expressie is waarvan de parameters alle attributen zijn van R dan resulteert de selectie, R WHERE e in een nieuwe relatie die dezelfde attributen heeft als R en waarvan de extentie bestaat uit alle tuples van R waarvoor de expressie e evalueert naar de waarheidswaarde ‘waar’.
Vakgroep Telecommunicatie en Informatieverwerking 51 Gedragsaspecten Tabel Artiest Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 MonetClaude1840 Gestorven: integer A_ID: char(3) A01 A02 A04 selectie Tabel (Artiest WHERE Geboren > 1800) Naam: varchar Voornaam: varchar Geboren: integer DegasEdgar1834 MonetClaude1840 Gestorven: integer A_ID: char(3) A02 A04
Vakgroep Telecommunicatie en Informatieverwerking 52 Gedragsaspecten –De projectieoperator Als R een relatie is en {A 1 :T 1, A 2 :T 2, …, A p :T p } een deelverza- meling is van de attributen van R dan resulteert de projectie, R {A 1, A 2, …, A p } in een nieuwe relatie waarvan het schema bekomen wordt uit het schema van R door enkel de attributen uit {A 1 :T 1, A 2 :T 2, …, A p :T p } te behouden en waarbij de extentie bestaat uit alle tuples t=(A 1 :w 1, A 2 :w 2, …, A p :w p ) waarvoor een tuple voorkomt in R met attribuutwaarde w 1 voor A 1, w 2 voor A 2, …, en w p voor A p.
Vakgroep Telecommunicatie en Informatieverwerking 53 Gedragsaspecten Tabel Artiest Naam: varchar Voornaam: varchar Geboren: integer Da VinciLeonardo1452 DegasEdgar1834 MonetClaude1840 Gestorven: integer A_ID: char(3) A01 A02 A04 Tabel (Artiest {A_ID, Naam, Voornaam}) Naam: varchar Voornaam: varchar Da VinciLeonardo A_ID: char(3) A01 MonetClaude A04 DegasEdgar A02 projectie
Vakgroep Telecommunicatie en Informatieverwerking 54 Gedragsaspecten –De ‘join’-operator De (natuurlijke) ‘inner join’-operator Als R 1 een relatie is met attributen {X 1 :T X1, X 2 :T X2, …, X m :T Xm, Y 1 :T Y1, Y 2 :T Y2, …, Y n :T Yn } en R 2 een relatie is met attributen {Y 1 :T Y1, Y 2 :T Y2, …, Y n :T Yn, Z 1 :T Z1, Z 2 :T Z2, …, Z p :T Zp } dan resulteert de join, R 1 JOIN R 2 in een nieuwe relatie waarvan het schema bestaat uit de attributen {X 1 :T X1, X 2 :T X2, …, X m :T Xm, Y 1 :T Y1, Y 2 :T Y2, …, Y n :T Yn, Z 1 :T Z1, Z 2 :T Z2, …, Z p :T Zp } en waarvan de extentie bestaat uit alle tuples die worden bekomen door een tuple van R 1 samen te voegen met een tuple van R 2 onder de voorwaarde dat alle gemeenschappelijke attributen gelijke waarden moeten hebben.
Vakgroep Telecommunicatie en Informatieverwerking 55 Gedragsaspecten Tabel Schilderij Tabel Artiest S_ID: char(3) SNaam: varchar A_ID: char(3) Periode: integer S01Vissershuisnull1882 S02De balletlesA S03Mona LisaA Naam: varchar Voornaam: varchar Da VinciLeonardo DegasEdgar A_ID: char(3) A01 A02 Tabel (Schilderij JOIN Artiest) S_ID: char(3) SNaam: varchar A_ID: char(3) Periode: integer S03Mona LisaA Naam: varchar Voornaam: varchar S02De balletlesA Da VinciLeonardo DegasEdgar join
Vakgroep Telecommunicatie en Informatieverwerking 56 Gedragsaspecten De ‘(left) outer join’-operator Als R 1 een relatie is met attributen {X 1 :T X1, X 2 :T X2, …, X m :T Xm, Y 1 :T Y1, Y 2 :T Y2, …, Y n :T Yn } en R 2 een relatie is met attributen {Y 1 :T Y1, Y 2 :T Y2, …, Y n :T Yn, Z 1 :T Z1, Z 2 :T Z2, …, Z p :T Zp } dan resulteert de (left) outer join, R 1 OUTER JOIN R 2 in een nieuwe relatie die bekomen wordt door het resultaat van de ‘join’-operatie R 1 JOIN R 2 uit te breiden met alle tuples uit R 1 waarvoor minstens één van de gemeenschappelijke attributen een null-waarde bevat en daarbij de ontbrekende p attribuut- waarden van R 2 te modelleren met extra null-waarden.
Vakgroep Telecommunicatie en Informatieverwerking 57 Gedragsaspecten Tabel Schilderij Tabel Artiest S_ID: char(3) SNaam: varchar A_ID: char(3) Periode: integer S01Vissershuisnull1882 S02De balletlesA S03Mona LisaA Naam: varchar Voornaam: varchar Da VinciLeonardo DegasEdgar A_ID: char(3) A01 A02 Tabel (Schilderij OUTER JOIN Artiest) S_ID: char(3) SNaam: varchar A_ID: char(3) Periode: integer S01Vissershuisnull1882 S02De balletlesA S03Mona LisaA Naam: varchar Voornaam: varchar null DegasEdgar Da VinciLeonardo outer join
Vakgroep Telecommunicatie en Informatieverwerking 58 Gedragsaspecten –De delingoperator Als R 1 een relatie is met attributen {X 1 :T X1, X 2 :T X2, …, X m :T Xm, Y 1 :T Y1, Y 2 :T Y2, …, Y n :T Yn } en R 2 de relatie is met attributen {X 1 :T X1, X 2 :T X2, …, X m :T Xm } dan resulteert de deling, R 1 DIVIDEBY R 2 in een nieuwe relatie waarvan het schema bestaat uit de attributen {Y 1 :T Y1, Y 2 :T Y2, …, Y n :T Yn } en de extentie bestaat uit alle tuples t(Y 1 :w Y1, Y 2 :w Y2, …, Y n :w Yn ) waarvoor alle mogelijke samenvoegingen met een tuple uit R 2 voorkomen in R 1.
Vakgroep Telecommunicatie en Informatieverwerking 59 Gedragsaspecten Tabel Tentoonstelling SNaam: varchar Periode: integer Vissershuis1882 De balletles1872 Mona Lisa1499 Tabel (Tentoonstelling DIVIDEBY Schilderij) deling Naam: varchar Da Vinci Degas Monet Thema: varchar Vrouw Woning Tabel Schilderij SNaam: varchar Periode: date De balletles1872 Mona Lisa1499 Naam: varchar Da Vinci Degas X Y XY X XY DIVIDEBY X Thema: varchar Vrouw
Vakgroep Telecommunicatie en Informatieverwerking 60 Gedragsaspecten –Bijkomende operatoren De uitbreidingsoperator De groepeeroperator Aggregatieoperatoren
Vakgroep Telecommunicatie en Informatieverwerking 61 Gedragsaspecten De uitbreidingsoperator Als R een relatie is, {A 1 :T 1, A 2 :T 2, …, A p :T p } een deelverzameling is van de attributen van R en {B 1 :F 1, B 2 :F 2, …, B q :F q } een verza- meling is van afgeleide attributen B i :F i, i=1,2,…,q, met B i een unieke attribuutnaam, die niet voorkomt in R en F i een functie over de attributen van R, die constanten kan bevatten en gebruikt wordt om de waarden van B i te berekenen, dan resulteert de uitbreiding, EXTEND R {A 1, A 2, …, A p } (B 1 :F 1, B 2 :F 2, …, B q :F q ) in een nieuwe relatie waarvan het schema bekomen wordt door de afgeleide attributen uit {B 1 :F 1, B 2 :F 2, …, B q :F q } toe te voegen aan het schema van de projectie R {A 1, A 2, …, A p } en waarvan de extentie wordt bekomen door elk tuple van R {A 1, A 2, …, A p } uit te breiden met de waarden B i :w i, i=1,2,…,q, met w i de waarde die bekomen wordt door F i te evalueren met de attribuutwaarden van het corresponderende tuple uit R.
Vakgroep Telecommunicatie en Informatieverwerking 62 Gedragsaspecten Tabel (EXTEND Schilderij{S_ID, Naam} (Prijs:Waarde/ )) S_ID: char(3) Naam: varchar Prijs: Waarde/ S01Vissershuis16 S02De balletles8,5 S03Mona Lisa75 uitbreiding
Vakgroep Telecommunicatie en Informatieverwerking 63 Gedragsaspecten De groepeeroperator Als R een relatie is en {A 1 :T 1, A 2 :T 2, …, A p :T p } een deelverzame- ling is van de attributen van R dan resulteert de groepering, R GROUP (A 1, A 2, …, A p ) in een nieuwe relatie met hetzelfde schema als R, maar waarbij de tuples in de extentie gegroepeerd zijn in disjuncte deelverza- melingen zodat een deelverzameling enkel tuples bevat met een gelijke waarde voor elk van de attributen A 1, A 2, …, A p.
Vakgroep Telecommunicatie en Informatieverwerking 64 Gedragsaspecten Tabel (Schilderij GROUP (Eigenaar)) S_ID: char(3) Naam: varchar Artiest: char(3) Periode: integer Waarde: real Eigenaar: varchar S01VissershuisA041882Boymans S02De balletlesA021872Louvre S03Mona LisaA011499Louvre groepering groep1 groep2 Gedragsaspecten
Vakgroep Telecommunicatie en Informatieverwerking 65 Gedragsaspecten Aggregatieoperatoren –Soorten »COUNT »MAX, MIN, AVG »SUM –Gebruik »In combinatie met de uitbreidingsoperator »Optioneel: in combinatie met de groepeeroperator
Vakgroep Telecommunicatie en Informatieverwerking 66 Gedragsaspecten Tabel (EXTEND Schilderij {} (Max_waarde:MAX(Waarde), Min_waarde:MIN(Waarde))) Max_waarde:MAX(Waarde) uitbreiding + aggregatie Min_waarde:MIN(Waarde) Gedragsaspecten Tabel Schilderij S_ID: char(3) Naam: varchar Artiest: char(3) Periode: integer Waarde: real Eigenaar: varchar S01VissershuisA041882Boymans S02De balletlesA021872Louvre S03Mona LisaA011499Louvre
Vakgroep Telecommunicatie en Informatieverwerking 67 Gedragsaspecten Tabel (EXTEND Schilderij {Eigenaar} (Totaalwaarde:SUM(Waarde)) GROUP (Eigenaar)) Totaalwaarde:SUM(Waarde) Eigenaar:varchar Boymans Louvre groepering + uitbreiding + aggregatie Gedragsaspecten Tabel (Schilderij GROUP (Eigenaar)) S_ID: char(3) Naam: varchar Artiest: char(3) Periode: integer Waarde: real Eigenaar: varchar S01VissershuisA041882Boymans S02De balletlesA021872Louvre S03Mona LisaA011499Louvre groepering groep1 groep2
Vakgroep Telecommunicatie en Informatieverwerking 68 Gedragsaspecten –Het gesloten zijn van de relationele algebra algebraïsche expressies