Overzicht informatie- vergaring conceptueel ontwerp logisch ontwerp

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

Databases en databasesystemen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Entiteit-Relatie Model
Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Het selecteren van data uit meerdere gekoppelde tabellen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Normaliseren Datamodellering 2006.
<Mdl01 hoorcollege 1>
Opleiding AI cursus Databases
LauwersCollege Buitenpost Informatica
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Relationele databases: Fysiek databaseontwerp en SQL
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Normalisatie Relationeel databaseontwerp:
Opleiding Kunstmatige Intelligentie cursus Databases voor AI
Opleiding AI cursus Databases
Vrij Technisch Instituut - Hasselt
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Inleidend probleem Data structuur (hiërarchie van classes)
Databases I Relationeel Model Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Databases en databasesystemen
Workshop PHP Een productencatalogus Met database.
Relationele databases: Logisch databaseontwerp
Datamodellen en databasemodellen
Databases.
Laat software voor je werken
SQL ( SERVER ) Les #02: T-SQL. A GENDA Herhaling les 4 Views SELECT…INTO Beheren van tabellen: CREATE ALTER DROP Opdracht voor de volgende les.
LauwersCollege Buitenpost Informatica
7 Databases. SAMENGESTELDE VOORWAARDEN 1 Wat is het adres van Odile Goossens? SELECT adres, woonplaats FROM leden WHERE naam = ‘Goossens’ AND voornaam.
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Objecttechnologie in databases
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Het relationeel databasemodel Hoofdstuk 4 Database, Document and Content Management.
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
Databases I (H. 7: 1-3) Het Relationele Model Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Databases I Praktische aspecten Database Design en Database System Architectuur Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve.
College 3 Hoofdstuk 3: Basis concepten van een relationele database
Hoofdstuk 11 Databasemanagementsystem. hoofdstuk 112 STROKENDIAGRAMMEN llnrvoornaamtussenvachternaamstraathuisnummerpostcodeplaatstelefoongeslachtgebdatumklas.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 3 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
BIMAIV03 Les A1 BIMAIV03 Les A1 Databases. De gegevens in een database vormen de grondstof voor informatie De informatie wordt opgevraagd in de taal met.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 2 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
Week 6 BIMAIV03 les B1. DML en DDL ata D anipulation M anguage L ata D efinition D anguage L.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Week 1 BIMAIV03 Les B2 BIMAIV03 Les B2. Uit het voorgaande... CREATE TABLE... Opdracht om een nieuwe tabel binnen de database te creëren. Aandachtspunten.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
EERDER….. Tabellen rij (record, tuple, occurence) kolom (attribuut, veld) tabel (relatie) tabelstructuur : patient(PAT#,PNAAM,LEEFTIJD,GESLACHT,ARTS)
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
SQL Cursus deel
LauwersCollege Buitenpost Informatica
Moving objects in a geo-DBMS
SQL Les February 2019.
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 7 24 February 2019.
SQL Les 6 14 April 2019.
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
Databases SQL.
Transcript van de presentatie:

Overzicht informatie- vergaring conceptueel ontwerp logisch ontwerp domeinanalyse functionele analyse behoefteanalyse conceptueel ontwerp conceptueel model (bijvoorbeeld EER-diagram) functionele beschrijving databasemodel- onafhankelijk logisch ontwerp dbms- onafhankelijk logisch databaseschema (bijvoorbeeld relationeel) gedragspecificaties fysieke ontwerp DDL-scripts implementatie van gedrag

Relationele databases: het relationeel databasemodel Principes van databases Relationele databases: het relationeel databasemodel Hoofdstuk 4

Overzicht Structurele aspecten Integriteitaspecten Gedragsaspecten

Structurele aspecten Integriteitaspecten Gedragsaspecten Basisrelaties Overzicht Structurele aspecten Basisrelaties Metadata Views Werken met indexen Behandelen van ontbrekende informatie Integriteitaspecten Gedragsaspecten

Basisrelaties Atomaire datatypes Structurele aspecten Domein Operatoren voorbeeld: Boolean domein = {waar, onwaar} verzameling van operatoren = {=, , , , } Typecompatibiliteit  waar onwaar  waar onwaar  waar waar onwaar waar waar waar waar onwaar onwaar onwaar onwaar onwaar waar onwaar onwaar waar

Basisrelaties Structurele aspecten Relatieschema Het schema R(A1:T1, A2:T2, …,An:Tn) van een relatie is opgebouwd uit een relatienaam R en een eindige verzameling van attributen {A1:T1, A2:T2, …,An:Tn}. Elk attribuut Ai:Ti, 1in is op zijn beurt opgebouwd uit een attribuut- naam Ai en een geassocieerd atomair datatype Ti.

Structurele aspecten Visualisatie Tabel Artiest Naam: varchar Voornaam: Geboren: integer Da Vinci Leonardo 1452 Degas Edgar 1834 Ensor James 1860 Monet Claude 1840 Gestorven: 1519 1917 1949 1926 A_ID: char(3) A01 A02 A03 A04

Structurele aspecten Terminologie graad attributen relatienaam Tabel Artiest Naam: varchar Voornaam: Geboren: integer Da Vinci Leonardo 1452 Degas Edgar 1834 Ensor James 1860 Monet Claude 1840 Gestorven: 1519 1917 1949 1926 A_ID: char(3) A01 A02 A03 A04 graad relatienaam attributen intentie extentie tuples kardinaliteit relatie cel met attribuutwaarde

Structurele aspecten Eigenschappen Interpretatie 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

relationele database = verzameling van basisrelaties Structurele aspecten Metadata: de catalogus Gebruikersgedefinieerde relaties Systeemgedefinieerde relaties Werken met de catalogus relationele database = verzameling van basisrelaties data metadata gebruikers en toepassingen dbms

relationele database = verzameling van basisrelaties Structurele aspecten Views of afgeleide relaties Een view is een benoemde, virtuele relatie die is afgeleid van gebruikersgedefinieerde en/of systeemgedefinieerde basisrelaties en/of andere views. relationele database = verzameling van basisrelaties data metadata view

Structurele aspecten basisrelatie + definiërende expressie view Tabel Artiest Naam: varchar Voornaam: Geboren: integer Da Vinci Leonardo 1452 Degas Edgar 1834 Ensor James 1860 Monet Claude 1840 Gestorven: 1519 1917 1949 1926 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

Structurele aspecten basisrelatie + definiërende expressie view Tabel Artiest Naam: varchar Voornaam: Geboren: integer Da Vinci Leonardo 1452 Degas Edgar 1834 Ensor James 1860 Monet Claude 1840 Gestorven: 1519 1917 1949 1926 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 Leeftijd: 67 83 89 86

Structurele aspecten Nut van views Logische data-onafhankelijkheid (Lenigen van individuele gebruikersnoden) Afleiden van nieuwe data Inkorten van bevragingsinstructies Afschermen van data

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

Indexen Structurele aspecten 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.

Structurele aspecten Opmerking: uniciteitindex CREATE INDEX ID_Naam Tabel Artiest Naam: varchar Voornaam: Geboren: integer Van Gogh Vincent 1853 Degas Edgar 1834 Ensor James 1860 Monet Claude 1840 Gestorven: 1890 1917 1949 1926 A_ID: char(3) A05 A02 A03 A04 Da Vinci Leonardo 1452 1519 A01 Index ID_Naam Index ID_Sterfdata CREATE INDEX ID_Naam ON Artiest(Naam ASC); CREATE INDEX ID_Sterfdata ON Artiest(Gestorven DESC); Opmerking: uniciteitindex

Ontbrekende informatie Structurele aspecten Ontbrekende informatie Onderscheid Onbekende informatie Niet-gedefinieerde informatie Null-waarden Null  0 Operatoren  waar onwaar null  waar onwaar null waar waar onwaar null waar waar waar waar onwaar onwaar onwaar onwaar onwaar waar onwaar null null null onwaar null null waar null null

Structurele aspecten  MAYBE waar onwaar waar onwaar onwaar waar onwaar onwaar null null null waar Uitbreiding van andere operatoren: resultaat is ‘null’ als één van de argumenten ‘null’ is Gebruik: Tabel Artiest Naam: varchar Voornaam: Geboren: integer Van Gogh Vincent 1853 Degas Edgar 1834 Ensor James null Monet Claude Gestorven: 1890 1917 1949 1926 A_ID: char(3) A05 A02 A03 A04 Da Vinci Leonardo 1452 A01

Structurele aspecten Defaultwaarden Problemen met defaultwaarden Geboren integer DEFAULT 0 versus Geboren integer NOT NULL

Structurele aspecten Integriteitaspecten Gedragsaspecten Sleutels Overzicht Structurele aspecten Integriteitaspecten Sleutels Integriteitrestricties Stored procedures Triggers Gedragsaspecten

Sleutels Kandidaatsleutels Integriteitaspecten 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

Integriteitaspecten Primaire sleutels Eén van de kandidaatsleutels wordt gekozen als primaire sleutel, alle overige worden alternatieve sleutels genoemd.

Vreemde sleutels Integriteitaspecten Een vreemde sleutel F van een basisrelatie R2 is een verzameling van attributen van R2, waarvoor geldt dat: 1. Er bestaat een basisrelatie R1 (R1 niet noodzakelijk verschillend van R2) met een kandidaatsleutel K, die evenveel attributen bevat als F en waarbij er een één- op-ééncorrespondentie 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 R2 eveneens voor als waarde van in K in een tuple van R1.

Integriteitaspecten Tabel Schilderij primaire sleutel = {S_ID} vreemde sleutels = {Artiest} en {Eigenaar} S_ID: char(3) Naam: varchar Artiest: char(3) Periode: integer Waarde: real Eigenaar: varchar S01 Vissershuis A04 1882 16.000.000 Boijmans S02 De balletles A02 1872 8.500.000 Louvre S03 Mona Lisa A01 1499 75.000.000 Louvre S05 Na het bad A02 1883 1.500.000 Louvre Tabel Artiest primaire sleutel = {A_ID} A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer Gestorven: integer A01 Da Vinci Leonardo 1452 1519 A02 Degas Edgar 1834 1917 A03 Ensor James 1860 1949 A04 Monet Claude 1840 1926

Integriteitaspecten Zelfreferentie Tabel Artiest primaire sleutel = {A_ID} vreemde sleutel = {Geïnspireerd_door} null A04 A02 Naam: varchar Voornaam: Geboren: integer Da Vinci Leonardo 1452 Degas Edgar 1834 Ensor James 1860 Monet Claude 1840 Gestorven: 1519 1917 1949 1926 A_ID: char(3) A01 A03 Geïnspireerd_door:

Integriteitsrestricties Integriteitaspecten Integriteitsrestricties Een integriteitsrestrictie 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

Toestandsrestricties versus transitierestricties Integriteitaspecten Toestandsrestricties versus transitierestricties Relatierestrictie versus databaserestrictie (typerestricties en attribuutrestricties) De waarde van een schilderij moet een positief getal zijn (toestandsrestrictie en relatierestrictie): CREATE ASSERTION waarderestrictie CHECK ( Schilderij.Waarde > 0 ); De periode van een schilderij moet binnen de leefperiode van de artiest vallen (toestandsrestrictie 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 ) ) );

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 (toestandsrestrictie 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’ ) );

