420 likes | 549 Views
Opleiding Kunstmatige Intelligentie cursus Databases voor AI. Tweede college Rolland: hoofdstuk 3 F. de Vries. College 2. Databases AI. Opdracht 1. Elementen van ERD. Entiteit, attribuut, relatie Cardinaliteit van relatie Zwakke entiteit Sleutel, gecombineerde sleutel
E N D
Opleiding Kunstmatige Intelligentiecursus Databases voor AI Tweede college Rolland: hoofdstuk 3 F. de Vries
College 2 Databases AI
Elementen van ERD • Entiteit, attribuut, relatie • Cardinaliteit van relatie • Zwakke entiteit • Sleutel, gecombineerde sleutel • Subtyping, specialisatie, generalisatie • ‘Ternary’ relatie, recursieve relatie • Grouping, aggregatie
Het relationele database model Literatuur: Rolland, “The Essence of Databases”, Hoofdstuk 3
Relationele Model • Een uniforme structuur, de ‘relation’ als een verzameling (set) van ’tuples’. • tuple: afbeelding van attributen op waarde-instanties uit het onderliggende domein. • Bijvoorbeeld tuple:Persoon(Naam, Vnaam, Straat, HNr, Stad, Postcode) • Met instantie van zo’n tuple: Persoon(de Vries, Jan, Brink, 6, Soest, 1018 WB) • De set van deze tuple-instanties vormt de relatie ‘Persoon’.
Terminologie • Relatie: • een tabel met kolommen en rijen(een set van tupels) • Attribuut: • de naam van een kolom(de (rol)naam van een element in een tupel) • Domein: • de verzameling mogelijke waarden voor een attribuut Naam - chars(20) Leeftijd - x:int, o<x,110 Kleur - x:{rood, groen, blauw} Dag - x:{mndg, dnsdag, … … , zndg}
Terminologie-2 • Tupel: • een rij in een relatie • Degree: • het aantal attributen in een relatie • Cardinaliteit: • het aantal tupels in een relatie • Relationele database: • een verzameling (genormaliseerde) relaties • Base relation: • Een expliciet, door de DBA gedefinieerde en benoemde relatie. De tuples zijn daadwerkelijk (fysiek) opgeslagen in de database.
Een database schema, als verzameling van relatie schema’s Branch(B#, Street, Area, City, Pcode, Tel, Fax) Staff(S#, Fname, Lname, Address, Tel, Pos, Sex, DOB, Salary, NIN, B#) Property_for_rent(P# , Street, Area, City, Pcode, Type, Rooms, Rent, O#, S#, B#) Renter(R#, Fname, Lname, Address, Tel, Pref, Max_rent, B#) Owner(O# , Fname, Lname, Address, Tel) Viewing(R#, P# , Date, Comment)
Eigenschappen van relaties • Elke relatie tabel heeft een unieke naam. • Elke cel binnen een relatie heeft precies één (atomaire) waarde. • Elke attribuut binnen een tabel heeft een unieke naam. • Waarden van één attribuut komen allen uit één domein. • Volgorde der attributen is van geen betekenis. • Volgorde der tupels is van geen betekenis. • Elk tupel is uniek, er zijn geen duplicaten.
Sleutels Elk element in de set (elke tupel in de relatie) moetuniek identificeerbaar zijn d.m.v. een sleutel • Super keys • Candidate keys • Primary keys • Alternate keys • ( Foreign keys )
Super keys • definitiesuper key • een super key is een attribuut dat, of een verzameling van attributen die een tuple uniek identificeert • Voorbeeld: sofinummer + naam + personeelsnr + … + …
Candidate keys • definitie candidate key • een candidate key is een super key die minimaal is (dwz geen enkele subset van de attributen is nog steeds zo’n sleutel) • uniek (identificeert een tupel op unieke wijze) • minimaal (irreducible: geen subset kan dat)
Super Key Candidate Key Primary Key = Alternate Keys Primary keys • definitie primary key • een primary key is een uitverkoren candidate key die gebruikt wordt om tuples binnen een relatie te identificeren
Foreign keys • definitie foreign key (verwijssleutel) • een foreign key is een attribuut (of een verzameling van attributen) in een tabel die verwijst naar (matcht met) een kandidaat-sleutel van (meestal) een andere tabel.
Missende waarden: null • Staat voor een attribuut met onbekende (of niet van toepassing zijnde) waarde. • Neemt onvolledige kennis of exceptionele waarde voor zijn rekening. • Speciaal symbool (i.e. is anders dan ø of spaties). • Bijvoorbeeld:viewing(CR56, PG4, 26-mei-98, null)
Relationele integriteit • Entiteit integriteit • een primary key kan nooit en nergens de waarde null krijgen (in een ‘base relation’) • Referentiële integriteit • Een foreign key waarde moet matchen met een candidate key waarde (m.a.w. die waarde moet bestaan), maar null is toegestaan … • Enterprise constraints • door de gebruiker toegevoegde beperkingen
Referentiële integriteit • Wat te doen als de plek waarnaar verwezen wordt wijzigt (UPDATE, DELETE) • Doe niets (inconsistente database). • Verbied. • CASCADE. • Set to NULL.
Mathematische relatie • Beschouw twee sets D1 and D2, metD1 = {a,b} en D2 = {1,3,5} • Het cartesiaans product D1 D2 is de set van alle geordende paren, waarbij het 1e element uit D1 en het 2e element uit D2komt. • M.a.w. alle mogelijke combinatieparen van elementen uit D1 en D2. • D1 D2 ={(a,1),(a,3),(a,5),(b,1),(b,3),(b,5)}
Mathematische relatie: definitie Dan ... • Elke willekeurige subset van een carthesiaans product is een relatie, bijvoorbeeld:R = {(a,1),(b,1)} • Je kan ook specificeren welke paren in de relatie zitten, bijvoorbeeld:R = {(x,y)| x D1, y D2 en y=1}
Mathematische relatie -2 • Eenvoudig model. • Komt goed overeen met hoe wij over de wereld denken (dingen die bestaan: ‘existentieel conjunctief’). • Er bestaan relationele talen die relaties manipuleren: • relationele algebra, • relationele calculus. • Een operatie op een relatie levert altijd weer een relatie op !! (closure).
n-domeinen relatie • D1, D2, . . ., Dn representeren n sets met het volgende Cartesiaans product: D1 D2. . . Dn = {(d1, d2, . . . , dn) |d1 D1, d2 D2, . . . , dn Dn} • Notatie: n X Di i=1 • Een relatie is dus vastgelegd door de domeinen waaruit de waardes gekozen worden.
Voorbeeld • geslacht - {man,vrouw} • stemgedrag - {PvdA, VVD, CDA} • opleiding - {LO, MBO, VWO, HO} • Vraag: • Wat is het cartesiaans product hiervan? • Wat is een mogelijke relatie?
Relationele algebra • Operatoren die werken op 1 of 2 tabellen en die een nieuwe tabel produceren • Dus … output van een operator kan input zijn voor een volgende operator • Dus … nesting van operatoren is mogelijk (vergelijk wiskundige operatoren)
Operatoren • vijf-tal basis operatoren: • Selectie (RESTRICT) • Projectie (PROJECT) • Cartesiaans product (TIMES) • Union (UNION) • Set difference (MINUS) • additionele operatoren (herleidbaar tot basisoperatoren) • JOIN, INTERSECT, DIVIDE
RESTRICT (~SELECT) Selecteer rijen uit een tabel onder bepaalde condities student: {collegekaart, naam, woonplaats} RESTRICT (student) woonplaats = “Amsterdam” AND naam = “Jan Janssen”; produceert een tuple-subset van studenten die aan beide criteria voldoen. Dit kan een lege verzameling zijn!
PROJECT Selecteer kolommen uit een tabel student: {collegekaart, naam, woonplaats} PROJECT naam, woonplaats (student); produceert een kopie van de student tabel waarin de kolom met het collekaartnummer is weggelaten.
Cartesiaans Product R TIMES S • Stel: relatie R is van graad n en heeft i tuples, en relatie S is van graad m met j tuples • Dan heeft het Cartesiaanse product • de graad n + m (i.e. n + m attributen) • cardinaliteit ij • In de praktijk wordt meestal een JOIN gebruikt: dit is een SELECT over een Cartesiaans product
Voorbeeld Cartesiaans product • Maak een lijst met de namen en commen-taren van alle huurders die een object bezocht hebben: (clNo, fname, lname(Client)) X (clNo, propNo,comment (Viewing))
JOIN (familie) • Selectie uit een product waarbij de matchende attributen expliciet worden opgegeven. • De attributen moeten hetzelfde domein hebben student: {collegekaart, naam, woonplaats} inschrijving: {student_id, cursus} JOIN(student, inschrijving) collegekaart = student_id; produceert de tuple-subset van het product van twee tabellen, waarvoor geldt dat de twee attributen dezelfde waarde hebben binnen de tuple.
Andere relational-algebra operatoren R UNION S R MINUS S R INTERSECT S • Deze operatoren hebben de standaard set-theoretische betekenis. De relaties moeten compatible zijn (zelfde aantal attributen elk uit hetzelfde domein!!) • UNION en INTERSECT zijn commutatief, MINUS niet R DIVIDE S • Produceert een (sub)set van tupels uit R, gedefinieerd over attributen C die matchen met ELK tupel in S
Voorbeeld DIVIDE R DIVIDE S
INTERSECT is redundant • R INTERSECT S • The intersection operation consists of the set of all tuples that are in both R and S. • R and S must be union-compatible. • Expressed using basic operations R INTERSECT S = R MINUS (R MINUS S) S R RMINUSS 51 RINTERSECTS
Andere talen / non-procedureel ! • Relationele calculus • ‘Transformatie-talen’ zijn niet-procedurele talen die input data, gerepresenteerd in een relatie omzetten naar de gewenste output relatie (bijv.: SQL). • ‘Grafische (visuele) talenzijn niet-procedurele talen die de gebruiker een grafische voorstelling van de gegevens bieden. De gebruiker construeert een voorbeeld van wat hij wil hebben en het systeem geeft de gewenste uitput (bijv.: QBE).
Basis relaties en views • Base Relation • A named relation, corresponding to an entity in a conceptual schema, whose tuples are physically stored in database. • View • Dynamic result of one or more relational operations operating on the base relations to produce another relation.
Views • Een view ziet er voor de gebruiker uit als een echte tabel, maar deze is virtueel ! • Een view wordt dynamisch, op het moment dat ze nodig is, aangemaakt door het toepassen van een of meer operatoren (een ‘query’) op een of meer basis relaties. • Views zijn dynamisch. Veranderingen in de basis relaties worden onmiddellijk gepropageerd naar alle relaties die hierop gebaseerd zijn. • Als een VIEW gewijzigd wordt, dan MOETEN de onderliggende BASE relations gewijzigd worden (N.B.: dat is niet altijd mogelijk !).
Updating Views • Maar, er zijn restricties op het updaten van onderliggende relaties via een view: • Wel als: • Wel als er één enkele base-relation aan ten grondslag ligt, • Niet als: • Niet als er meerdere base-relations aan ten grondslag liggen, • Niet als het view is gemaakt met een SQL aggregatie of groep operator. Zie verder bij SQL
Purpose of Views • Provides a powerful and flexible security mechanism by hiding parts of database from certain users. • Permits users to access data in a customized way, so that same data can be seen by different users in different ways, at same time. • It can simplify complex operations on base relations.
Wanneer is een database ‘Relational’ ? • Minimaal relationeel: • Relaties met attributen uit eenvoudige domeinen. • operaties: RESTRICT (SELECT), PROJECT en JOIN. • Relationeel compleet: • minimaal relationeel. • operaties: UNION en MINUS. • Volledig relationeel: • relationeel compleet. • door gebruiker definieerbare domeinen.