De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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.

Verwante presentaties


Presentatie over: "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."— Transcript van de presentatie:

1 Week 1 BIMAIV03 Les B2 BIMAIV03 Les B2

2 Uit het voorgaande... CREATE TABLE... Opdracht om een nieuwe tabel binnen de database te creëren. Aandachtspunten tabelnaam kolomnamen datatypen sleutel (primary key) kolombeperking tabelbeperking

3 CREATE TABLE boek (boeknr TEXT(5), titel TEXT(35), uitgever TEXT(10), prijs CURRENCY); Voorbeeld 1 boeknrtiteluitgever 02001Hack, Hacker, HackstAcServ 02002Warez voor DummiesBezBij 02013Het ABC van EmPeeDrieAcServ prijs 29,00 24,50 13,95 BOEK... CREATE TABLE boek (boeknr TEXT(5) PRIMARY KEY, titel TEXT(35), uitgever TEXT(10), prijs CURRENCY); kolombeperking

4 Alternatief boeknrtiteluitgever 02001Hack, Hacker, HackstAcServ 02002Warez voor DummiesBezBij 02013Het ABC van EmPeeDrieAcServ prijs 29,00 24,50 13,95 BOEK... CREATE TABLE boek (boeknr TEXT(5), titel TEXT(35), uitgever TEXT(10), prijs CURRENCY, PRIMARY KEY (boeknr)); tabelbeperking

5 Sleutel (6) CREATE TABLE soccerdreams (maand TEXT(10) PRIMARY KEY, naam TEXT(15) PRIMARY KEY, pt INTEGER); SOCCERDREAMS naampt Kluivert Davids Kluivert 3 4 2... maand mei juni... sleutel

6 Sleutel (7) CREATE TABLE soccerdreams (maand TEXT(10), naam TEXT(15), pt INTEGER, PRIMARY KEY (maand, naam)); hier alleen tableconstraint mogelijk SOCCERDREAMS naampt Kluivert Davids Kluivert 3 4 2... maand mei juni...

7 Samengestelde sleutel PEILING DatumPartijAantal 13 nov 2006CDA46 13 nov 2006VVD24 13 nov 2006PvdA33 15 nov 2006CDA44 15 nov 2006VVD22 15 nov 2006PvdA32 20 nov 2006CDA42 20 nov 2006VVD20 20 nov 2006PvdA38 CREATE TABLE peiling (datum DATE, partij TEXT(5), aantal INTEGER, PRIMARY KEY (datum, partij));

8 Maar als er meerdere kandidaatsleutels zijn? datumthuis 19-12-04FC Groningen 12-12-04Feyenoord 13-11-04NAC voor 0 3 0... uit Ajax PSV AZ... tegen 4 3 3... alternatieve sleutels HOLLAND_CASINO

9 Wat te doen om iets dergelijks te voorkomen? HOLLAND_CASINO datumthuis 19-12-04FC Groningen 12-12-04Feyenoord 13-11-04NAC voor 0 3 0... uit Ajax AZ... tegen 4 3 -2... Mag niet...

10 Of zelfs dit? HOLLAND_CASINO datumthuis 19-12-04FC Groningen Feyenoord 13-11-07NAC voor 0 3 0... uit Ajax PSV AZ... tegen 3 3... Mag al evenmin

11 En wat hiervan te denken? HOLLAND_CASINO datumthuis 4-2-05Haarlem 12-12-04Feyenoord 13-11-04NAC voor 2 3 0... uit FC Zwolle PSV AZ... tegen 2 3 3... Geen EREDIVISIE

12 Al helemaal te gek... HOLLAND_CASINO datumthuis 19-12-04FC Groningen 12-12-04Feyenoord 19-12-04Ajax voor 0 3 1... uit Ajax Feyenoord FC Twente... tegen 4 3 2... Ontdek de 2 onmogelijkheden...

13 Eenvoudig beginnen EUROPA landhoofdstad NederlandAmsterdam BelgiëBrussel FrankrijkParijs... Alternatieve sleutel

14 UNIQUE CREATE TABLE europa (land TEXT(25) PRIMARY KEY, hoofdstad TEXT(25) UNIQUE); UNIQUE mag ook als tabelconstraint worden meegegeven! CREATE TABLE europa (land TEXT(25) PRIMARY KEY, hoofdstad TEXT(25), UNIQUE (hoofdstad));

15 ... dus ook allemaal tabelconstraints CREATE TABLE europa (land TEXT(25), hoofdstad TEXT(25), PRIMARY KEY (land), UNIQUE (hoofdstad)); U ziet maar…

16 Naamgeving van CONSTRAINTS (1) CREATE TABLE europa (land TEXT(25), hoofdstad TEXT(25), CONSTRAINT oei PRIMARY KEY (land), CONSTRAINT ach UNIQUE (hoofdstad));

