Transcript for:
Het Stermodel in Databases

Feiten en dimensies. We hebben het net al even gehad over database schema's. Maar wat is dat nu eigenlijk? Een database schema geeft aan hoe een database in elkaar zit. In deze training werken we met een database schema dat een stermodel heet. Een stermodel is een analytisch database model dat bestaat uit twee hoofdonderdelen. Het eerste onderdeel zijn de feiten. We gaan feiten registreren. Daarbij moeten we goed onthouden dat een feitentabel maar één soort feit kan bevatten. Laten we als voorbeeld internetverkopen gaan registreren. Online cijfers zijn zeer relevant voor de afdeling verkoop. In ons voorbeeld krijgen we het verzoek deze gegevens te analyseren. Eerst moeten we vaststellen welke feiten we moeten opslaan. De feiten die we willen hebben zijn orderregels. Want op orderregelniveau... weten we precies om welk product het gaat en hoeveel deze kost. Let dus op. Als we alleen orders zouden registreren, krijgen we te weinig details. Dan krijgen we bijvoorbeeld de totale orderwaarde, terwijl het niet duidelijk wordt welk specifiek product er besteld is. Je kunt alleen op orderregelniveau zien welke producten zijn besteld. Je kunt dan geen antwoord geven op de vraag hoeveel is er van product A verkocht En hoeveel is er van product B verkocht? De fijnmazigheid van de gegevens die je opslaat in je feitetabel is dus erg belangrijk. Hoe dieper het detailniveau van je gegevens, hoe specifieker de analyse wordt. In ons voorbeeld zijn dat dus de orderregels. Goed, wat gaan we registreren van een orderregel? Natuurlijk het aantal producten dat besteld is. Dat is onze eerste veld in de feitetabel. Het tweede veld is de prijs, want dat willen we natuurlijk ook graag weten. Die registreren we dus ook. De feitentabel heeft nu dus twee velden. Het derde veld is de informatie over de klant. Het vierde veld tenslotte is het specifieke product dat er verkocht is. Let op dat we van deze laatste twee niet letterlijk de naam van de klant of de naam van het product registreren in de feitentabel. Nee, we gaan met sleutels verwijzen naar een andere tabel. Die andere tabellen heten dimensietabellen. En daar komt de naam dimensionaal model vandaan. Deze tabellen vormen de buitenkant van ons stermodel. Het feit is het centrum van de ster en de dimensies zitten daaromheen. De dimensies geven als het ware een structuur die feiten meetbaar categoriseren. En zo kunnen we straks antwoord geven op vragen. Veel voorkomende dimensies zijn klanten, producten, maar ook plaats en tijd. Laten we even naar een voorbeeld kijken hoe tabellen gerelateerd zijn. De middelste tabel die je nu ziet is de feitentabel. Deze heeft een eigen sleutel, de zogeheten fact key. Daarnaast is er een product key. Dat is de verwijzing naar de tabel linksbovenin waar al onze producten te vinden zijn. Nu kun je bijvoorbeeld zien dat nummer 100 twee keer voorkomt... bij twee verschillende klanten. Je kunt zien dat op de eerste regel het klantnummer 1000 drie keer het product 100 heeft gekocht voor een prijs van 10 euro. Als je op regel nummer 4 kijkt dan zie je dat daar product 100 weer één keer verkocht is maar nu aan klantnummer 1001. De tabel rechts onderin is tenslotte de klantentabel waarin de klanten geregistreerd staan. Dit is nu hoe ons termodel eruit ziet. Misschien heb je wel eens van een snowflake model gehoord. Dat kun je ook hierin verwerken, maar dat valt buiten deze training. Het kan ook voorkomen dat je meerdere feitetabellen hebt. Dit noem je een sterrenstelsel. Dan registreer je naast de internetverkoop ook andere zaken, zoals een productieproces. Dan maak je dus meerdere feitetabellen. Om het eenvoudig te houden gaan we daar nu niet dieper op in, maar het kan dus wel. Goed, hoe ziet een eenvoudig stermodel eruit? Laten we even inzoomen. Hier zie je een voorbeeld van een ster. In het centrum staan de verkopen. Dat is dus de feitetabel. Daaromheen staan vier dimensietabellen. We hebben de dimensie tijd, klant, product en als laatste de dimensie regio. Maar waarom zijn die verschillende dimensies er nu eigenlijk? Welke functie hebben ze en hoe werken ze mee in onze data-analyses? We nemen even het voorbeeld dat je hier ziet. Een stermodel met twee dimensies is een heel eenvoudig model. Je hebt klant A, B en C en product A, B en C. Op de kruising van deze tabel staan de aantallen. Als je in de kruising het aantal zet, kun je de vraag beantwoorden hoeveel van product A er door klant A is gekocht. Maar je kunt ook de getallen van klant A, B en C optellen en dan de vraag beantwoorden hoeveel er van product A is verkocht door deze drie klanten samen. Datzelfde geldt voor de kolommen. Zo kun je dus ook de omzet van klant A over bijvoorbeeld product A, B en C optellen. Je kunt dus alle vakjes bij elkaar optellen. Goed, nu gaan we het wat complexer maken. We hebben het net gehad over twee dimensies. Laten we eens kijken naar drie dimensies. We voegen de dimensie tijd toe. We hebben dus nog steeds product A, B en C. En we hebben ook nog steeds klant A, B en C. Maar nu hebben we ook de maanden januari, februari en maart toegevoegd. Dan kun je bijvoorbeeld te weten komen wat er voor... verkocht is van product A door klant C in januari. Laten we het even helder maken en het voorbeeld invullen. Hier heb je de derde dimensie. Als je dus wilt weten hoeveel er van product A verkocht is aan klant C in januari, dan vind je het antwoord in het gele vlak. Maar als je wilt weten hoeveel van product C er in januari verkocht is aan alle klanten, dan vind je het antwoord in het blauwe vlak. Dit is het denken in dimensies. Dus in de kruisingen, in de vlakken, staan de meetwaardes. Daar kun je het aantal verkochte producten invoegen. Maar je kunt natuurlijk ook prijsgegevens gebruiken. Daarmee bereken je de orderwaarde. Dus de kruisingen, in dit geval in de drie dimensies die we zien, zijn de metingen in de feitetabel. En de producten, de tijd en de klanten zijn de dimensietabellen. Wij mensen kunnen natuurlijk maar in drie dimensies denken. Maar als je dimensionaal gaat modelleren... kun je wel 20 dimensietabellen hebben. Zo kun je bijvoorbeeld behalve de dimensie klant ook de dimensie regio toevoegen. En zo zijn er heel veel dimensies denkbaar die goed kunnen passen in een stermodel. Het draait bij een dimensionaal model kortom om de feiten. En die feiten zorgen voor berekeningen op de kruisingen van onze kubus. Een cube is dan ook een veelgehoorde term in de business intelligence.