De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

College 3 Hoofdstuk 3: Basis concepten van een relationele database

Verwante presentaties


Presentatie over: "College 3 Hoofdstuk 3: Basis concepten van een relationele database"— Transcript van de presentatie:

1 College 3 Hoofdstuk 3: Basis concepten van een relationele database tabel attribuutwaarden: domeinen, null entity integrity en referential integrity data manipulatie in een relationele database

2 De elementen van een tabel/ relation
tabelkop: schema heading attribuut, veldnaam, Kolomkop attribute record, entiteit, rij, tupel Tuple, row record Set body Veldwaarde value Kolom column NB Attribuut heeft een domein

3 Domeinen Domein van een attribuut kan specifieker zijn dan alleen een
datatype, zoals number, string of date - Range van mogelijke waarden - Keuzelijst van waarden Verwijzende sleutel: waarde uit andere tabel (Access: lookup-field – DEMO) Nog meer semantiek wenselijk maar meestal niet goed te definiëren in een database: - Verder onderscheid: lengtemaat, gewichtsmaat e.d. - Mogelijke operaties gekoppeld aan domein

4 Null Null (een leeg veld)
kan bij vrijwel elk datatype gebruikt worden (boolean?) Wat kan null betekenen? - waarde ontbreekt nog of is onbekend - attribuut bij deze entiteit niet van toepassing Null is geen waarde, wordt niet gebruikt bij berekeningen (gemiddelde, etc) null is niet 0 (number), is niet “” (string) Null wordt niet gebruikt bij vergelijkingen als leeftijd < 10, aantal = 0 Je kunt alleen testen: is null of is not null

5 Sleutels in een tabel Kandidaatsleutel:
een attribuut of een minimale combinatie van attributen die te gebruiken is om een entiteit uniek te identificeren Primaire sleutel: de kandidaatsleutel die gekozen is om de entiteit uniek te identificeren Alternatieve sleutel: een (eventuele) andere sleutel naast de primaire sleutel Verwijzende/ refererende sleutel (foreign key) een attribuut dat verwijst naar een entiteit in een andere tabel, doordat het gelijk is aan de primaire sleutel van die andere tabel. Bij de keuze van sleutels moet niet alleen naar de huidige concrete data gekeken worden, maar over alle mogelijkheden worden nagedacht!

6 Sets in een RDBS Een database
bevat een set tabelschema’s (entiteitsklassen) Een tabelschema (entiteitsklasse) bevat een set attribuutnamen met hun domein Een tabel bevat een set records (entiteiten) Een record bevat een set waarden gekoppeld aan attribuutnamen Een resultaat van een view of query is een tabel NB hoewel settheorie de basis is van het relationeel model wordt in Access niet altijd in sets gewerkt en kun je toch duplicaat records krijgen, gebruik zo nodig DISTINCT(ROW).

7 Verzamelingen Het relationeel model is gebaseerd op de verzamelingenleer. Een verzameling (set) bestaat uit 0 - N () elementen. Het aantal elementen: de kardinaliteit van de set. Een element kan zelf weer een set zijn. {} lege set {1,8,3} een set met 3 elementen {{2,4},{1,8}} een set met twee sets als elementen De elementen van een set zijn ongeordend {1,8,3} = {8,1,3} De elementen van een set zijn uniek (vgl groep individuen) {1,8,3,3,1} = {1,8,3}

8 Operaties op sets: Venndiagram
3 2 sets, b.v. studenten en barkeepers Samenvoegen van twee sets: vereniging / union A B {1,2,5,6}  {2,6,7} = {1,2,5,6,7} Gemeenschappelijke deel van twee sets: doorsnede / intersection A  B {1,2,5,6}  {2,6,7} = {2,6} verschil / difference / minus bij twee sets: A - B {1,2,5,6} – {2,6,7} = {1,5} 1 2 7 5 6 s b 3 1 2 7 5 6 b s 3 1 2 7 5 6 s b

