Mdl01 hoorcollege 1
This presentation is the property of its rightful owner.
Sponsored Links
1 / 53

PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on
  • Presentation posted in: General

<Mdl01 hoorcollege 1>. Docent: Martijn Hengelmolen Email: [email protected] Aanwezig: maandag, dinsdag. Inhoud Hoorcollege 1. Waarom modelleren 1 Voorbeeld tekstueel ontwerp Opdracht. Voorbeeld model. Rechtopstaande holle cilinder. Voorbeeld model. Rechtopstaande holle cilinder

Download Presentation


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Mdl01 hoorcollege 1

<Mdl01 hoorcollege 1>

Docent: Martijn Hengelmolen

Email: [email protected]

Aanwezig: maandag, dinsdag


Inhoud hoorcollege 1

Inhoud Hoorcollege 1

  • Waarom modelleren 1

  • Voorbeeld tekstueel ontwerp

  • Opdracht


Voorbeeld model

Voorbeeld model

  • Rechtopstaande holle cilinder


Voorbeeld model1

Voorbeeld model

  • Rechtopstaande holle cilinder

  • Onderkant is gesloten


Voorbeeld model2

Voorbeeld model

  • Rechtopstaande holle cilinder

  • Onderkant is gesloten

  • Aan de zijkant zit een driekwart ovaal

  • Ovaal is kleiner dan cilinder

  • Kleur is wit


Voorbeeld model3

Voorbeeld model

  • Een mok, waterkoker? Thermoskan?

  • Vraag: is dit eenduidig?


Opdracht

Opdracht

  • Verzin een voorwerp

  • Beschrijf dit voorwerp

  • Geef tekstuele beschrijving aan mede student.


Select basisbegrippen hoofdstuk 5 van der lans

SELECT basisbegrippenhoofdstuk 5 [van der Lans]

  • datatypen (num, alfanum, datum/tijd)

  • systeemvariabelen (USER, TODAY)

  • expressies (o.a. CASE)

  • scalaire vs. set functies:

    • scalaire functies: input is 1 rij

    • set functies: input is verzameling rijen

  • casting


Select instructie definitie

SELECT instructie:definitie

<select-instructie>::=

<select-component>

<from-component>

[<where-component>]

[<group-by-component>]

[<having-component>]

[<order-by-component>]


Select instructie voorbeeld

SELECT instructie:voorbeeld

SELECT PNAAM, LEEFTIJD [kolom(men)]

FROM PATIENT [tabel(len)]

WHERE LEEFTIJD > 50; [voorwaarde voor rij]


Select instructie volgorde van uitvoeren intern

a

b

SELECT instructie:volgorde van uitvoeren (intern)

SELECT [kolommen] [3]

FROM [tabellen][1]

WHERE [voorwaarde voor rij][2]

ORDER BY [kolom][4]

1. FROM

2. WHERE

3. SELECT

4. ORDER BY


Select instructie volgorde voorbeeld

1. FROMA

2. WHERE KLEUR=‘Blauw’

3. SELECT ANO, ANAAM

4. ORDER BY ANAAM

SELECT instructie:volgorde (voorbeeld)

SELECT ANO, ANAAM

FROM A

WHERE KLEUR=‘Blauw’

ORDER BY ANAAM


Select instructie from component definitie

SELECT instructie:FROM component (definitie)

<from-component> ::=FROM <tabelref> [{,<tabelref>}...]

<tabelref> ::=<tabelspec> [[AS] <alias>]

<tabelspec> ::=[<user>.] tabelnaam


Select instructie from component voorbeeld

SELECT instructie:FROM component (voorbeeld)

SELECT teamnr, naamFROM teams AS t, spelers AS sWHERE t.spelersnr = s.spelersnr

Dit is een voorbeeld van een natural join


Natural join in stapjes 1 from input

Natural join in stapjes:1. FROM - input

SELECT ....

FROM teams AS t, spelers AS s


Natural join in stapjes 2 from resultaat

Natural join in stapjes:2. FROM - resultaat

SELECT ... FROM teams AS t, spelers AS s


Natural join in stapjes 3 where input

Natural join in stapjes:3. WHERE - input

WHERE t.spelersnr = s.spelersnr;


Natural join in stapjes 4 where resultaat

Natural join in stapjes:4. WHERE - resultaat

SELECT ... FROM teams AS t, spelers AS s

WHERE t.spelersnr = s.spelersnr;


Natural join in stapjes 5 select resultaat

Natural join in stapjes:5. SELECT - resultaat

