ERD-modelleren

Inleiding Introductie connecties Praktijkvoorbeeld

Inleiding

Welkom bij het hoofdstuk database-modelleren. Voor je in een database management een database aanmaakt is het van het grootste belang dat de datastructuur zo optimaal mogelijk wordt gemaakt. Zo mag er geen herhaling van gegevens plaatsvinden en moet data eenduidig ontsloten kunnen worden. Database-modelleren is vakgebied dat plaats moet vinden in het basisontwerp van software ontwikkeling. Je analyseert welke gegevens (zoals naam, adres enz.) belangrijk zijn in het informatiesysteem en welke relaties er zijn tussen verschillend ogende gegevens.
De onderstaande casus is een voorbeeld voor de ontwikkeling van een zeer eenvoudige webwinkel. We behandelen:

  • We leggen de basis voor het begrip entiteit relatie model (ERM) voor een database en de grafische weergave daarvan (ERD = entiteit relatie diagram).
  • Naast gegevens opslag voor een informatiesysteem zijn er in een informatiesysteem die deze gegevens binnenhalen of gebruiken. In het hoofdstuk Dataflowdiagram maak je kennis met de techniek om in het basisontwerp de processen voor een informatiesysteem in beeld te brengen.
  • In de hoofdstukken 1 t/m 9 komen detailontwerp en implementatie aan de orde.
In de casus maak je verschillende opdrachten waarin wordt verwezen naar verschillende bronnen zoals websites en het boek Fundament Informatica (module VIII, Schematechnieken en databases). Zorg dus dat je je boek in deze lessen meeneemt!

Aan het einde van dit hoofdstuk weet je :

  • aan de hand van een situatie verschillende gegevens op te sommen die een bedrijf nodig heeft;
  • gegevens onder te brengen in tabellen;
  • deze tabellen te vormen naar een ERD-model;
  • een eenvoudig ERD-model kunnen interpreteren;
  • optionaliteit en cardinaliteit toe kunnen passen op een ERD-model;

Introductie modelleren

Lees de onderstaande situatie:

Garagebedrijf Nieuwenhuis is een toonaangevend eenmansbedrijfje in het Brabantse Maasdonk. Iedereen kent elkaar. Een familiebedrijf dat vele overnamen kent van vader op zoon.
Cees is momenteel eigenaar maar over enkele weken zal zijn zoon Dirk-Jan als vierde generatie haar intreden in het bedrijf zetten samen met zijn vrouw Ingrid. Dirk-Jan is best bereid om de zaak over te nemen, maar dan moeten er wel een aantal zaken veranderen. Klanten krijgen regelmatig de verkeerde artikelen meegeleverd. Sommige medewerkers hebben namelijk een minder leesbaar handschrift. Ook ziet Dirk-Jan bij het schrijven van een verkoopbon interpretatieverschillen. Schrijft de ene verkoper onder naam alleen de achternaam op en de andere verkoper voegt ook de voornaam toe. Dit levert verwarring op voor zowel andere verkoopmedewerkers als de administratie. Daarnaast laten medewerkers regelmatig de orders slingeren waardoor de administratie een avond loopt te zwoegen.
Dirk-Jan is voorstander voor een informatiesysteem want dan moeten de gegevens verplicht worden ingevoerd. Heb je geen last van onleesbare handschriften en zullen de orders ook minder snel verdwijnen. (hoopt hij!) Dirk-Jan heeft een expert gevraagd om te helpen bij de inventarisatie van de gegevens. Deze expert heeft een stagiair in dienst die meeloopt gedurende dit hele project.
Jij hebt de rol van stagiair om er telkens achter te komen hoe de inventarisatie van de gegevens voor het informatiesysteem verloopt en verzamelt, analyseert, documenteert en ontwerpt onder het toeziend oog van de expert. Volgens de expert bestaat de eerste stap uit het te weten komen welke gegevens noodzakelijk zijn om het ontwerp te maken. Het model moet zo opgezet zijn dat de programmeur, de databaseadministrator en de opdrachtgever dit model kan lezen en begrijpen.

De volgende opdrachten gaan over de bovenstaande situatiebeschrijving.

Opdrachten
  1. In de casus spreekt de expert over een ERD-model. Zoek in het boek op (blz 140-141) wat een ERD-model inhoudt, betekent en wat je er uiteindelijk mee kunt doen!
  1. Dirk-Jan heeft problemen geconstateerd. Geef deze problemen en beschrijf ze in je eigen woorden.
  1. Dirk-Jan heeft voor deze problemen ook oplossingen gezien. Geef deze oplossingen in eigen woorden weer.
De expert heeft de problemen genoteerd en zal hieruit gaan bepalen welke entiteiten hieruit gegenereerd kunnen worden. Entiteiten zijn een manier om gegevens netjes te ordenen. De manier van ordenen kan je vergelijken met een kast waarin zich allemaal laden bevinden. Elke lade heeft een label, zo kan makkelijk worden teruggevonden waar welke gegevens zijn opgeslagen. Wel kan er niet zomaar een naam voor een entiteit worden bedacht. De naam moet aan bepaalde voorwaarden voldoen:
  1. De naam moet een relatie hebben met de gegevens die daarin horen.
  2. De naam moet in het enkelvoud geschreven zijn.
  3. De naam mag niet te maken hebben met personen.
  4. De naam moet een categorie aanduiden.