Structurele aspecten Integriteitaspecten Gedragsaspecten Overzicht Structurele aspecten Integriteitaspecten Gedragsaspecten Relationele algebra

Relationele algebra Gedragsaspecten Aangepaste versies van traditionele verzamelingoperatoren vereniging of unie doorsnede verschil cartesisch product Speciale relationele operatoren selectie projectie join deling

Gedragsaspecten Twee relatieschema’s zijn van hetzelfde type indien ze evenveel attributen bevatten en er een één-op-ééncorrespondentie 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 Anew in een nieuwe relatie met een schema dat bekomen wordt uit het schema van R door het attribuut A:T is te vervangen door het attribuut Anew:T en met dezelfde extentie als R.

De verenigingoperator Gedragsaspecten De verenigingoperator Als R1 en R2 twee relaties zijn met schema’s van hetzelfde type, dan is de vereniging, R1 UNION R2 van deze relaties een relatie met een schema van hetzelfde type en een extentie die bestaat uit alle tuples die ofwel voorkomen in R1, ofwel voorkomen in R2, ofwel voorkomen in R1 en R2.

Gedragsaspecten vereniging Tabel Artiest_A Tabel Artiest_B A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer A01 Da Vinci Leonardo 1452 A01 Da Vinci Leonardo 1452 A02 Degas Edgar 1834 A04 Monet Claude 1840 Tabel (Artiest_A UNION Artiest_B) A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer vereniging A01 Da Vinci Leonardo 1452 A02 Degas Edgar 1834 A04 Monet Claude 1840