SELECT teamnr, naam as aanvoerder

FROM teams AS t, spelers AS s

WHERE t.spelersnr = s.spelersnr;


Select instructie where pseudo code

SELECT instructie:WHERE (pseudo-code)

WHERE-resultaat := [ ];

for each ROW in FROM-resultaat doif conditie=waar thenWHERE-resultaat :+ ROW;

endfor;


Select instructie where operatoren etc

SELECT instructie:WHERE (operatoren etc)

  • vergelijking: = < > <= >= <>

  • AND, OR, NOT

  • BETWEEN, IN, LIKE, NULL

  • IN met subquery

  • vergelijkingsoperator met subquery

  • ANY, ALL

  • EXISTS


Select instructie where voorbeelden

SELECT instructie:WHERE (voorbeelden)

  • WHEREGEB_DATUM > ‘1970-12-31’ ANDNOT NAAM = ‘Haas’;

  • WHERE GEB_DATUM BETWEEN ‘1960-1-1’ AND ‘1970-1-1’;

  • WHERE NAAM IN (‘Smit’,’Jansen’,’Zwart’);


Select instructie where in met subquery

SELECT instructie:WHERE (IN met subquery)

  • SELECT naam AS aanvoerderFROM spelersWHERE spelersnr IN (SELECT spelersnr FROM teams);


Select instructie where exists

SELECT instructie:WHERE (EXISTS)

  • SELECT naam AS aanvoerderFROM spelersWHERE EXISTS(SELECT * FROM teams WHERE spelersnr=spelers.spelersnr);


Select instructie where all

SELECT instructie:WHERE (ALL)

  • SELECT naam+’ is het oudst’ AS oudste, geb_datumFROM spelersWHERE geb_datum <= ALL(SELECT geb_datum FROM spelers);


Select instructie group by having

SELECT instructie:GROUP BY, HAVING

  • volgend hoorcollege:

    • SET functies (COUNT, SUM, MIN, MAX, AVG, STDEV)

    • GROUP BY, HAVING


Referentiele integriteit

Referentiele Integriteit

  • spelernsnr in beide tabellen moeten gesynchroniseerd blijven

foreign key

primary key


Referentiele integriteit refs aangeven bij create

Referentiele Integriteit :refs aangeven bij CREATE

  • CREATE TABLE teams(teamnr SMALLINT NOT NULL,spelersnr SMALLINT NOT NULL,divisieCHAR(6) NOT NULL,PRIMARY KEY (teamnr),FOREIGN KEY (spelersnr)REFERENCES spelers (spelersnr));


Referentiele integriteit refererende acties

Referentiele Integriteitrefererende acties

  • default (SOLID):

    • ON UPDATE RESTRICT

    • ON DELETE RESTRICT(dwz wijzigen/verwijderen van een spelersnr in de SPELERS tabel wordt tegengehouden als spelersnr in TEAMS voorkomt)


Referentiele integriteit refererende acties1

Referentiele Integriteitrefererende acties

  • alternatief 1:

    • ON UPDATE CASCADE

    • ON DELETE CASCADE(dwz update/delete van een spelersnr in de SPELERS tabel triggert automatischeen update/delete in TEAMS)

  • alternatief 2:

    • ON UPDATE SET NULL

    • ON DELETE SET NULL


Referentiele integriteit vragen

Referentiele Integriteitvragen

  • wat is de beste oplossing voor SPELERS en TEAMS?

    • ON UPDATE [restrict, cascade, set null]

    • ON DELETE [restrict, cascade, set null]

  • wat is de beste oplossing voor SPELERS en BOETES?

    • ON UPDATE [restrict, cascade, set null]

    • ON DELETE [restrict, cascade, set null]


Database ontwerp

Database Ontwerp

  • Wat is het?

  • Hoe doe je het?

  • Voorbeeld

  • Normaliseren (1NF, 2NF, 3NF, BCNF)

  • Opdracht


Database ontwerp wat is het

Database ontwerp :Wat is het ?

  • het bepalen van de tabellen en hun kolommen die nodig zijn om bepaalde gegevens op te slaan (structuur)

  • logisch ontwerp (niet fysiek)

  • C. J. Date : ‘database design is still very much of an art, not a science’

  • gegevens integriteit


Database ontwerp hoe doe je het

Database ontwerp : Hoe doe je het?

  • ontwerpmethoden (zie [Kroenke]):

    • E/R (entity-relationship)

    • semantisch object model

  • controle:

    • normaliseren