De naam klant voldoet aan bovenstaande voorwaarden, want 1) het is enkelvoud geschreven, 2) heeft niet te maken met personen. 3) duidt een categorie aan en heeft een relatie met gegevens die daarin passen. Dirk-Jan vond zijn eigen naam als entiteit wel aardig maar de expert vindt dat geen goed idee. De naam is bovendien gekoppeld aan personen en dat mag niet. Ook is bijvoorbeeld de naam garagegegevens niet interessant om op te nemen. Deze bevat namelijk maar één rij. Als de garage een overkoepelende organisatie voor meerdere garagebedrijven zou zijn met een gedeeld informatiesysteem, dan zal dit wel handig zijn, omdat er dan meerdere records in de tabel komen.
Opdrachten
  1. Zoek in de vorige casussituatie en bij opdracht 2 op welke namen in aanmerking komen als entiteiten.
  2. Bekijk in het boek Fundament Informatica, wat het symbool is voor deze entiteiten. (blz 140- 147) Teken deze!
Uiteindelijk kiezen ze samen voor de volgende entiteiten: klant, product en order. De expert bekijkt vervolgens de tabelnamen of er relatie onderling mogelijk is. In ieder geval zal er een relatie moeten bestaan tussen de orders en artikelen. Een order bestaat uit verschillende artikelen. Want er moet per offerte bekeken kunnen worden welke artikel en levertijden hieraan gekoppeld zijn. Dit is echter nog een lastig karwei, maar hij vindt dit een mooie klus voor de stagiair. Hij/Zij krijgt wel een paar tips mee:
  • Een relatie wordt weergegeven door een ruit met daarin een werkwoord.
  • Voorbeeld: in het geval van order kan gekozen worden voor: bevat.
Opdrachten
  1. Zoek in het boek Fundament Informatica op wat het symbool is voor de relaties en geef aan welke entiteiten een relatie met elkaar hebben? Kan jij ook verklaren waarom dat zo is? Het is afdoende als je alleen die entiteiten met elkaar verbindt met daarin een werkwoord. Schrijf ze onder elkaar op.
De stagiair vindt de relaties er wel leuk uitzien, maar wat betekenen deze relaties nu eigenlijk? Kunnen we hier uitspraken over doen? De expert geeft een voorbeeld: order n bevat n artikel

De letters n in de bovenstaande figuur zijn symbolen voor de cardinaliteit van een relatie. De cardinaliteit heeft slechts twee symbolen: 1 en n.

Staat er een 1 tussen de entiteit en de relatie dan betekent dat dat er vanuit één record in de bijbehorende tabel slechts één relatie kan zijn met een record in de andere tabel. Staat er een n tussen de entiteit en de relatie dan betekent dat dat er vanuit één record in de bijbehorende tabel meerdere relaties kunnen zijn met een record in de andere tabel.

In bovenstaand voorbeeld geldt:
Een order bevat meerdere artikelen, dus naast de entiteit order staat een n.
Een artikel zit in meerdere orders, dus naast de entiteit order staat een n.
De relatie tussen de entiteiten order en artikel noemen we een n-op-n relatie.

Opdrachten
  1. Zoek in het boek Fundament Informatica op blz 150 wat voor soorten relaties er allemaal zijn?
  2. Hoe noemen we deze relaties ook wel?
  3. Geef net als in bovenstaande figuur de andere relaties in het model.
Het laatste onderdeel wat de expert nog wil invoegen is de optionaliteit. De optionaliteit wil zeggen: als een record in een tabel wordt aangemaakt moet dan ook een record in de ander tabel worden aangemaakt, ofwel de relatie tussen de entiteiten moet direct worden gelegd (optionaliteit=1) of hoeft die relatie niet direct worden gemaakt (optionaliteit=0) De notatie die hier wordt gebruikt volgt het boek. Naast het entiteit blok wordt een paar "optionaliteit,cardinaliteit" geplaatst. order 1,n bevat 0,n artikel

In de figuur zijn er dus de volgende eisen gesteld:
Otionaliteit 1 voor de relatie order --> artikel geeft aan dat iedere order minstens één artikel moet bevatten. De ontwikkelaar van de software weet dat er bij het aanmaken van een order er direct een product aan die order gekoppeld moet worden.
Otionaliteit 0 voor de relatie artikel --> order geeft aan dat niet ieder artikel aan een order moet zijn gekoppeld. De ontwikkelaar van de software weet dat er bij het aanmaken van een artikel er niet direct order aan dat artikel gekoppeld hoeft worden.

Opdrachten
  1. Zoek op wat optionaliteit is.
  2. Pas optionaliteit toe door de gevonden relaties uit opdracht 8 aan te passen .
  3. Voeg relaties samen waar nodig!
  4. Zoek in het boek op blz 147 wat er nog ontbreekt bij dit ERM.
  5. Teken ten slotte het ontbrekende gedeelte.
  6. Geef het resultaat wat je tot nu toe hebt gemaakt in een A4 weer! Een model dat je kunt gebruiken vind je hier.
  7. Als het goed is heb je dit ERD en deze tekst weergave. Zo niet bespreek je verschillen met een medeleerling of een docent.