GEGEVENSMANAGEMENT III béta 42
Brilbeer in de dierentuin van Wenen, de enige beer die van nature in Zuid Amerika voorkomt. Leeft vooral in vochtige bossen op de Andes.
- Op een gegeven moment is Telecom ‘content’ gaan leveren. En de nieuwe doelstelling ‘leveren van content’ wordt ondersteund door de doelstelling ‘leveren van telecommunicatie’ en is daarmee hoger.
- Telecom was altijd al een bedrijf, maar onderdeel van de overheid. Er was daarmee steeds een doelstelling “maken van winst”. Vòòr de verzelfstandiging was dat aspect voor het bedrijf zelf, niet van het hoogste belang. De winst ging naar de staat en die bepaalde hoeveel ruimte er op de rijksbegroting was voor het investeren in Telecom. Daarna is het gewicht van deze doelstelling sterk toegenomen, en dat was ook de bedoeling; Telecom moest zijn investeringen zelf uit de opbrengsten gaan financieren, en tegelijk aan de de behoefte van de markt gaan voldoen. Toen Telecom als onderdeel van KPN, naar de beurs ging werd dat gewicht nog veel groter.
Om het een en ander toe te lichten een globaal plaatje als introductie tot die methode. Daarna volgt een uitgewerkt, maar versimpeld, voorbeeld.
Gegevens worden gezien als een neerslag van feiten.
In de buitenste ring staan de FEITEN. Die buitenste ring symboliseert wat ik in het voorafgaande het Universe Of Discourse heb genoemd. Dat is de professionele discussie tussen betrokkenen, gestuurd door gemeenschappelijke doelstellingen, over dat onderwerp. De feiten zijn de neerslag van die discussie.
- LINKS BOVEN staat het Objectmodel waarmee geregistreerd wordt waarover de feiten gaan.
- RECHTS BOVEN in het Semantisch-model wordt vastgelegd wat we over die feiten willen weten
- RECHTS ONDER: het Logisch datamodel legt vast hoe we datgene wat we over die feiten willen weten gaan registeren.
- LINKS ONDER: het Fysieke datamodel legt dat wat we gaan registreren vast in een database notatie, hierbij kunnen om implementatie redenen nog bepaalde gegevens worden toegevoegd.
Bij gegevensmanagement houden we ons vooral bezig met de eerste twee aspecten. Het Logisch datamodel ontstaat in het project in samenwerking met de systeemontwerper en een database-specialist van de automatiseringsafdeling. Het fysieke datamodel is het terrein van de database-specialisten.
Essentieel is dat het steeds over een type gaat. Bijvoorbeeld bij het maken van het objectmodel nemen we feiten over objecten waar. Vervolgens onderkennen we, gestuurd door de doelstellingen, typen. En we registreren de objecttypen! De stap van object naar objecttype gebeurt ‘vanzelf’ doordat de taal ons daartoe dwingt; we hebben geen woord voor “dat beestje met veren daar”, maar we hebben het over die vogel. Ook in de andere modellen hebben we het steeds over typen, of over een exemplaar van een type. (Voor exemplaren van een type, wordt wel de term ‘token’ gebruikt).
Voorbeeld: versimpeld Gegevensmodel van een Bibliotheek
Het primaire doel van een bibliotheek is het uitlenen van boeken. Het primaire doel van de registratie is het registreren daarvan. Het reserveren van boeken, en het inschrijven van nieuwe boeken en klanten zijn subdoelen.
Er lopen in zo een typisch registratieve situatie eigenlijk twee processen parellel: Het primaire bedrijfsproces, het uitlenen van boeken aan klanten, en als afspiegeling daarvan een secundair registratief proces het maken van aantekeningen over dat uitlenen.
Beide processen lopen nagenoeg synchroon omdat er anders informatie over het primaire proces verloren gaat die geregistreerd had moeten worden.
In termen van “waarnemingen”, vinden in het registratieve proces waarnemingen plaats van het primaire proces; de bibliothecaris neemt daarin ook zijn eigen handelingen en beslissingen waar.
In het domein vinden we:
- Als concrete zaken: KLANTEN, BOEKEN en AUTEURS.
- Als gebeurtenissen: UITLENING en RESERVERING. {eigenlijk zijn er nog twee voor het beëindigen van beiden}
- Er is één concept: omdat er van een boek meerdere exemplaren kunnen zijn hebben we naast BOEK ook SOORT-BOEK nodig.
Het Objectmodel
- KLANT: Een PERSOON die gerechtigd is bij de bibliotheek BOEKEN te lenen.
- BOEK: Een aantal pagina’s op papier die , al dan niet in een band zijn samengevoegd en waarop een geschrift over enig onderwerp is vastgelegd. (opmerking: hier is duidelijk het boek in fysieke zin bedoeld. Dit zijn de objecten die je uitleent. Vaak voorzien van een automatisch leesbare identificerende code, om efficient uit te kunnen lenen)
- SOORT-BOEK: Een verzameling BOEKEN, die omdat ze allen dezelfde inhoud hebben, voor de KLANT bij het uitlenen verwisselbaar zijn.
- AUTEUR: Een NATUURLIJK-PERSOON die één of meerdere SOORT-BOEKen geschreven heeft.
- UITLENING: Een tijdelijke overdracht van een BOEK aan een KLANT
- RESERVERING: De kennisgeving van een KLANT dat hij zo spoedig mogelijk een UITLENING wil van een exemplaar van een SOORT-BOEK.
- NATUURLIJK-PERSOON: een mens
- NIET-NATUURLIJK-PERSOON: een rechtspersoon of een samenwerkingsverband dat zich als zelfstandige organisatie manifesteert.
- PERSOON: Een generalisatie van een natuurlijk- en een niet-natuurlijk-persoon.
Een Reservering is een samenstelling van drie objecttypen: de reservering zelf, soort-boek en klant. We noemen dit wel een aggregatie.
Een uitlening is ook een aggregatie. De gestippelde pijl van soort-boek naar boek, geeft aan dat boek een element is van soort-boek.
Het Semantisch-model
Hierin wordt vastgelegd wat we over de objecten uit het objectmodel willen weten. Dat kan alleen maar als je de objecten individueel kent. Dergelijke geïdentificeerde objecten hebben daarmee de status van entiteit verkregen. Of praktisch gesproken; ze komen in de database.
Omdat het in de modellencyclus bijna altijd over typen gaat; hebben we het dus over entiteittypen.
Dit lijken precies dezelfde zaken als de objecttypen; althans ze hebben dezelfde naam en definitie, waarom is er een verschil tussen het objecttype het gelijknamige entiteittype BOEK? Het antwoord luidt: er zijn héél erg veel meer objecten BOEK dan entiteiten BOEK; een entiteit is een object dat onderdeel is van de onderhavige registratie.
Semantisch-model van de biblotheek
Hier onder staat een opsomming van entiteittypen met hun beweringtypen. Door substitutie van entiteiten voor hun type in een beweringtype ontstaan beweringen.
De accolades rond {AUTEUR} bij SOORT-BOEK geven aan dat één soort-boek meerdere auteurs kan hebben.
KLANT:
- KLANT wordt aangeduid met klantnaam PERSOONSNAAM
- KLANT is geboren op datum DATUM
- KLANT is geregistreerd onder KLANTNUMMER
- KLANT woont op ADRES
- BOEK wordt geïdentificeerd met code BOEK-CODE
- BOEK is exemplaar van SOORT-BOEK
- SOORT-BOEK wordt geïdentificeerd met nummer ISBN-NUMMER
- SOORT-BOEK is geschreven door {AUTEUR}
- SOORT-BOEK wordt aangeduid met TITEL
- UITLENING is gedaan aan KLANT
- UITLENING betreft boek BOEK
- UITLENING is gedaan op datum DATUM
- RESERVERING is gemaakt voor KLANT
- RESERVERING betreft soort-boek SOORT-BOEK
- RESERVERING is gemaakt op datum DATUM
Tekening semantisch model bibliotheek
In de tekening worden entiteittypen voorgesteld door een ellips met hun naam erin. De entiteittypen zijn verbonden met een gebogen lijn als er een beweringtype is die ze verbindt.
De secundaire entiteittypen zijn als eindpunt duidelijk te onderscheiden.
{Een secundaire entiteit is een waarde, en een secundair eniteittype is een lijstje met waarden. Bijvoorbeeld entiteittype KLEUR met waarden: rood, groen, blauw, …. . Maar ook het ISBN-nummer is een secundair entiteittype waarvan de waarden, de nummers, getallen van 13 cijfers zijn.}
AUTEUR is in dit domein secundair, maar je zou AUTEUR makkelijk tot primair kunnen verheffen.
Je creëert daartoe twee beweringtypen voor AUTEUR.
AUTEUR wordt aangeduid met auteursnaam PERSOONSNAAM
AUTEUR heeft geschreven {SOORT-BOEK}
Met de behandeling van het objectmodel en het semantisch model hebben we het aspect ‘betekenis’ van wat we willen registreren van de feiten vast gelegd. Als het goed is heb je personeel van de opdrachtgever bij het ontwikkelen van deze modellen erbij betrokken en hebben zij, en hun bazen, er mee ingestemd.
In het Logisch Datamodel gaan we vastleggen hoe we gegevenstypen vorm gaan geven zodat de toekomstige gegevens betekenisvol vastgelegd en gepresenteerd kunnen worden.
Logisch datamodel
In het objectmodel hebben we de objecttypen gedefinieerd waarover de feiten gaan. In het semantisch model hebben we vastgelegd wat we over de feiten willen weten. Daarmee is hebben we een structuur waarmee de betekenis van de toekomstige data van de database kan worden vastgelegd.
Bij de start van het ontwikkelen van het Logisch Datamodel (LDM), wordt de status van het project serieuzer; en wordt de rol van de automatiseerders groter. Het LDM gaat de view worden die zij op de database krijgen.De zoekpaden door de gegevens zijn voor hen van belang omdat ze nodig zijn voor de transacties die ze moeten gaan ontwikkelen.
De rol van personeel van de opdrachtgever betrokken bij het project verschuift van materie-deskundigen naar dat van potentiële gebruikers. Blijf ze erbij betrekken. Leg uit wat je aan het doen bent en waarom.
In het logisch datamodel wordt bepaald hoe we gaan registreren:
{Even abstract: de essentie van het relationele model voor databases, is het registreren van entiteiten in een tabel}
Ieder primair entiteittype P wordt een tabel, met zijn entiteiten als
regels in die tabel. Terwijl ieder secundaire entiteittype S dat in een beweringtype van de vorm P predikaat S voorkomt, een kolom van die tabel van P wordt.{secundaire entiteittypen zijn een verzameling van waarden, en hun entiteiten zijn die waarden}
Zo een kolom van P wordt in het LDM een attribuut-type genoemd. Denk boven de kolom de naam S eventueel met een toevoeging die past bij de rol in het beweringtype. Dit is de naam van het attribuut(type).
Als deze attibuutnaam in het onderstaande onderstreept is, dan is het een sleutel. Dat wil zeggen met de waarde; het attribuut, kan je de entiteit (de regel van de tabel waar het atribuut in staat) selecteren.
Voorbeeld voor KLANT
de kop van zijn tabel:
klantnummer ; klantnaam; geboortedatum; adres.
De geboortedatum is optioneel; de klant kan immers ook een niet-natuurlijk persoon zijn. Klantnummer is de sleutel van KLANT en daarom onderstreept.
De hoofdstructuur van het LDM: een tekening
{Deze tekening is een communicatiemiddel. De tabellen zijn het middel waarmee dit gerealiseerd gaat worden}
De hoofdstructuur van het LDM wordt gevormd door de primaire entiteittypen. Dat zijn dus tabellen, maar in de tekening van de hoofdstructuur voorgesteld als vierkanten met van de naam van het primaire entiteittype erin; daarmee zijn de secundaire entiteittypen in de tekening niet zichtbaar want onderdeel van een vierkant geworden.
De primaire entiteittypen, vierkanten, zijn met elkaar verbonden met relaties afgeleid uit beweringtypen van het semantisch model die ze met elkaar verbindt. Dit wordt voorgesteld door een rechte lijn, met tbv de layout, soms een rechte hoek erin. Aan beide zijden van een relatie staat een symbool voor de cardinaliteit van de relatie, zie linksonder in de tekening.
Voor iedere relatie die aan de zijde van het een vierkant een ‘harkje’ heeft; hetgeen wil zeggen dat dit vierkant meerdere keren in de relatie voor kan komen; krijgt de betreffende tabel een extra kolom bestemd voor sleutels van de andere kant van die relatie.
De relatie tussen KLANT en RESERVERING staat voor de reserveringen die een klant heeft uitstaan. Hij mag er meerdere doen, maar hoeft er geen gedaan te hebben. Maar een reservering hoort altijd bij één klant.
In de tabel RESERVERING wordt dit gerealiseerd door een extra kolom waarin de sleutel van de klant, het klantnummer staat. Bij een klant kunnen zijn reserveringen worden opgezocht door in die kolom van RESERVERINGEN op zijn klantnummer te zoeken.
Bij één RESERVERING hoort precies één soort-boek. Dat vereist een kolom in de tabel reservering met de isbn-nummers (sleutels) van de gereserveerde soort-boeken. Andersom hoeft een soort-boek niet gereserveerd te zijn.
Dit geeft de volgende kop boven de kolommen van de tabel van RESERVERING.
klantnummer ; isbn-nummer ; datum gereserveerd
Klantnummer en isbn-nummer vormen samen de sleutel van reservering.
Volgens onze methode begin je een opstart van het Logisch Datamodel door in de tekening van het Semantisch Model aan beide zijden van een boog voor een beweringtype dezelfde informatie te geven in de vorm (0-1), (1-1), (0-n) of (1-n); waarin ‘n’ staat voor onbeperkt.
Een UITLENING lijkt wel een beetje op een reservering; hij wordt op een bepaalde datum gedaan aan één klant; en betreft één boek. Een klant kan meerdere uitleningen hebben lopen, maar hoeft er geen te hebben. Een boek kan echter maar eenmaal uitgeleend zijn; of natuurlijk gewoon in de kast staan.
De kop van de tabel van UITLENING wordt:
boek-code ; klantnummer ; datum uitgeleend .
Een BOEK is altijd van één SOORT-BOEK. Dat vereist dus een extra kolom met isbn-nummers bij BOEK. Bij een (populair) SOORT-BOEK behoren vaak vele BOEKen, maar er kan een nieuw gepubliceerd SOORT-BOEK zijn waar de bibliotheek nog geen exemplaren van heeft.
Kop van de tabel van BOEK
boek-code ; isbn-nummer ;
Het entiteittype AUTEUR is toch primair gemaakt.
Wanneer je het aantal auteurs tot 1 beperkt `dan kan AUTEUR een secundair entiteittype zijn, en als een kolom bij SOORT-BOEK opgenomen. Maar meerdere auteurs bij één boek is natuurlijk geen zeldzaamheid. De bibliothecaris heeft op dit punt een aanpassing van het semantisch model geëist. {onder de tekening van het semantisch model staat dit al uitgewerkt}.
Dat betekent daar o.a. toevoegen van het beweringtype “AUTEUR heeft geschreven {SOORT-BOEK}”.
Daarmee is er een meer op meer relatie tussen AUTEUR en SOORT-BOEK noodzakelijk. Dergelijke relaties worden gerealiseerd met wat in het spraakgebruik een relatie-entiteit wordt genoemd. Dat gedraagt zich als een primair entiteittype met twee (extra) kolommen: in dit geval één met het isbn-nummer van SOORT-BOEK en een met auteursnaam. En die tabel krijgt één regel voor iedere combinatie van een soort-boek en een auteur die (ook) aan het soort-boek geschreven heeft. Via deze tabel kan je van ieder SOORT-BOEK bij zijn auteurs komen, en van iedere AUTEUR bij zijn soort-boeken.
Kop boven SOORT-BOEK/AUTEUR
isbn-nummer ; auteursnaam.
{deze twee zijn samen de sleutel van soort-boek/auteur}
{Net als AUTEUR/SOORT-BOEK is ook RESERVERING een soort relatie-entiteit met behalve de primaire sleutel klantnummer+isbn-nummer ook een kolom voor de reserverings-datum.}
verbonden
Het entiteittype SOORT-BOEK heeft twee kolommen:
isbn-nummer ; titel.
{Ik denk dat het handig is om ook een kolom voor kastnummer op te nemen voor de locatie in de bibliotheek waar boeken van deze soort te vinden zijn}
{Een tabel wordt geschikt voor een relationele database geacht als deze aan de volgende voorwaarden voldoet:
Alle kolommen die geen sleutel zijn, zijn onafhankelijk van elkaar; maar zijn wel allen afhankelijk van de (volledige) sleutel.
In de literatuur heet dit dat de tabel in de derde Normaalvorm is.
Het doel is het vermijden van redundantie in de database; terwille van eenmalige invoer en vermijden van inconsistentie.
Uit de tekening van het LDM blijken er twee paden van SOORT-BOEK naar KLANT te lopen. Via de uitlening en via de reservering. Dat zou ook op redundantie kunnen wijzen. Dat is niet het geval want je komt langs beide wegen niet bij dezelfde klant uit.}
Het volgende model is het Fysieke Datamodel. Dat is het werk van de datebase-specialisten. Het LDM is input voor hen.
Het Fysieke Datamodel
In het Logisch Datamodel is vastgelegd hoe we de gegevens over de feiten die voor ons doel relevant zijn gaan registreren. In het Fysiek Datamodel wordt bepaald waarmee dat gebeurt.
Daarvoor hebben we twee belangrijke tools:
1) De Structured Query Language (SQL)
Dit is een universeel gangbare taal om databases mee te bevragen; maar je kan er ook databases mee bouwen.
2) Een Relationeel DataBase Management Systeem (RDBMS) dat geschikt is voor het platform waarop je de database wil installeren.
Eerst wordt het LDM "vertaald" in SQL. En worden er allerlei technisch of implementatie-gegevens toegevoegd: over gebruikers en hun bevoegdheden, over het netwerk en printers, gegevens over recovery door het DBMS, ... .
Er is een doorlopend onderzoek naar de te verwachten systeembelasting; want dat soort informatie is ook al nodig om te bepalen op wat voor systeem de database en de bijbehorende processen gaan draaien.
Maar dit onderzoek wordt specifieker naarmate de implementatie dichterbij komt.
Met name van de meest kritische zoekpaden is van belang te weten hoe vaak ze gebuikt gaan worden. En van de grootste tabellen is de groeisnelheid van belang, evenals de te verwachten maximale grootte.
Een methode om de zoeksnelheid van het operationele systeem te verbeteren is het maken van een index van de sleutel van entiteiten die problemen geven en een slimme zoekstrategie te gebruiken op die sleutel.
Een uiterste middel is het denormaliseren van een entiteit. Als - onwaarschijnlijk - voorbeeld op het model van de Bibliotheek het volgende:
Stel dat de bibliothecaris er een probleem mee heeft dat er veel oude reserveringen zijn omdat er geen boeken van een gereserveerde soort terugkomen. En hij wil de namen van de klanten die een boek van die soort te leen hebben, zodat hij ze kan vragen om het boek terug te brengen.
Nu duurt het pad van reservering, naar soort-boek, naar boek, naar uitlening, naar klant, naar klantnaam hem te lang. Dan zou de volgende denormalisatie helpen: neem in het fysieke datamodel in uitlening de klantnaam redundant op en maak van boek en uitlening één tabel boekplus (ze hebben al dezelfde sleutel). Een complicatie is dat je na teruggave het uitlening-deel en de klantnaam in boekplus moet leegmaken.
De kwaliteit van gegevens
In mijn ervaring bij KPN was gegevensvervuiling een plaag voor de gebruikers van de automatisering.
Het soms ondergeschikte belang van correct registreren
Stel dat de de Directeur van de bibliotheek verordonneert, dat een klant in totaal maximaal 7 boeken te leen mag hebben.
Dit zou gerealiseerd kunnen worden door de programmatuur rond het maken van een nieuwe uitlevering een foutmelding te laten geven bij nummer acht.
Nu komt Koningin Máxima op een dag langs en vraagt om twee boeken voor een lezing over microkredieten die ze binnenkort wil geven. Bij het uitlenen blijkt echter dat Maxima van Oranje al zes boeken heeft.
Dat wordt natuurlijk heel klantvriendelijk opgelost. Zij wordt door de bibliothecaris nogmaals ingeschreven als Maxima Zorreguieta en krijgt onder die naam de twee boeken.
Wat is het gevolg hervan? Iedereen is blij: de Koningin is blij met haar zes boeken, de bibliothecaris is trots op zijn verleende service aan deze voorname klant, en de directeur is blij omdat hij op zijn rapportage ziet dat het aantal prominente klanten verder is gestegen, en dat zijn opdracht tot het beperken van de uitleningen tot maximaal 7 per klant strikt wordt gevolgd.
Alleen de gegevensmanager zal ontevreden zijn, wanneer hij ontdekt dat de kwaliteit van de klantgegevens verder is afgenomen.
Enkele opmerkingen:
- Beperkingen op een gegevensmodel die niet volgen uit de essentie van entiteiten, beweringen en doelstellingen maar om bedrijfsmatige redenen opgelegd worden kunnen gaan wringen.
- De kwaliteit van gegevens is bij transacties vaak het minste belang dat speelt.
- Je kan een beperking zoals hier ook anders realiseren. Dan geef je bij iedere uitlening boven de zeven programmatisch een waarschuwing aan de baliemedewerker dat de transactie niet toegestaan is, en dat hij daarvoor ter verantwoording kan worden geroepen. Dan kan deze in schrijnende gevallen een uitzondering maken.
- Je moet altijd proberen het proces voor de baliemedewerker zo in te richten dat het makkelijker is om het goed te doen, dan fout. {Bij het invoeren van klanten in de CentraleKlantenRegistratie van KPN, moest je eerst zoeken of de klant al bekend was. Als dat niet het geval was, moest je deze als nieuwe klant invoeren. Bij een wachtrij voor de balie was daarom meteen invoeren als nieuwe klant aantrekkelijk; bij CKR was 20% van de nieuwe klanten een doublure}
- Je moet ernaar streven een situatie te bereiken dat een gemaakte fout terug kan worden gevoerd naar de baliemedewerker; hij moet er een belang bij hebben om het goed te doen.
De Klantidentificatie bij Telecom
Een beetje chargerend kan je zeggen dat toen in 1971 bij KPN-Telecom de eerste brochure over een Telefonie Cliënten Informatie Systeem verscheen, de klantidentificatie een goede oplossing had - het telefoonnummer - waarbij een probleem werd gezocht:
Er worden vijf belangrijke operationele bestanden genoemd: het orderbestand, het bestand dat de telefonisten gebruiken bij het beantwoorden van nummer 008 voor het opvragen van telefoonnummers, het bestand voor de verspreiding van telefoongidsen, en het technisch overzicht van het aansluitnet.
Met ITCIS: Integraal Telecom Cliënten Informatie Systeem, was het probleem gevonden inclusief een ambitieuze oplossingsrichting. Bij een nieuwe aansluiting waren er namelijk meerdere bestanden die gemuteerd moesten worden. Men wilde met een computer bereiken dat met eenmalige invoer kon worden volstaan.
Comments
Post a Comment