Database ontwerp voorbeeld administratie van uitgeleende boeken 1

Database ontwerp voorbeeld: administratie van uitgeleende boeken (1)

  • voor wie :

    • de eigenaar van de boeken

  • functie :

    • het geven van een actueel overzicht van alle uitgeleende boeken; bovendien per boek:

      • aan wie (het boek is uitgeleend)

      • sinds wanneer (het boek is uitgeleend)


Database ontwerp voorbeeld administratie van uitgeleende boeken 2

Database ontwerp voorbeeld: administratie van uitgeleende boeken (2)

  • bedenk eerst hoe je het zonder ge-automatiseerd systeem zou doen!

?


Database ontwerp voorbeeld administratie van uitgeleende boeken 3

Database ontwerp voorbeeld: administratie van uitgeleende boeken (3)

  • bedenk eerst hoe je het zonder ge-automatiseerd systeem zou doen!

    • schrift met 1 regel per uitgeleend boek(auteur, titel, lener_naam, lener_telnr, sinds)

  • vgl. database met 1 tabel:‘uitgeleende boeken’


Database ontwerp voorbeeld administratie van uitgeleende boeken 4

Database ontwerp voorbeeld: administratie van uitgeleende boeken (4)

  • problemen:

    • wijzigen van telnr op meerdere plaatsen

    • bij terugbrengen boek ook telnr weg

  • hoe komt dit ?

    • afhankelijkheid : lener_naam -> lener_telnr

    • lener_naam is een determinant van lener_telnr


Database ontwerp voorbeeld administratie van uitgeleende boeken 5

Database ontwerp voorbeeld: administratie van uitgeleende boeken (5)

  • oplossing: 2 tabellen

    • schrift met uitgeleende boeken

    • adresboekje (of GSM telefoon): naam + telnr


Normalisatie 1nf first normal form

Normalisatie: 1NF (first normal form)

  • Definitie 1NF:Een tabel is in 1NF als voor elke waarde van die tabel elke rij precies 1 waarde voor elke attribuut heeftvoorbeeld: in de tabel leners heeft elke rij 1 naam en 1 telnr


Normalisatie 2nf

Normalisatie: 2NF

  • Definitie 2NF:(aanname: er is slechts 1 kandidaat sleutel die de primaire sleutel is)Een tabel is in 2NF als deze in 1NF is, en elk niet-sleutel attribuut (op de een of andere manier) afhankelijk is van de primaire sleutel


Normalisatie 2nf1

Normalisatie: 2NF

PK


Normalisatie 2nf2

Normalisatie: 2NF

PK

PK


Normalisatie 3nf

Normalisatie: 3NF

  • Definitie 3NF:(aanname: er is slechts 1 kandidaat sleutel die de primaire sleutel is)Een tabel is in 3NF als deze in 2NF is, en elk niet-sleutel attribuut niet-transitief afhankelijk is van de primaire sleutel


Normalisatie 3nf1

Normalisatie: 3NF

PK

2NF

3NF


Normalisatie bcnf boyce codd normal form

Normalisatie: BCNF (Boyce/Codd Normal Form)

  • (informele) definitie:een tabel is in BCNF als de enige determinanten kandidaat-sleutels zijn(dwz alle afhankelijkheidspijlen beginnen bij kandidaat-sleutels)


Normalisatie bcnf boyce codd normal form1

Normalisatie: BCNF (Boyce/Codd Normal Form)


Normalisatie bcnf boyce codd normal form2

Normalisatie: BCNF (Boyce/Codd Normal Form)


Normalisatie conclusie

Normalisatie:conclusie

  • Wat zijn we eigenlijk aan het doen?

  • Normalisatie is een kwestie van gezond verstand!

  • De zojuist besproken methoden zijn ‘geformaliseerd’ gezond verstand!

  • Met wat ervaring weet je intuïtief wanneer tabellen BCNF zijn


Opdracht 5 minuten

Opdracht (5 minuten)

  • Breng in BCNF:


Opdracht1

Opdracht

  • Afhankelijkheden:


Opdracht oplossing bcnf

Opdrachtoplossing (BCNF)

  • aannames:

    • docentnaam is uniek, vaknaam is uniek

    • 1 vak wordt door 1 docent gegeven


Zelfstudie 2

Zelfstudie 2

  • hoofdstuk 1 t/m 9 en 17 uit [van der Lans] inclusief opgaven (niet allemaal)

  • doe de opgaven uitgedeeld op het college (zie ook create_art_lev_etc.sql om de tabellen aan te maken)


  • Login