Opgave 1 (ica)

Opgave 1: Domeinbeschrijving, ER-modellering en mapping naar SQL DDL

In de eerste van de twee practicumopgaven bij het vak Databases wordt het database-ontwerpproces doorlopen: het opstellen van een domeinbeschrijving, het omzetten van deze domeinbeschrijving naar een ER-model en het transformeren van het ER-model naar een tabelstructuur.

Let op: de practicumopgaven hangen met elkaar samen: de tweede opgave bouwt voort op de resultaten van de eerste opgave. Onhandige oplossingen in een vroeg stadium kunnen dus - net als in de real world - gevolgen hebben voor latere uitwerkingen. Denk daarom goed na over je database-ontwerp en maak - indien je t.z.t. vragen hebt over de beoordeling - een afspraak met de practicumleider voor inzage van het gemaakte werk. Je kunt dan nog tijdig je uitwerking bijsturen voor de volgende opgave.

Voorbereiding

Bestudeer de paragrafen uit het cursusboek die betrekking hebben op ER-modellering, mapping naar tabellen en normalisatie. Zorg ervoor dat je de gebruikte technieken begrijpt en goed beheerst voor je aan deze opgave begint.

Samenwerking

Bij deze opgave is het de bedoeling dat je samenwerkt met een practicumpartner en samen 1 uitwerking inlevert (die dezelfde beoordeling geeft voor beide deelnemers). Indien je dat perse wilt, mag je de opgave(n) ook alleen maken. Samenwerken in groepen van meer dan twee personen is niet toegestaan.

Let op: je dient beide practicumopgaven met dezelfde practicumpartner te maken. (En indien je ervoor kiest deze opgave alleen te maken, zul je noodzakelijkerwijs beide opgaven alleen moeten maken.)

Stap 1: Domeinbeschrijving

De eerste stap in deze opgave is het opstellen van een domeinbeschrijving. Kies een domein uit je eigen omgeving of verzin er één waarvoor je een database zou willen ontwerpen. Beschrijf vervolgens in natuurlijke taal hoe dit domein is opgebouwd: welke personen/objecten/entiteiten kent het domein? Welke rollen spelen die? In welke relaties staan deze tot elkaar? Welke eisen/beperkingen gelden er? Je mag het domein naar eigen inzicht aanpassen (bijvoorbeeld om de omvang binnen de perken te houden), zolang je maar voldoet aan de onderstaande voorwaarden.

We verwachten een domeinbeschrijving van een half tot een heel A4 (200-400 woorden). Als je een voorbeeld wilt zien van een domeinbeschrijving, kijk dan eens naar deze oude oefenopgave.

Stap 2: ER-model

De tweede stap in deze opgave is het maken van een ER-model voor het domein dat je zojuist beschreven hebt. Probeer daarbij zo gedetailleerd mogelijk te zijn: wat zijn de entities, attribute types, cardinality ratios, participation constraints (mandatory/optional/disjoint/overlapping), enz.? Vermeld ook eventuele zaken uit de domeinbeschrijving die je niet in het ER-model kunt opnemen ten gevolge van de beperkingen van de gebruikte modelleringstechniek. Houd je aan de notatieconventies van de slides (of het boek).

Het ER-diagram kan onoverzichtelijk worden als je alle beschrijvende attributen toevoegt. Het kan dus handig zijn om sommige (of desnoods alle) attributen uit het diagram weg te laten, mits je deze vermeldt in de toelichting.

Het ER-model moet aan enkele aanvullende voorwaarden voldoen:

Stap 3: Transformatie naar relationeel schema

De derde stap in deze opgave is het transformeren van het ER-model naar een relationeel database-schema. Het resultaat van deze transformatie is een verzameling SQL DDL statements die tesamen het ER-model representeren. Het gaat daarbij om create table statements, inclusief attribute types, primary key en foreign key constraints. De gebruikte SQL syntax moet compatible zijn met de bij dit vak gebruikte versie van SQLite.

Bij deze stap dien je te documenteren welke keuzes je maakt ten aanzien van de tabelstructuur, primary keys en foreign keys (Waarom heb je bepaalde relaties weergegeven met 1, 2 respectievelijk 3 tabellen? Waarom kies je voor een bepaalde candidate key als primary key?).

Stap 4: Postnormalisatie

Bekijk het schema dat je nu verkregen hebt met je kennis van normalisatie. Is er reden om het schema dat je nu hebt nog verder aan te passen? Welke kwaliteiten claim je ten aanzien van je database schema (normaalvormen etc.)?

Er is een artikel van Teory, Yang and Fry over de verbanden tussen ER-modellering en normaliseren. Vanaf de studentenmachines kun je deze gratis downloaden. Je kunt dit artikel gebruiken als naslagmateriaal.

Stap 5: Realisering data definition statements op SQLite

Voer de data definition statements uit op je eigen SQLite database. Deze statements zet je in een tekstfile, genaamd dbdef.txt. Wanneer de inhoud van dit bestandje door SQLite uitgevoerd wordt, draait dit foutloos.

Inleveren

De uitwerking dient via submit ingeleverd te worden.

Je dient een zip-bestand in te leveren met daarin de volgende bestanden:

De maximale omvang van het in te leveren zip-bestand is 4Mb.


hansp@cs.uu.nl