De doorsnede-operator Gedragsaspecten De doorsnede-operator Als R1 en R2 twee relaties zijn met schema’s van hetzelfde type, dan is de doorsnede, R1 INTERSECT R2 van deze relaties een relatie met een schema van hetzelfde type en een extentie die bestaat uit alle tuples die zowel voorkomen in R1 als in R2.

Gedragsaspecten doorsnede Tabel Artiest_A Tabel Artiest_B A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer A01 Da Vinci Leonardo 1452 A01 Da Vinci Leonardo 1452 A02 Degas Edgar 1834 A04 Monet Claude 1840 Tabel (Artiest_A INTERSECT Artiest_B) A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer doorsnede A01 Da Vinci Leonardo 1452

De verschiloperator Gedragsaspecten Als R1 en R2 twee relaties zijn met schema’s van hetzelfde type, dan is het verschil, R1 MINUS R2 van deze relaties een relatie met een schema van hetzelfde type en een extentie die bestaat uit alle tuples die wel voorkomen in R1 en niet in R2.

Gedragsaspecten verschil Tabel Artiest_A Tabel Artiest_B A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer A01 Da Vinci Leonardo 1452 A01 Da Vinci Leonardo 1452 A02 Degas Edgar 1834 A04 Monet Claude 1840 Tabel (Artiest_A MINUS Artiest_B) verschil A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer A02 Degas Edgar 1834

