Bekijk ons hele aanbod
Onderwijs
Gezondheidszorg
Juridisch
Management
Geschiedenis & Filosofie
Dit boek behandelt de relationele databasetheorie en de relationele databasetaal SQL aan de hand van aansprekende voorbeelden en helder uitgelegde theorie. De benadering is informeel en praktisch maar tegelijkertijd conceptueel. Door de didactische benadering wordt met relatief weinig moeite een hoog niveau bereikt.
Het boek omvat de volgende delen:
Als databasemanagementsysteem wordt Firebird gebruikt, een open source product, waarvan de SQL nauw aansluit bij de standaard. Deze nieuwe druk maakt gebruik van de laatste versie Firebird 3.0, waardoor o.a. het datatype boolean geïntroduceerd kan worden. Ook zijn tal van verbeteringen aangebracht in de tekst, waarbij onder meer het oude hoofdstuk Autorisatie is verbreed vanuit de wat modernere invalshoek Security.
Inclusief websites
Er zijn twee websites bij het boek.
Daarnaast is er de ‘Boekverkenner’, een krachtige en gebruikersvriendelijke SQL-omgeving, geïntegreerd in een interactieve leeromgeving. Deze bevat onder meer de volledige boektekst en alle voorbeelddatabases met hun scripts en diagrammen. De SQL-query’s (in Firebird) zijn direct vanuit de tekst uit te voeren. Experimenteren wordt aangemoedigd doordat alle voorbeelddatabases met een druk op de knop zijn te (her)installeren.
Doelgroep
Dit boek is geschikt voor databasecursussen binnen het hoger onderwijs en beginnende en gevorderde SQL-programmeurs in de praktijk.
Leo Wiegerink heeft veel ervaring met lesgeven en cursusontwikkeling. Zo werkt(e) hij als opleider van wiskundeleraren, als informaticadocent aan de hogere informaticaopleiding van de Hogeschool van Amsterdam, als docent/cursusontwikkelaar in het bedrijfsleven en als cursusontwikkelaar bij de Informaticafaculteit van de Open Universiteit.
Jeanot Bijpost en Marco de Groot houden zich bezig met de ontwikkeling en het beheer van grote informatiesystemen. Het ontwikkelen van tools voor systeemontwikkelaars (metasysteemontwikkeling) loopt als rode draad door hun werk.
Inhoud
Voorwoord v
De software vii
Opbouw van het boek viii
Inhoud xi
Deel A: Relationele databases 1
1 Relationele databases: structuur 3
1.1 Informatiesystemen 3
1.2 Relationele informatiesystemen 4
1.3 Reijnders’ Toetjesboek 7
1.4 Alle gegevens in één tabel 9
1.5 Verbeterde tabelstructuren 16
1.6 Gegevens en informatie 25
Opgaven 28
2 Relationele databases: regels 31
2.1 Beperkingsregels 31
2.2 Gedragsregels 46
2.3 De OpenSchool-database (1) 54
2.4 Meer over uniciteitsregels 56
2.5 Meer over verwijzingsregels 60
2.6 De OpenSchool-database (2) 67
Opgaven 70
3 Communiceren met een relationele database 73
3.1 Uitbreiding van Reijnders’ Toetjesboek 74
3.2 SQL als ‘universele gegevenstaal’ 75
3.3 De Boekverkenner en de Interactive Query Utility 77
3.4 Een eerste select-statement 82
3.5 Projecties en selecties 86
3.6 Operatoren en functies 90
3.7 Opvragingen uit meer dan één tabel: de join 92
3.8 Tabelinhouden wijzigen 95
3.9 Databasestructuurdefinitie 102
3.10 Reijnders’ Toetjesboek: de applicatie 106
Opgaven 113
4 Nulls 117
4.1 De aard van nulls 117
4.2 Codd-relationaliteit 125
4.3 Logische algebra 127
Opgaven 133
5 Normalisatie 135
5.1 De eerste normaalvorm 135
5.2 Functionele afhankelijkheid 137
5.3 De tweede normaalvorm 139
5.4 De derde normaalvorm 141
5.5 De Boyce-Codd-normaalvorm 145
5.6 Kanttekeningen 150
Opgaven 152
Deel B: Relationele databases bevragen en wijzigen 155
6 Informatie uit één tabel 157
6.1 Projecties: select ... from 158
6.2 Datatypen 161
6.3 Operatoren 164
6.4 Functies 167
6.5 Selecties: where 173
6.6 Ordening: order by 179
6.7 Verzamelingsoperatoren 182
Opgaven 188
7 Informatie uit meerdere tabellen: joins 189
7.1 Inner joins 190
7.2 Outer joins 195
7.3 Joinoperatoren 197
7.4 Joins over een brede sleutel 201
7.5 Samengestelde joins 202
7.6 Autojoins 210
7.7 Joins over een niet-sleutelverwijzing 214
7.8 De right outer join en de full outer join 215
Opgaven 215
8 Statistische informatie 217
8.1 Statistische informatie: groeperen 217
8.2 Statistieken over één groep 218
8.3 Statistieken over meerdere groepen 223
8.4 Statistische joinquery’s 232
8.5 Genest groeperen 238
8.6 Het conceptuele algoritme 239
8.7 Groeperen en standaardisatie 243
Opgaven 244
9 Subselects en views 247
9.1 Subselects als oplossing van deelproblemen 247
9.2 Subselects en joins 254
9.3 Gecorreleerde subselects 262
9.4 Geneste subselects 272
9.5 De closed world assumption 279
9.6 De operatoren all en any 279
9.7 Views 281
9.8 Kiezen uit alternatieven 284
Opgaven 287
10 Wijzigen van een database-inhoud 289
10.1 Levenswijzen van een database 289
10.2 Transacties 291
10.3 Integriteitsregels 292
10.4 Het insert-statement 293
10.5 Het delete-statement 297
10.6 Het update-statement 300
Opgaven 308
Deel C: Relationele databases beheren 311
11 Definitie van gegevensstructuren 313
11.1 Voorbeelddatabase: Ruimtereisbureau 313
11.2 Data definition language 315
11.3 Levenscyclus van een database 317
11.4 Tabellen 319
11.5 Kolomdefinities 324
11.6 Constraints 328
11.7 Domeinen 331
11.8 Views 334
11.9 Sequences 336
Opgaven 339
12 Security 341
12.1 Bedreigingen van de security 342
12.2 Gebruikers 345
12.3 Rollen en het beheer ervan 349
12.4 Privileges 349
12.5 Privileges verlenen 354
12.6 Autorisatie via views 358
Opgaven 364
13 Transacties en concurrency 366
13.1 Transacties 367
13.2 Transactiemanagement 372
13.3 Vier klassieke problemen 375
13.4 Isolation levels 381
Opgaven 389
Deel D: Verdieping 391
14 Aanpak van queryproblemen 393
14.1 Warming-up 393
14.2 Probleemaanpak door vragen en antwoorden 395
14.3 Stappenplan 406
Opgaven 411
15 Query-optimalisatie 413
15.1 Voorbeelddatabase: GrootOrderdatabase 413
15.2 De optimizer 414
15.3 Indexen 418
15.4 Performanceverbetering door queryaanpassing 431
15.5 Performanceverbetering door aanpassing ontwerp 434
Opgaven 438
16 Triggers en stored procedures 441
16.1 Triggertaal 442
16.2 Stored procedures 442
16.3 Triggers 446
16.4 Meer over triggers en stored procedures 462
Opgaven 463
17 De data dictionary 465
17.1 Metastructuren 466
17.2 Meta-informatie over tabellen 467
17.3 Meta-informatie over kolommen en domeinen 469
17.4 Show commando’s in ISQL 471
Bijlagen 475
Firebird: functies en contextvariabelen 477
Firebird: data dictionary 483
Voorbeelddatabases 493
Register 497
"(..) Het is met name voor beginnende ontwikkelaars daarom geen overbodige luxe om Relationele databases en SQL goed doorgeploegd te hebben. Het boek biedt een gedegen inleiding in de materie. De auteurs schuwen het bovendien niet een kritische houding aan te nemen wanneer de taal minder intuïtief of logisch in elkaar zit dan je zou hopen. Dit is zeker van toegevoegde waarde voor iemand die bezig is de taal te leren. Het herbergt een waardevolle les: in softwareontwikkeling hoef je niet alles als vanzelfsprekend aan te nemen – liever niet, zelfs!
Het laatste, verdiepende deel, kent daarnaast een uitstekende uiteenzettingen over performanceverbetering en, belangrijker nog, hoe complexe queryproblemen stap voor stap kunnen worden opgehakt in eenvoudiger deelproblemen. Die kennis is van toegevoegde waarde voor elke softwareontwikkelaar, of die zich nu intensief bezighoudt met SQL of niet." - Karl van Heijster voor De Leesclub van Alles. Lees hier de gehele recensie.
Je hebt een zakelijk account nodig om dit product te kunnen bestellen. Je bent nu ingelogd met het e-mailadres: .
Wil je dit e-mailadres gebruiken voor je zakelijk account?
Ander e-mailadres gebruiken voor zakelijk account Huidig e-mailadres gebruiken voor zakelijk account