9 Overzicht operaties op tabellen
Setoperaties op meer dan 1 tabel union, intersection, minus Relationele operaties op 1 tabel restrict project Relationele operaties meer dan 1 tabel product join (meerdere vormen) divide NB tabel kan hierbij basistabel zijn, maar ook een view of een via een query geconstrueerde combinatie van tabellen

10 Setoperaties op twee tabellen: UNION
Vereniging entiteiten uit twee tabellen met zelfde schema VB: samenvoegen van 2 ledenlijsten Naam Adres Wpl Naam Adres Wpl AA Aweg 1 A AA Aweg 1 A BB Bweg 2 B DD Dweg 4 D CC Cweg 3 C union EE Eweg 5 E Naam Adres Wpl AA Aweg 1 A BB Bweg 2 B CC Cweg 3 C DD Dweg 4 D EE Eweg 5 E ADO VVV

11 Setoperaties op hele tabellen: INTERSECTION
Doorsnede gemeensch. elementen uit twee tabellen VB: vergelijken van 2 ledenlijsten: wie is van beide lid? Naam Adres Wpl Naam Adres Wpl AA Aweg 1 A AA Aweg 1 A BB Bweg 2 B DD Dweg 4 D CC Cweg 3 C intersection EE Eweg 5 E Naam Adres Wpl AA Aweg 1 A VVV ADO

12 Setoperaties op hele tabellen: MINUS
Difference/except/minus verschil tussen twee tabellen VB: wie is wel van VVV maar niet van ADO lid? VVV ADO Naam Adres Wpl Naam Adres Wpl AA Aweg 1 A AA Aweg 1 A BB Bweg 2 B DD Dweg 4 D CC Cweg 3 C VVV-ADO EE Eweg 5 E Naam Adres Wpl BB Bweg 2 B CC Cweg 3 C

13 Relationele operaties op 1 tabel
Relationele operaties zijn gebaseerd op de tabel, oftewel de relatie Restrict: selectie van bepaalde records uit een tabel via condities Project: selectie van de te tonen velden van een tabel

14 Restrictie en projectie
restrictie: de set beperken tot de rijen die aan een voorwaarde voldoen Naam Adres Wpl Naam Adres Wpl AA Aweg 1 A restrictie AA Aweg 1 A BB Bweg 2 B Wpl = A DD Dweg 4 A CC Cweg 3 C DD Dweg 4 A projectie: de set beperken tot bepaalde kolommen Naam Adres Wpl Naam Wpl AA Aweg 1 A AA A BB Bweg 2 B projectie BB B CC Cweg 3 C Naam, Wpl CC C DD Dweg 4 A DD A

15 Combinaties van restricties
(Vereniging) keus tussen verschillende restricties OR b.v. Welke planten zijn rood OF paars? Welke planten zijn bollen OF bloeien in maart? (Intersectie) meerdere restricties tegelijk AND b.v. Welke planten zijn bollen EN bloeien in maart? (Verschil) positive en negatieve restrictie (AND NOT) maar bloeien NIET in maart?

16 Relationele operaties op meer dan 1 tabel
product join (meerdere vormen) divide

17 Cartesisch product van tabellen
Product/ de entiteiten uit twee tabellen in alle mogelijke Times combinaties samenvoegen tot een nieuwe entiteit VB : gemengd spel VNaam VLft MNaam MLft V1 28 M V M V product VNaam VLft Mnaam MLft V1 28 M V2 24 M V3 18 M V1 28 M V2 24 M V3 18 M

18 Joins: combineren op voorwaarde
Zelden wil je alle mogelijke combinaties van entiteiten uit twee tabellen, je zoekt meestal naar feitelijke combinaties, die al via een verwijzende sleutel zijn vastgelegd Een product dat beperkt wordt door eisen t.a.v. attribuutwaarden in de 2 tabellen heet een join. Voorbeeld: niet elke combinatie van een BOEK en een UITGEVER maar de combinatie van de feitelijke uitgever met het boek Restrictie van deze join: de verwijzende sleutel naar de uitgever van het boek in tabel BOEKEN moet gelijk zijn aan de primaire sleutel van de uitgever in tabel UITGEVER