De cartesische productoperator Gedragsaspecten De cartesische productoperator Als R1 en R2 twee relaties zijn die geen gemeenschappelijke attributen hebben, dan is het cartesisch product, R1 TIMES R2 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 R1 en de verzameling van de attributen van R2. De extentie van de resulterende relatie bestaat uit alle tuples die worden bekomen door een tuple dat voorkomt in R1 samen te voegen met een tuple dat voorkomt in R2.

Gedragsaspecten cartesisch product Tabel Schilderij Tabel Artiest S_ID: char(3) SNaam: varchar Artiest: Periode: integer S01 Vissershuis null 1882 S02 De balletles A02 1872 S03 Mona Lisa A01 1499 Naam: Voornaam: Da Vinci Leonardo Degas Edgar A_ID: Tabel (Schilderij TIMES Artiest) cartesisch product

De selectieoperator Gedragsaspecten 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’.

Gedragsaspecten selectie Tabel Artiest A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer Gestorven: integer A01 Da Vinci Leonardo 1452 1519 A02 Degas Edgar 1834 1917 A04 Monet Claude 1840 1926 Tabel (Artiest WHERE Geboren > 1800) A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer Gestorven: integer selectie A02 Degas Edgar 1834 1917 A04 Monet Claude 1840 1926

De projectieoperator Gedragsaspecten Als R een relatie is en {A1:T1, A2:T2, …, Ap:Tp} een deelverza- meling is van de attributen van R dan resulteert de projectie, R {A1, A2, …, Ap} in een nieuwe relatie waarvan het schema bekomen wordt uit het schema van R door enkel de attributen uit {A1:T1, A2:T2, …, Ap:Tp} te behouden en waarbij de extentie bestaat uit alle tuples t=(A1:w1, A2:w2, …, Ap:wp) waarvoor een tuple voorkomt in R met attribuutwaarde w1 voor A1, w2 voor A2, …, en wp voor Ap.

Gedragsaspecten projectie Tabel Artiest A_ID: char(3) Naam: varchar Voornaam: varchar Geboren: integer Gestorven: integer A01 Da Vinci Leonardo 1452 1519 A02 Degas Edgar 1834 1917 A04 Monet Claude 1840 1926 Tabel (Artiest {A_ID, Naam, Voornaam}) A_ID: char(3) Naam: varchar Voornaam: varchar projectie A01 Da Vinci Leonardo A02 Degas Edgar A04 Monet Claude

