Top-down ontwerpen ► Concentreren op de hoofdzaak zonder rekening te houden met allerlei details. ► Dus: de belangrijkste entiteittypes en hun onderlinge structuur proberen te vinden. ► De relaties in tekst voorstellen is niet erg duidelijk. Er wordt daarom een visuele techniek gebruikt: het ERD-diagram. → we gebruiken in de cursus de UML-notatie zoals in een klassendiagram gebruikelijk
Entity-Relationship Diagram Bevat in hoofdzaak twee elementen: ► Entities = klassen: entiteittypen of tabellen. Aangeduid met een rechthoek. ► Relationships: verbanden tussen entiteittypen. Weergegeven door lijnen tussen klassen. Verbanden tussen klassen kunnen steeds in twee richtingen gelezen worden.
Het ERD geeft geen processen weer en er zit geen volgorde in. Het is in essentie een subset van een klassendiagram.
Een 1/1 verband Aan de universiteit wordt bijgehouden op welk kot studenten verblijven.
Betekenis? • er zijn twee klassen: student en kot; • tussen deze klassen is er een 1/1 verband: één student heeft steeds één kot en één kot wordt steeds bewoond door één student. Klopt dit? → neen, want ook studenten zonder kot en lege koten; → wellicht zijn er ook koten met meerdere studenten.
Een 0..1/1 verband
Betekenis? Zoals vorige maar: er kunnen ook koten zijn die leeg zijn. Klopt dit? → neen, want ook studenten zonder kot; → wellicht ook koten met meerdere studenten.
Een 0..n/1 verband
Betekenis? Zoals vorige maar: er kunnen, naast lege koten, nu ook koten zijn waar meerdere studenten verblijven. Klopt dit? → neen, want ook studenten zonder kot.
Een 0..n/0..1 verband
Betekenis? Zoals vorige maar: een student kan nu ook niet op een kot verblijven. Dat lijkt wel te kloppen. Nog één mogelijk probleem: → er wordt niets over tijd gezegd; een student kan misschien in één jaar op verschillende koten verblijven.
Een 0..n/0..n verband
Merk op: • Relaties worden pas eenduidig indien ze duidelijk omschreven worden: verblijft → verblijft in één jaar. • Een relatie kan in twee richtingen gelezen worden: gebruik daarvoor de passieve vorm van de zin. • De lijn waarmee een relatie wordt vastgelegd kan eender welke vorm hebben. • De plaats van de rechthoeken is willekeurig. • We gebruiken hier de UML notatie. Steeds vooraf goed bekijken welke de gebruikte notatie is, want er zijn er vele.
ERD gaat enkel over gegevens ► In de informatieanalyse worden bestudeerd: • • •
Welke gegevens worden gebruikt? Welke processen of functies komen aan bod? Wat is het tijdsafhankelijke gedrag van het systeem?
Een ERD zegt enkel iets over het eerste. Voor het tweede werd vroeger nogal eens DFD's gebruikt. Tegenwoordig zijn er in UML diagrammen voorhanden die alle drie de soorten informatie weergeven. Ze zijn niet steeds alle drie nodig: dat hangt af van het soort systeem.
Een ERD kent verschillende stadia Een ERD kan zowel gebruikt worden tijdens de analyse, als tijdens het ontwerp en de bouw van een systeem. Ze verschillen enigszins van elkaar: ► Analyse: ERD is nog onvolledig. Het wordt voornamelijk gebruikt om de discussie te ondersteunen. ► Ontwerp en bouw: hier moeten ze wél volledig zijn. Ze dienen hier voornamelijk als documentatie. Kunnen gebruikt worden door programmeurs om het systeem te verstaan, later om aanpassingen aan te brengen etc. Het ERD wordt dus gebruikt voor verschillende doelen. Vaak is het zo dat een ERD evolueert tijdens een project: eerst wordt het gebruikt voor discussie, later wordt het verder aangevuld en gebruikt om het ontwerp te documenteren.
ERD tijdens analyse: discussie centraal Discussie vindt plaats tussen:
Automatiseerders: specialist in o.a. ERD maar leek in waar het systeem uiteindelijk voor moet dienen. Gebruikers: specialist in waar het systeem voor gebouwd wordt.
→ gebruik betekenisvolle relatienamen!
ERD bij ontwerp en bouw: documentatie centraal Het is hier vooral de bedoeling om de mensen die het systeem gaan bouwen zo duidelijk mogelijke richtlijnen te geven hoe ze dat moeten doen: → het is dan vaak beter om de verwijzende attributen te gebruiken (de foreign keys: zie verder)
Attributen Informatie over klassen (entiteiten) wordt bewaard in attributen. Attributen hebben volgende kenmerken: ► Geen eigen levenscyclus. ► Meestal een waarde, soms onbekend (NULL). ► Alle objecten van één klasse kunnen van elkaar onderscheiden worden door minimaal één attribuut. Soms door meerdere. Dat zijn de identificerende attributen. Voorbeeld van meerdere? → student: studentennummer en rijksregisternummer
► Attributen die het object identificeren zijn kandidaatsleutels. Meestal is er 1, soms meerdere. ► Eén kandidaatsleutel wordt primaire sleutel. De andere noemen we dan alternatieve sleutels. In ons voorbeeld?
Case tools ► Computer Aided Systems Engineering. Worden steeds belangrijker. Binnen 10 jaar programmeurs voor groot deel vervangen door dergelijke pakketten?
► Eenvoudigste: gespecialiseerde tekenpakketten. Bvb. Dia (diagramma's met subset voor UML). ► Andere meer geavanceerd. Momenteel voornamelijk UML. Bvb. Rational Rose. Wie het eens wil proberen: Poseidon heeft gratis te gebruiken versie. In lessen programmeren zullen we iets dergelijks laten zien m.b.v. Eclipse.
De betekenis van een relatie We hebben gezien dat klassen (entiteiten) onderling een relatie kunnen hebben. Al deze relaties hebben niet allemaal dezelfde betekenis. We onderscheiden de volgende: Een klasse beschrijft een andere klasse nauwkeuriger. → specialisatie / generalisatie Een klasse is een deel van een andere klasse. → aggregatie of compositie Er is een verband tussen twee klassen dat niet onder een van de hogere valt. → associatie
Specialisatie / generalisatie
We spreken hier ook over subtypes en supertypes of subklassen en superklassen. Er bestaat steeds een 0..1 ----- 1 verband.
Subklassen beschrijven nauwkeuriger Een subklasse maakt de superklasse nauwkeuriger. Meestal gebeurt dat door de toevoeging van extra attributen.
Relaties en subklassen Naast extra attributen kan een subklasse ook extra relaties toevoegen aan een superklasse.
Covering en niet-covering subklassen Soms kunnen er bij één superklasse verschillende subklasses voorkomen. Soms spreekt men over covering subklassen als de superklasse steeds het ene of het andere is. In het andere geval spreekt men dan over niet-covering.
Wederzijds uitsluitende en overlappende subklassen Werderzijds uitsluitende subklassen betekent dat wanneer een object van één type is het niet van het andere type kan zijn. Bij overlappende types kan een object van beide types zijn.
Aggregatie of compositie Bij zowel aggregaties als composities gaat het over delen van een groter geheel. Her verband tussen het deel en het geheel kan een 1-1 verband of een 1-veel verband zijn.
Aggregatie of compositie Bij een compositie in UML kan een onderdeel altijd maar tot één geheel behoren, en de levensduur ervan is steeds kleiner als die van dat geheel. Een aggregatie spreekt ook over onderdeel zijn van, maar is vager.
Associatie Een associatie tussen twee klassen is een koppeling die geen van bovenstaande is. Meestal hoort er een associatief object bij, een object dat dus ook zelf weer attributen kan hebben. Vaak een vorm van contract of gebeurtenis (order, verblijf, lidmaatschap,...).
Rollen van klasses/entiteittypes Klassen spelen een bepaalde rol t.o.v. Elkaar. We kunnen ze grofweg indelen in drie soorten. De grens tussen deze drie is niet altijd even duidelijk. ► Kernentiteittypes zijn gemakkelijk te onderscheiden klasses. Vaak vind je ze aan de éénzijde van relaties. ► Karakteristieke entiteittypes beschrijven de entiteit aan de andere zijde van de relatie. ► Associatieve entiteittypes bepalen de relatie tussen twee andere entiteiten.
Tijd in een ERD Zoals hiervoor al aangegeven worden ERD's niet gebruikt voor tijdsaanduidingen. Soms maakt dat nochtans wel degelijk uit bij het bewaren van gegevens in een databank. → moet bij een verblijf enkel het huidige bewaard worden of ook de historiek ervan?
We kunnen dat aanduiden door de uitdrukking die we bij de relatie zetten. In sommige gevallen worden tijdseenheden zelf als klasse opgenomen in het diagram.
Zelf ERD's tekenen Houd je aan een aantal richtlijnen: Zorg steeds dat het duidelijk is welke notatie je gebruikt. Bij voorkeur gebruik je UML. Als dat om een of andere reden niet kan: wees dan duidelijk door aan te geven welke notatie gebruikt wordt. Waar komt het ERD vandaan? Op basis van interviews? Weerslag van een workshop?.... Voor wie is het bestemd? Is het ter discussie? Of is het de bedoeling dat er mee gebouwd wordt? Voeg een data-dictionary toe, waarin je waar nodig de betekenis van klassenamen en attribuutnamen verduidelijkt.
Oefening 1
Bij het opzetten van een lijst met monumentale panden in een gemeente onderscheidt men de objecten "straat" en "pand". Teken een ERD van het Universe of Discourse.
Oefening 2
Teken een ERD van het model dat we in hoofdstuk 1 uitwerkten (headhunters en organisaties). Hoe zou dit ERD eruitzien in de discussiefase? En hoe in de documentatiefase?
Oefening 3 Wat is er aan de hand met de sleutels van twee tabellen waarvan de ene een subklasse is van de andere? Neem als voorbeeld de objecten "persoon" en "student" in het hieronder afgebeelde ERD.
Oefening 4 We keren nogmaals terug naar ons voorbeeld van hoofdstuk 1. Er blijken toch nog problemen op te duiken. Eén van de headhunters komt namelijk bij een organisatie werken die al wordt gevolgd door een andere headhunter. Deze organisatie zou nu dus door twee headhunters kunnen gevolgd worden. Ook zou een headhunter die werkt bij een organisatie die hij tevens volgt, wel eens tot belangenvermenging kunnen leiden. We zouden dat in het gegevensmodel willen zien, maar ons model kan momenteel geen dienstverband weergeven. Teken in een ERD het gegevensmodel dat nodig is om deze wijzigingen te kunnen doorvoeren. Tips: 1. Voeg een associatieklasse “volging” toe werk daarme de exacte “volging” relatie uit. 2. Leg een extra relatie tussen headhunter en organisatie.
Oefening 5 Een sportbond organiseert wedstrijden tussen teams. Bij die wedstrijden speelt het ene team uit en het andere thuis. 1. Stel dat de uitslag van een wedstrijd er niet toe doet, maar dat men wel wil bijhouden welk team uit en welk team thuis speelt. Teken hiervoor het ERD. 2. Als men nu ook de uitslag wil bijhouden. Hoe ziet het ERD er dan uit? 3. Hoe zou je in het ERD feiten van het type "een zekere scheidsrechter leidt de wedstrijd tussen de twee teams" modelleren?
Oefening 6
In een bibliotheekdatabase worden artikelen en tijdschriften opgenomen. Een artikel kan in verschillende tijdschriften verschijnen. Daarnaast zijn er auteurs en onderwerpen. Iedere auteur kan verschillende artikels schrijven en een artikel kan meer dan één auteur hebben. Een artikel hoort bij slechts één onderwerp. Geef het ERD.
Oefening 7 Een bedrijf ontwerpt een informatiesysteem ter ondersteuning van de functie "personeel". Van de werknemers worden vastgelegd de naam, de geboortedatum, de kamer op kantoor waar ze werken en de cursussen die ze gevolgd hebben met het jaar waarin de cursus werd gevolgd. De afdeling waartoe een kamer behoort, wordt ook vastgelegd. De cursussen hebben een cursusnummer en -naam. Voor sommige cursussen moet door de werknemers een eindwerk worden gemaakt. De titel van dat eindwerk, de datum van inlevering en het behaalde cijfer worden vastgelegd. Geregeld worden examens afgenomen over de stof van een cursus. De resultaten van de kandidaten en de datum van het examen worden ook opgenomen. Geef het ERD met attributenlijst.
Oefening 8 Een reisbureau organiseert rechtstreekse (charter)vluchten van Brussel naar vakantie-oorden en terug. Een vlucht vindt plaats op een zeker tijdstip met een vliegtuig van een zeker type en verbindt de plaats van vertrek met de bestemming. Afhankelijk van de afstand en de populariteit van de vakantiebestemming (de hoeveelheid passagiers) wordt gekozen voor een bepaald type vliegtuig. Mocht een vliegtuig uitvallen, dan kan een ander vliegtuig van hetzelfde type de vlucht overnemen. Teken het ERD.
Oefening 9 In een bepaalde regio heeft een vereniging van makelaars op zich genomen een informatiesysteem voor de verkopen van huizen op te zetten. Een potentiële verkoper meldt zijn huis aan bij een makelaar die als zijn vertegenwoordiger optreedt en die het huis in het systeem opneemt. Een potentiële koper meldt zich eveneens bij een makelaar (mogelijk een andere) en kan een bod op een huis uitbrengen. Als koper en verkoper het eens worden, vindt de verkoop plaats. Neem aan dat "transactie" een entiteittype is. Teken het ERD.
Oefening 10 Een lijnbusbedrijf heeft een aantal bussen. Elke bus doet steeds éénzelfde route. Op sommige routes wordt meer dan één bus ingezet. Elke route passeert door een aantal dorpen. Aan elk deel van een route zijn één of enkele chauffeurs toegewezen. Een deel van een route gaat door een deel van de dorpen van één route; in sommige gevallen door alle dorpen. In sommige dorpen is er een garage waar de bussen kunnen gestationeerd worden. Elke bus wordt gekenmerkt door de nummerplaat en kan een verschillend aantal passagiers vervoeren, omdat er zowel kleinere als grotere bussen in bedrijf zijn. Elke route wordt gekenmerkt door een routenummer en men beschikt over informatie over het gemiddelde aantal passagiers per dag en per route. Chauffeurs hebben een werknemersnummer, een naam en adres, en soms ook een telefoonnummer. Teken het ERD.
Oefening 11 Een verhuurmaatschappij van huizen is opgedeeld in een aantal kantoren. Elk kantoor regelt de verhuur van een aantal huizen. Om de verhuur daadwerkelijk op te volgen wordt het huis daarna toegewezen aan een medewerker van het kantoor. De meeste huizen zijn dus toegewezen aan een medewerker van het kantoor, maar op elk moment zijn er ook nog een aantal die wachten op toewijzing aan een medewerker. Teken het ERD.
Oefening 12 Een makelaarsbureau verkoopt eigendommen:
Het bureau heeft een aantal verkoopkantoren. Elk kantoor heeft een locatie en uniek nummer. Medewerkers zijn toegewezen aan één kantoor. Ze hebben een uniek nummer en een naam. Per kantoor is er één manager. De manager is één van de medewerkers van dat kantoor. Het bureau heeft een lijst van eigendommen te koop. Elk eigendom heeft een uniek nummer en een adres. Elke eigendom wordt toegewezen aan één enkel kantoor. Elke eigendom behoort aan één of meerdere eigenaars. Een eigenaar heeft een id en een naam. Wanneer er meerdere eigenaars zijn, houdt men bij voor welk percentage men eigenaar is.