Data(bases) zijn tegenwoordig belangrijker dan ooit. We verzamelen data om deze vervolgens te kunnen analyseren. Het succesvol inzetten van een database begint met het ontwerpen van de juiste structuur. Hoe zet je een database goed op? Vaak krijg je maar één kans om een database te ontwerpen. Dat ontwerp bepaalt in hoge mate het succes.
Database modelleren gaat in op het ontwikkelen van relationele databases, maar besteedt ook aandacht aan noSQL-databases. Met het groeien van de verscheidenheid aan gegevens en de steeds geavanceerdere dingen die we met de gegevens doen zijn ook de verschillende soorten databases gegroeid. Relationele databases vormen nog altijd het overgrote deel van de in gebruik zijnde databases. Daarnaast kom je steeds vaker zogenoemde noSQL-databases tegen.
Hoe verschillend al deze databases ook zijn, ze hebben één ding gemeen. Het succesvol inzetten van een database begint met het ontwerpen van de juiste structuur.
Database modelleren gaat er daarbij van uit dat een database-ontwikkelaar of engineer zich breed richt op het opslaan en gebruik van gegevens binnen een organisatie. Hij of zij is betrokken bij het maken van keuzes met betrekking tot welke database het meest geschikt is en houdt zich bezig met de overall data-architectuur. Hij bepaalt (mede) wie welke gegevens in welke vorm krijgt aangeboden. Hij/zij zet de database op en maakt het ontwerp.
Naast de behandeling van grotendeels het ontwerpen van relationele databases (onder andere het bepalen welke tabellen je moet maken om een goede database op te zetten) komen ook in een apart hoofdstuk wat algemenere termen noSQL-databases aan bod. De student leert de voor- en nadelen van noSQL te onderscheiden ten opzichte van relationele databases en enkele basisontwerp-richtlijnen. Er wordt ingegaan op de drie grote richtingen: normaliseren, dimensioneel modelleren en Data Vault.
Na het lezen van dit boek is de student in staat om te bepalen welk type database het meest geschikt is, hoe het ontwerp eruit moet zien, en hoe je met het gekozen ontwerp werkt.
Voor wie?
Het boek is gericht op database-ontwikkelaars en/of database-engineers in opleiding (studenten ICT, toegepaste of technische informatica) en studenten bedrijfskunde.
Voorkennis
Dit boek gaat er niet van uit dat je al data engineer bent. Ook is voorkennis van databases niet noodzakelijk. We beginnen bij het begin: wat is een database eigenlijk en waarom gebruiken wij databases? Vanaf dat startpunt word je meegenomen tot het moment dat je zelf een database-ontwerp kan maken. Voorkennis van de taal SQL is een pre, maar geen noodzaak.
Woord vooraf 5
Voor wie is dit boek 7
Voorkennis 7
1 Inleiding databases 15
1.1 Het ontstaan van relationele databases 16
1.1.1 Bestanden 16
1.1.2 Relationele databases 18
1.2 Structured Query Language 19
1.2.1 Schema-on-write 21
1.3 Database-ontwerp 22
1.4 Relationele theorie 23
1.4.1 Een verzameling kent geen volgorde 23
1.4.2 Een verzameling bestaat uit unieke elementen 24
1.4.3 Sleutels 25
1.4.4 Primaire sleutels 29
1.4.5 Integriteit 32
1.4.6 Check constraint en unique constraint 35
1.5 Soorten workload 36
1.5.1 Inleiding 36
1.5.2 OLTP 37
1.5.3 OLAP 38
1.6 Tot slot 39
2 Entiteitenanalyse 41
2.1 Inleiding 41
2.2 Entiteit Relatie Diagram 42
2.3 Entiteiten 44
2.3.1 Super- en sub-entiteiten 46
2.3.2 Naamgeving 47
2.4 Relaties 48
2.4.1 Eén-op-veel-relatie 48
2.4.2 Eén-op-één-relatie 49
2.4.3 Veel-op-veel-relatie 50
2.4.4 Tekenwijze 51
2.4.5 Samenvattend 52
2.5 Een voorbeeld 53
2.6 Context van het ERD 58
2.7 Opgaven 59
3 Normaliseren 61
3.1 Inleiding 61
3.2 Achterhalen details 62
3.3 Voorkomen redundantie 63
3.3.1 Waarom redundantie voorkomen? 63
3.3.2 Hoe voorkom je redundantie? 65
3.4 De normalisatiestappen 66
3.4.1 De nulde normaalvorm 66
3.4.2 De eerste normaalvorm 69
3.4.3 De tweede normaalvorm 72
3.4.4 De derde normaalvorm 75
3.4.5 Boyce-Codd en de vierde normaalvorm 77
3.4.6 Samenvatting normaalvormen 79
3.5 Een alternatieve aanpak 80
3.5.1 Stap 1 81
3.5.2 Stap 2 81
3.5.3 Stap 3 82
3.5.4 Stap 4 83
3.6 Integreren 83
3.7 Entiteit Relatie Diagram 85
3.8 Tot slot 87
3.9 Opgaven 88
4 Dimensioneel modelleren 93
4.1 Inleiding 93
4.2 Verantwoording dimensioneel modelleren 94
4.3 Dimensioneel modelleren 98
4.3.1 Inleiding 98
4.3.2 Stermodel 99
4.3.3 Stappen 103
4.3.4 Naamgevingsconventie 105
4.4 Dimensies 106
4.4.1 Sleutel 106
4.4.2 Onbekend (Unknown) 107
4.4.3 Ster versus Snowflake 108
4.4.4 Datumdimensie 112
4.4.5 Slowly Changing Dimensions 116
4.4.6 Junkdimensie 119
4.4.7 Gedegenereerde dimensie 120
4.4.8 Tot slot 121
4.5 Feitentabellen 121
4.5.1 Soorten feiten 121
4.5.2 Soorten feitentabellen 122
4.5.3 Roleplaying dimensie 125
4.5.4 Coverage feitentabel 125
4.6 Een Kimball-datawarehouse 126
4.7 Tot slot 127
4.8 Opgave 128
5 Data Vault 131
5.1 Inleiding 131
5.2 Verantwoording voor Data Vault 132
5.2.1 Business Intelligence life cycle 132
5.2.2 Doel van datawarehouse 134
5.2.3 Single version of the facts 135
5.2.4 Agile datawarehouse 136
5.2.5 Samenvatting 137
5.3 Hubs, links en satellieten 137
5.3.1 Hubs 137
5.3.2 Links 141
5.3.3 Satellieten 143
5.3.4 Meer satellieten per hub of link 145
5.3.5 Hashsleutels 147
5.4 Een voorbeeld 149
5.4.1 De hubs 150
5.4.2 De links 152
5.4.3 De satellieten 153
5.5 Raw Vault versus Business Vault 154
5.6 Extra componenten 156
5.7 Tot slot 159
5.8 Opgave 160
6 noSQL 163
6.1 Inleiding 163
6.2 Big Data 164
6.2.1 Wat is Big Data? 164
6.2.2 Clusters 167
6.3 noSQL-databases 170
6.3.1 Document-database 170
6.3.2 Wide columnstore 176
6.3.3 Key-value-database 179
6.3.4 Graph 183
6.3.5 Blockchain 185
6.4 Enkele overwegingen 185
Inhoudsopgave
dbm-4.indd 11 18-08-2020 18:42
12 Database modelleren
6.4.1 Polyglot persistence 185
6.4.2 BASE versus ACID 186
6.5 Data lake 188
6.6 Tot slot 192
6.7 Opgave 194
7 Implementatie 197
7.1 Inleiding 197
7.2 Gegevenstype 197
7.2.1 Numerieke gegevens 198
7.2.2 Alfanumerieke gegevens 199
7.2.3 Datums 200
7.2.4 Overige gegevenstypes 201
7.3 Constraints 202
7.4 Structured Query Language 204
7.4.1 Inleiding SQL 204
7.4.2 DCL 205
7.4.3 DML 206
7.4.4 DDL 207
7.5 Fysieke kenmerken 211
7.5.1 Grootte van een tabel 211
7.5.2 Indexing 212
7.5.3 Gepartitioneerde tabellen 214
7.5.4 Compressie 215
7.6 Tot slot 216
7.7 Conclusie 216
7.8 Opgaven 217
Index 219
Literatuur 223
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
Binnenkort verhuist onze website naar Boom.nl/hogeronderwijs. Wil je alvast kennismaken met onze nieuwe website?
Voor een beter begrip