De ‘join’-operator Gedragsaspecten De (natuurlijke) ‘inner join’-operator Als R1 een relatie is met attributen {X1:TX1, X2:TX2, …, Xm:TXm, Y1:TY1, Y2:TY2, …, Yn:TYn} en R2 een relatie is met attributen {Y1:TY1, Y2:TY2, …, Yn:TYn, Z1:TZ1, Z2:TZ2, …, Zp:TZp} dan resulteert de join, R1 JOIN R2 in een nieuwe relatie waarvan het schema bestaat uit de attributen {X1:TX1, X2:TX2, …, Xm:TXm, Y1:TY1, Y2:TY2, …, Yn:TYn, Z1:TZ1, Z2:TZ2, …, Zp:TZp} en waarvan de extentie bestaat uit alle tuples die worden bekomen door een tuple van R1 samen te voegen met een tuple van R2 onder de voorwaarde dat alle gemeenschappelijke attributen gelijke waarden moeten hebben.

Gedragsaspecten join Tabel Schilderij Tabel Artiest S_ID: char(3) SNaam: varchar A_ID: char(3) Periode: integer A_ID: char(3) Naam: varchar Voornaam: varchar S01 Vissershuis null 1882 A01 Da Vinci Leonardo S02 De balletles A02 1872 A02 Degas Edgar S03 Mona Lisa A01 1499 Tabel (Schilderij JOIN Artiest) S_ID: char(3) SNaam: varchar A_ID: char(3) Periode: integer Naam: varchar Voornaam: varchar join S02 De balletles A02 1872 Degas Edgar S03 Mona Lisa A01 1499 Da Vinci Leonardo

De ‘(left) outer join’-operator Gedragsaspecten De ‘(left) outer join’-operator Varianten: ‘right outer join’ en ‘full outer join’ Als R1 een relatie is met attributen {X1:TX1, X2:TX2, …, Xm:TXm, Y1:TY1, Y2:TY2, …, Yn:TYn} en R2 een relatie is met attributen {Y1:TY1, Y2:TY2, …, Yn:TYn, Z1:TZ1, Z2:TZ2, …, Zp:TZp} dan resulteert de (left) outer join, R1 OUTER JOIN R2 in een nieuwe relatie die bekomen wordt door het resultaat van de ‘join’-operatie R1 JOIN R2 uit te breiden met alle tuples uit R1 waarvoor minstens één van de gemeenschappelijke attributen een null-waarde bevat en daarbij de ontbrekende p attribuut- waarden van R2 te modelleren met extra null-waarden.

Gedragsaspecten outer join Tabel Schilderij Tabel Artiest S_ID: char(3) SNaam: varchar A_ID: char(3) Periode: integer A_ID: char(3) Naam: varchar Voornaam: varchar S01 Vissershuis null 1882 A01 Da Vinci Leonardo S02 De balletles A02 1872 A02 Degas Edgar S03 Mona Lisa A01 1499 Tabel (Schilderij OUTER JOIN Artiest) S_ID: char(3) SNaam: varchar A_ID: char(3) Periode: integer Naam: varchar Voornaam: varchar outer join S01 Vissershuis null 1882 null null S02 De balletles A02 1872 Degas Edgar S03 Mona Lisa A01 1499 Da Vinci Leonardo

De delingoperator Gedragsaspecten Als R1 een relatie is met attributen {X1:TX1, X2:TX2, …, Xm:TXm, Y1:TY1, Y2:TY2, …, Yn:TYn} en R2 de relatie is met attributen {X1:TX1, X2:TX2, …, Xm:TXm} dan resulteert de deling, R1 DIVIDEBY R2 in een nieuwe relatie waarvan het schema bestaat uit de attributen {Y1:TY1, Y2:TY2, …, Yn:TYn} en de extentie bestaat uit alle tuples t(Y1:wY1, Y2:wY2, …, Yn:wYn) waarvoor alle mogelijke samenvoegingen met een tuple uit R2 voorkomen in R1.

Gedragsaspecten X Y XY XY DIVIDEBY X deling Tabel Tentoonstelling SNaam: varchar Periode: integer Vissershuis 1882 De balletles 1872 Mona Lisa 1499 Tabel (Tentoonstelling DIVIDEBY Schilderij) deling Naam: Da Vinci Degas Monet Thema: Vrouw Woning Tabel Schilderij date X Y XY XY DIVIDEBY X