19 Joins-1: Equi-join Equi join product van tabellen met restrictie:
alleen de rijen met een gelijke waarde voor een gelijk attribuut (gewoonlijk sleutel/verwijzende sleutel) VB: Geef alle paren met gelijke leeftijd: VNaam VLft MNaam MLft V1 28 M1 28 V M2 18 V equi-join VLft=MLft VNaam VLft Mnaam Lft V1 28 M1 28 V3 18 M

20 Joins-2: Natural join BOOKS Equi-join, maar dubbele kolom maar eenmaal: NATURAL JOIN! PUBLISHERS EQUI-JOIN BOOKS - PUBLISHERS

21 Joins-3: Theta-join Theta join: product van 2 tabellen met restrictie:
alleen rijen met ongelijke waarde voor een gelijk attribuut ( < , > , =<, => ) VB: Geef alle paren waarbij de man ouder is dan de vrouw VNaam VLft MNaam MLft V1 28 M1 28 V M2 18 V theta join MLft > VLft VNaam VLft Mnaam MLft V M1 28 V M

22 Joins-4: Alle vormen Inner join of kortweg join
product van 2 (of meer) tabellen: alle velden samengevoegd restrictie: rijen met gelijke waarde voor een (of meer) attributen Natural join : inner join, maar naast restrictie ook projectie: de gelijke kolom(men) maar 1 keer in resultaattabel Left/right outer join: van één tabel alle records, van de ander de bestaande combinaties, verder lege velden (Full outer join: left + right outer join) Theta join Combineren op restrictie ongelijke waarde Self join (tabel dupliceren) Een tabel combineren met zichzelf

23 Opties voor een relatie -1
Jointype definieren in relatieschema of QBE (Access) Wil je, als je de relatie boek-uitgever gebruikt 1. alleen de bestaande combinaties van beiden zien? 2. alle boeken, en alleen de bijbehorende uitgevers? 3. alle uitgevers, en alleen de bijbehorende boeken? 1 is de equi-join, 2 en 3 zijn left/right outer joins geen full outer join mogelijk Default in Access is 1, maar soms is een andere keus nuttig, dan kun je b.v. zoeken naar de uitgevers zonder boeken.

24 Opties voor een relatie – 2
Enforce Referential Integrity? Het sleutelveld moet altijd naar een bestaande entiteit verwijzen vb de uitgeverscode in BOEKEN moet in UITGEVERS staan Cascade Update Related Fields? Als het originele veld gewijzigd wordt (naamsverandering, nieuwe codering), verandert het bijbehorende sleutelveld mee vb de uitgevercode wordt veranderd, de refererende sleutel ook Cascade Delete Related Records? Als de oorspronkelijke entiteit wordt verwijderd, verdwijnen de gerelateerde records ook vb als een uitgever wordt geschrapt, dan verdwijnen zijn boeken

25 Nog een relationele operator: Divide
Een complexe operator, maar soms nuttig, voor vragen als: wie heeft alle propedeusevakken gehaald? wie verkoopt alle houtsoorten? Je hebt een studentresultatentabel met studenten en gehaalde vakken en een tabel met propedeusevakken en “deelt” de studenten door de propedeusevakken geef de studenten uit de studentresultatentabel voor wie voor alle propedeusevakken een (pos) resultaat staat

26 Operatoren en Access restrict, project en join zijn minimale eisen, union en minus zijn aanvullende eisen voor relationeel compleet systeem intersect en divide: uit de andere operatoren intersect: zie pg 59, kan dit korter? divide: ziet iemand hier kans toe? In Access SQL zijn beschikbaar: restrict, project, join en union daar moet je minus, intersect en divide op andere manieren formuleren


Download ppt "College 3 Hoofdstuk 3: Basis concepten van een relationele database"

Verwante presentaties


Ads door Google