17 Naamgeving van CONSTRAINTS (2) CREATE TABLE europa (land TEXT(25) CONSTRAINT oei PRIMARY KEY, hoofdstad TEXT(25) CONSTRAINT ach UNIQUE);

18 Verplicht invullen (1) boeknrtiteluitgever 02018PowerPoint voor DocentenMeulenh 02019Smashing WindowsMeulenh 02013SQL voor Playstation2AcServ prijs 23,95 BOEK... Neem aan dat de titel en de uitgever van elk boek bekend is maar dat we niet van elk boek de prijs hoeven te weten.

19 Verplicht invullen (2) boeknrtiteluitgever 02018PowerPoint voor DocentenMeulenh 02019Smashing WindowsMeulenh 02013SQL voor Playstation2AcServ prijs 23,95 BOEK... INSERT INTO boek VALUES ('02018', 'Powerpoint voor Docenten', 'Meulenh', NULL); INSERT INTO boek VALUES ('02018', 'Powerpoint voor Docenten', 'Meulenh', NULL);

20 Verplicht invullen (3) INSERT INTO boek VALUES ('02019', NULL, 'Meulenh', NULL); INSERT INTO boek VALUES ('02019', NULL, 'Meulenh', NULL); boeknrtiteluitgever 02018Powerpoint voor DocentenMeulenh 02019Meulenh 02013SQL voor Playstation2AcServ prijs 23,95 BOEK... Mag niet... Hoe dit te voorkomen?

21 NOT NULL CREATE TABLE boek (boeknr TEXT(5) PRIMARY KEY, titel TEXT(35) NOT NULL, uitgever TEXT(10) NOT NULL, prijs CURRENCY); NOT NULL is uitsluitend te gebruiken als kolombeperking. NOT NULL is impliciet aanwezig bij kolommen die onderdeel zijn van de PRIMARY KEY. Dit geldt niet voor kolommen die deeluitmaken van een UNIQUE-constraint.

22 NOT NULL CREATE TABLE europa (land TEXT(25) PRIMARY KEY, hoofdstad TEXT(25) UNIQUE NOT NULL); NOT NULL mag ook als CONSTRAINT whow NOT NULL

23 Domeinbeperkingen (1) We noemen de range van waarden die een kolom aan mag nemen het DOMEIN van de kolom. Voorbeelden: een tentamencijfer is steeds een geheel getal (type INTEGER) maar niet elk geheel getal is toegestaan; een leverdatum (type DATE) is altijd groter dan de besteldatum; het aantal doelpunten (type INTEGER) is nooit een negatief aantal.

24 Domeinbeperkingen (2) We kunnen aan het tentamencijfer een voorwaarde stellen. Bijvoorbeeld: cijfer > 0 én cijfer <= 10 cijfer > 0 én cijfer <= 10 of cijfer  {1, 2, 3,..., 10} cijfer  {1, 2, 3,..., 10} cijfer > 0 AND cijfer <= 10 of cijfer IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

25 CHECK Bij de tabeldefinitie geven we deze voorwaarde mee in de vorm van een CHECK-constraint. CREATE TABLE cijferlijst (studentnr TEXT(7), modcode TEXT(5), datum DATE, cijfer INTEGER, CHECK (cijfer > 0 AND cijfer <= 10)); Let op de haakjes

26 CHECK (2) CREATE TABLE cijferlijst (studentnr TEXT(7), modcode TEXT(5), datum DATE, cijfer INTEGER NOT NULL, PRIMARY KEY (studentnr, modcode, datum), CHECK (cijfer > 0 AND cijfer <= 10));

27 CHECK (3) Check-constraints mogen in JetSQL alleen als tabelbeperkingen worden opgegeven. In Jet SQL mogen check-constraints andere tabellen raadplegen of zelfs meerdere rijen uit de tabel zelf betreffen.

28 Voorbeeld Een zeilcruise in de Caribische Oceaan telt maximaal 20 deelnemers. Voor iedere boeking geldt dat de naam en verdere persoonsgegevens van de deelnemer genoteerd worden. De tabel die zo ontstaat kan maximaal 20 rijen bevatten. Hoe realiseer je dit? CREATE TABLE cruise (nr TEXT(7) PRIMARY KEY, naam TEXT(20), CHECK ((SELECT COUNT(*) FROM cruise) < 21));

29 Opdracht 1 Van een artikel mogen maximaal 300 stuks verkocht worden. Verschillende klanten bestellen een aantal van dit artikel. Realiseer deze beperking voor onderstaande tabel. klantnraantal KLNR100370 KLNR211122 KLNR003450...


Download ppt "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."

Verwante presentaties


Ads door Google