Bijkomende operatoren Gedragsaspecten Bijkomende operatoren De uitbreidingsoperator De groepeeroperator Aggregatieoperatoren

De uitbreidingsoperator Gedragsaspecten De uitbreidingsoperator Als R een relatie is, {A1:T1, A2:T2, …, Ap:Tp} een deelverzameling is van de attributen van R en {B1:F1, B2:F2, …, Bq:Fq} een verza- meling is van afgeleide attributen Bi:Fi, i=1,2,…,q, met Bi een unieke attribuutnaam, die niet voorkomt in R en Fi een functie is over de attributen van R, die constanten kan bevatten en gebruikt wordt om de waarden van Bi te berekenen, dan resulteert de uitbreiding, EXTEND R {A1, A2, …, Ap} (B1:F1, B2:F2, …, Bq:Fq) in een nieuwe relatie waarvan het schema bekomen wordt door de afgeleide attributen uit {B1:F1, B2:F2, …, Bq:Fq} toe te voegen aan het schema van de projectie R {A1, A2, …, Ap} en waarvan de extentie wordt bekomen door elk tuple van R {A1, A2, …, Ap} uit te breiden met de waarden Bi:wi, i=1,2,…,q, met wi de waarde die bekomen wordt door Fi te evalueren met de attribuutwaarden van het corresponderende tuple uit R.

Gedragsaspecten uitbreiding Tabel (EXTEND Schilderij{S_ID, Naam} (Prijs:Waarde/1.000.000)) S_ID: char(3) Naam: varchar Prijs: Waarde/1.000.000 uitbreiding S01 Vissershuis 16 S02 De balletles 8,5 S03 Mona Lisa 75

Gedragsaspecten De groepeeroperator Als R een relatie is en {A1:T1, A2:T2, …, Ap:Tp} een deelverzame- ling is van de attributen van R dan resulteert de groepering, R GROUP (A1, A2, …, Ap) 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 A1, A2, …, Ap.

Gedragsaspecten Gedragsaspecten Tabel (Schilderij GROUP (Eigenaar)) S_ID: char(3) Naam: varchar Gedragsaspecten Artiest: char(3) Periode: integer Waarde: real Eigenaar: varchar groepering groep1 S01 Vissershuis A04 1882 16.000.000 Boymans S02 De balletles A02 1872 8.500.000 Louvre groep2 S03 Mona Lisa A01 1499 75.000.000 Louvre

Aggregatieoperatoren Gedragsaspecten Aggregatieoperatoren Soorten COUNT MAX, MIN, AVG SUM Gebruik In combinatie met de uitbreidingsoperator Optioneel: in combinatie met de groepeeroperator

Gedragsaspecten Gedragsaspecten Tabel Schilderij S_ID: char(3) Naam: varchar Gedragsaspecten Artiest: char(3) Periode: integer Waarde: real Eigenaar: varchar S01 Vissershuis A04 1882 16.000.000 Boymans S02 De balletles A02 1872 8.500.000 Louvre S03 Mona Lisa A01 1499 75.000.000 Louvre Tabel (EXTEND Schilderij {} (Max_waarde:MAX(Waarde), Min_waarde:MIN(Waarde))) uitbreiding + aggregatie Max_waarde:MAX(Waarde) Min_waarde:MIN(Waarde) 75.000.000 8.500.000

Gedragsaspecten Gedragsaspecten Tabel (Schilderij GROUP (Eigenaar)) S_ID: char(3) Naam: varchar Gedragsaspecten Artiest: char(3) Periode: integer Waarde: real Eigenaar: varchar groepering groep1 S01 Vissershuis A04 1882 16.000.000 Boymans S02 De balletles A02 1872 8.500.000 Louvre groep2 S03 Mona Lisa A01 1499 75.000.000 Louvre Tabel (EXTEND Schilderij {Eigenaar} (Totaalwaarde:SUM(Waarde)) GROUP (Eigenaar)) groepering + uitbreiding + aggregatie Eigenaar:varchar Totaalwaarde:SUM(Waarde) Boymans 16.000.000 Louvre 83.500.000