Principes van databases Conceptueel databaseontwerp Hoofdstuk 3 1 Overzicht • Het databaseontwerpproces • Het (uitgebreid) ‘entity-relationship’ model • Het ontwerp van een (E)ER-diagram 2 Overzicht • Het databaseontwerpproces • Het (uitgebreid) ‘entity-relationship’ model • Het ontwerp van een (E)ER-diagram 3 Het databaseontwerpproces • Overzicht informatievergaring conceptueel ontwerp databasemodelonafhankelijk logisch ontwerp dbmsonafhankelijk fysieke ontwerp • domeinanalyse • functionele analyse • behoefteanalyse • conceptueel model (bijvoorbeeld EER-diagram) • functionele beschrijving • logisch databaseschema (bijvoorbeeld relationeel) • gedragspecificaties • DDL-scripts • implementatie van gedrag 4 Het databaseontwerpproces • Informatievergaring – Communicatie – Onderzoek • • • • Software Data Handleidingen Rapporten • Abstrahering, modellering en implementatie – Abstrahering – Modellering (EER of UML) 5 Het databaseontwerpproces • EER-diagram beginuur datum naam titel tijdstip soort klantnr adres stuknr 1 Stuk opgevoerd N organisator uitvoerder Voorstelling Klant M M duur prijs reservatie tarief naam Zone betaald N N 6 1 1 in N Plaats plaatsnr Het databaseontwerpproces • Functionele beschrijvingen Controle_periode (IN Periode IN Artiest.Geboren IN Artiest.Gestorven OUT Status) EXCEPTIE (OnmogelijkePeriode) –operatie om te controleren of de periode van het schilderij wel valt binnen de leefperiode van de schilder van het schilderij. Ouderdom (IN Periode OUT Ouderdom) EXCEPTIE (PeriodeOnbekend) –operatie om de ouderdom van een schilderij te bepalen. Daartoe wordt de periode van het schilderij vergeleken met de huidige datum. Opmerking: UML doet beiden 7 Het databaseontwerpproces • CASE-tools 8 Het databaseontwerpproces COMPANY 9 TOOL FUNCTIONALITY Embarcadero Technologies ER Studio Database Modeling in ER and IDEF1X DB Artisan Database administration and space and security management Oracle Developer 2000 and Designer 2000 Database modeling, application development Popkin Software System Architect 2001 Data modeling, object modeling, process modeling, structured analysis/design Platinum Technology Platinum Enterprice Modeling Suite: Erwin, BPWin, Paradigm Plus Data, process, and business component modeling Persistence Inc. Pwertier Mapping from O-O to relational model Rational Rational Rose Modeling in UML and application generation in C++ and JAVA Rogue Ware RW Metro Mapping from O-O to relational model Resolution Ltd. Xcase Conceptual modeling up to code maintenance Sybase Enterprise Application Suite Data modeling, business logic modeling Visio Visio Enterprise Data modeling, design and reengineering Visual Basic and Visual C++ Overzicht • Het databaseontwerpproces • Het (uitgebreid) ‘entity-relationship’ model • Het ontwerp van een (E)ER-diagram 10 Het uitgebreid ‘entity-relationship’ model • Entiteittypes en relatietypes – Structurele aspecten Een entiteit is een ‘ding’ dat een zelfstandig bestaan leidt in de reële wereld Een entiteittype karakteriseert een collectie van entiteiten en wordt gekenmerkt door een naam en een verzameling van attributen 11 Het uitgebreid ‘entity-relationship’ model Voorbeelden en visualisatie Plaats Naam ID Schilderij Eigenaar Land 12 Naam Periode Naam Voornaam Artiest Waarde Geboren Gestorven Het uitgebreid ‘entity-relationship’ model Een relatietype is een verwantschap tussen twee of meer al dan niet verschillende entiteittypes. Men spreekt respectievelijk van een binair, ternair of n-air (n>3) relatietype. Verder wordt elk relatietype gekenmerkt door een naam. Een relatietype kan attributen hebben. 13 Het uitgebreid ‘entity-relationship’ model Voorbeelden en visualisatie Werknemer Procent 14 Schilderij werkt is partner Bedrijf Persoon Plaats planning Tentoonstelling Het uitgebreid ‘entity-relationship’ model – Karakteristieken en restricties • Attributen – – – – Meerwaardige versus enkelwaardige attributen Samengestelde versus enkelvoudige attributen Afgeleide attributen Sleutelattributen (sleutel en surrogaatsleutel) Nummer Straat Postcode Talen Leeftijd Naam afgeleid sleutelattribuut Plaats meerwaardig 15 samengesteld Het uitgebreid ‘entity-relationship’ model • Zwakke entiteittypes Een zwak entiteittype karakteriseert zwakke entiteiten. Dit zijn entiteiten die niet op zichzelf kunnen bestaan, maar voor hun bestaan afhankelijk zijn van het bestaan van andere, identificerende entiteiten. – Identificerende entiteittypes – Identificerend relatietype – Partiële sleutel 16 Het uitgebreid ‘entity-relationship’ model Voorbeelden en visualisatie Patiënt Artiest PID Naam Naam 17 Cursus Code Nummer legt af voor maakt Schilderij Student Zittijd Jaar Medisch dos. Examen Het uitgebreid ‘entity-relationship’ model • Relatietypes – Kardinaliteitrestricties één of meerdere – Participatierestricties totaal of partieel Voorbeelden en visualisatie Boek Werknemer N M Procent is partner werkt N Bedrijf 18 1 1 Persoon Schilderij Plaats 1 1 leent planning 1 N Lezer Tentoonstelling Het uitgebreid ‘entity-relationship’ model Alternatieve notatie: (min,max)-notatie Boek Werknemer (0,N) (1,M) Procent is partner werkt (0,1) 19 Plaats (0,1) leent (0,1) planning (0,1) (0,1) (0,N) Bedrijf Schilderij Persoon Lezer (1,N) Tentoonstelling Het uitgebreid ‘entity-relationship’ model • Subtypes, supertypes en overerving – Structurele aspecten Een subtype is een entiteittype dat een subcollectie van entiteiten karakteriseert. Het entiteittype van de collectie waarbinnen deze subcollectie wordt beschouwd, wordt het supertype genoemd. • Het subtype – ‘erft’ alle attributen en verwante relatietypes van het supertype – kan daarnaast nog eigen attributen en relatietypes hebben 20 Het uitgebreid ‘entity-relationship’ model Voorbeelden en visualisatie Kunstwerk Schilderij Wandtapijt 21 Werknemer Beeldhouw Juweel Administratie Kaderlid Technicus Manager Het uitgebreid ‘entity-relationship’ model Het creëren van specifiekere subtypes voor een een gegeven entiteittype noemen we specialisatie. Het creëren van een algemeen supertype dat de gemeenschappelijke attributen en relatietypes van een aantal gegeven entiteittypes verenigt, noemen we generalisatie. • Supertype/subtype-netwerken • Supertype/subtype-hiërarchieën • Meervoudige overerving: beperking 22 Het uitgebreid ‘entity-relationship’ model Voorbeeld en visualisatie Outfit Kledij Kunstwerk Juweel Schilderij Doek Perkament 23 Hout Papier Wandtapijt Beeldhouw Olieverf Waterverf Was Acryl Het uitgebreid ‘entity-relationship’ model – Karakteristieken en restricties • Overlappende versus disjuncte subtypes Kunstwerk Artiest d o Schilderij Wandtapijt 24 Beeldhouw Juweel Schilder Tekenaar Beeldhouwer Het uitgebreid ‘entity-relationship’ model • Geconditioneerde subtypes – Attribuutgedefinieerde supertype/subtype-verwantschap Periode Naam Waarde ID Type Kunstwerk Type d ‘bld’ ‘sch’ Schilderij ‘wnd’ Wandtapijt 25 ‘jwl’ Juweel Beeldhouw Het uitgebreid ‘entity-relationship’ model • Categorieën – Structurele aspecten Een categorie of unietype is een ‘speciaal’ subtype met verschillende supertypes, dat wordt ingevoerd om de entiteiten van deze supertypes te groeperen • Elke entiteit van de categorie is slechts entiteit van juist één van de supertypes 26 Het uitgebreid ‘entity-relationship’ model Voorbeeld en visualisatie Bedrijf Persoon Museum U Eigenaar 27 Het uitgebreid ‘entity-relationship’ model – Karakteristieken en restricties • Geconditioneerde supertypes Bedrijf Persoon ‘particulier’ ‘bedrijf’ Museum U ‘museum’ Eigenaar Soort Soort 28 Overzicht • Het databaseontwerpproces • Het (uitgebreid) ‘entity-relationship’ model • Het ontwerp van een (E)ER-diagram 29 Het ontwerp van een (E)ER-diagram • Casestudie: Database voor een jeugdvereniging Een jeugdvereniging wenst een database op te zetten, ter ondersteuning van haar ledenadministratie en werking. Daarbij moet rekening worden gehouden met de volgende aspecten. Bij de inschrijving krijgt elk lid een uniek lidnummer. Gegevens zoals naam, voornaam, adres, geslacht en geboortedatum worden geregistreerd. In het begin van het werkjaar worden de leden ingedeeld in verschillende groepen volgens leeftijdsklassen. Er kunnen meerdere groepen zijn voor één leeftijdsklasse. Elke groep heeft een leid(st)er. Een leid(st)er is maximaal verantwoordelijke voor één groep. De leiding vormt zelf ook een groep, die correspondeert met de hoogste leeftijdsklasse. De leid(st)ers organiseren allerhande activiteiten voor de leden. Een dergelijke activiteit kan bestemd zijn voor één of meerdere groepen tegelijkertijd. Tevens kunnen meerdere activiteiten voor dezelfde groep worden gepland (op verschillende uren). Aan sommige activiteiten kunnen extra kosten verbonden zijn. Los daarvan kan het zijn dat de leden zich op voorhand voor een activiteit moeten inschrijven (en de kosten vereffenen). 30 Het ontwerp van een (E)ER-diagram Oplossing Lid Groep Activiteit creatie entiteittypes 31 Het ontwerp van een (E)ER-diagram • Casestudie: Database voor een jeugdvereniging Een jeugdvereniging wenst een database op te zetten, ter ondersteuning van haar ledenadministratie en werking. Daarbij moet rekening worden gehouden met de volgende aspecten. Bij de inschrijving krijgt elk lid een uniek lidnummer. Gegevens zoals naam, voornaam, adres, geslacht en geboortedatum worden geregistreerd. In het begin van het werkjaar worden de leden ingedeeld in verschillende groepen volgens leeftijdsklassen. Er kunnen meerdere groepen zijn voor één leeftijdsklasse. Elke groep heeft een leid(st)er. Een leid(st)er is maximaal verantwoordelijke voor één groep. De leiding vormt zelf ook een groep, die correspondeert met de hoogste leeftijdsklasse. De leid(st)ers organiseren allerhande activiteiten voor de leden. Een dergelijke activiteit kan bestemd zijn voor één of meerdere groepen tegelijkertijd. Tevens kunnen meerdere activiteiten voor dezelfde groep worden gepland (op verschillende uren). Aan sommige activiteiten kunnen extra kosten verbonden zijn. Los daarvan kan het zijn dat de leden zich op voorhand voor een activiteit moeten inschrijven (en de kosten vereffenen). 32 Het ontwerp van een (E)ER-diagram Oplossing geb.datum naam geslacht voornaam nummer leeftijd Lid adres straat lidnummer postcode minimum tijdstip leeftijd Activiteit Groep maximum naam nummer omschrijving creatie attributen 33 kost Het ontwerp van een (E)ER-diagram • Casestudie: Database voor een jeugdvereniging Een jeugdvereniging wenst een database op te zetten, ter ondersteuning van haar ledenadministratie en werking. Daarbij moet rekening worden gehouden met de volgende aspecten. Bij de inschrijving krijgt elk lid een uniek lidnummer. Gegevens zoals naam, voornaam, adres, geslacht en geboortedatum worden geregistreerd. In het begin van het werkjaar worden de leden ingedeeld in verschillende groepen volgens leeftijdsklassen. Er kunnen meerdere groepen zijn voor één leeftijdsklasse. Elke groep heeft een leid(st)er. Een leid(st)er is maximaal verantwoordelijke voor één groep. De leiding vormt zelf ook een groep, die correspondeert met de hoogste leeftijdsklasse. De leid(st)ers organiseren allerhande activiteiten voor de leden. Een dergelijke activiteit kan bestemd zijn voor één of meerdere groepen tegelijkertijd. Tevens kunnen meerdere activiteiten voor dezelfde groep worden gepland (op verschillende uren). Aan sommige activiteiten kunnen extra kosten verbonden zijn. Los daarvan kan het zijn dat de leden zich op voorhand voor een activiteit moeten inschrijven (en de kosten vereffenen). 34 Het ontwerp van een (E)ER-diagram Oplossing geb.datum naam voornaam geslacht nummer leeftijd Lid lidnummer N lid van minimum leeftijd M 1 1 Groep postcode betaald schrijft in leider van 1 straat adres N M voor N Activiteit maximum naam nummer omschrijving creatie relatietypes 35 tijdstip kost Het ontwerp van een (E)ER-diagram Eindoplossing geb.datum naam voornaam geslacht nummer leeftijd lidnummer N lid van minimum 1 leeftijd M 1 Groep postcode betaald schrijft in leider van 1 straat adres Lid N M voor N Activiteit maximum kost naam 36 tijdstip nummer omschrijving Het ontwerp van een (E)ER-diagram • Casestudie: Reservatiesysteem voor een theater In een theaterzaal worden verschillende stukken opgevoerd (toneel, ballet, opera enzovoort). Doorgaans worden verschillende voorstellingen van een bepaald stuk opgevoerd. Voor elk stuk wordt de titel, de duur, de soort, de organisator, de uitvoerder en een uniek nummer bewaard. Van iedere voorstelling wordt de datum en het beginuur opgeslagen. Aangezien er maar één zaal is, kan op hetzelfde ogenblik maar één voorstelling worden geprogrammeerd. De zitplaatsen in de zaal worden doorlopend genummerd en zijn ingedeeld in zones die een aparte naam hebben. De toegangsprijs is afhankelijk van de zone van de zitplaats. De verkoop van tickets verloopt uitsluitend via reservering. De klant moet hierbij zijn naam en adres opgeven en kan dan één of meerdere zitplaatsen reserveren voor een voorstelling. Er wordt bijgehouden of voor deze reservering reeds werd betaald. 37 Het ontwerp van een (E)ER-diagram Eindoplossing beginuur datum naam titel tijdstip soort klantnr adres stuknr 1 Stuk opgevoerd N organisator uitvoerder Voorstelling Klant M M duur prijs reservering tarief naam Zone betaald N N 38 1 1 in N Plaats plaatsnr Het ontwerp van een (E)ER-diagram • Casestudie: Database voor een softwarefirma Een softwarefirma wil een database opzetten als hulp bij het controleren en corrigeren van fouten die ontdekt worden in haar softwareproducten. Aan elk softwareproduct wordt een uniek productnummer toegekend en een beschrijving toegevoegd. Van een product worden verschillende versies uitgebracht, die per product een versienummer krijgen. Daarnaast wordt ook de datum waarop de versie werd uitgebracht bewaard. Een versie van een product kan zowel door externe als door interne gebruikers (bijvoorbeeld programmeurs en systeemtesters) worden gebruikt. Interne gebruikers mogen alle versies van alle producten gebruiken zonder voorafgaande aanvraag. Externen dienen de versie van het product eerst aan te kopen. Bij de verkoop wordt voor elk verkocht exemplaar een uniek registratienummer –dat geldt voor één of meerdere externe gebruikers– en de registratiedatum vastgelegd. Wanneer een gebruiker een probleem constateert, kan hij of zij hierover een probleemrapport opstellen (en overmaken aan de onderhoudsafdeling). Zo’n rapport kan zowel door een interne als door een externe gebruiker worden opgemaakt en vermeldt naast een verwijzing naar het product en de versie, ook de datum en een omschrijving van het probleem. Aan elk rapport wordt verder een uniek rapportnummer, een prioriteit en een status (aan te passen door de onderhoudsafdeling) toegekend. Aangezien externe gebruikers enkel een rapport mogen sturen in verband met de versies waarvoor zij geregistreerd zijn, dienen zij steeds hun registratienummer te vermelden. Interne gebruikers dienen enkel hun werknemernummer op te geven, terwijl externen geïdentificeerd worden via de combinatie van hun naam en de naam van hun bedrijf. Van alle gebruikers wordt tenslotte ook nog het telefoonnummer, adres en e-mail adres bijgehouden (indien bekend). 39 Het ontwerp van een (E)ER-diagram werknemernr naam Eindoplossing gebruikerID Ext_Gebr. bedrijf productnr N U Product beschr. telefoon Gebruiker adres 1 bezit 1 van datum versienr N 1 Rapport 1 N Registratie datum 40 door rapportnr omschr. status over d voor registratienr e-mail N Versie datum Int_Gebr. prioriteit N M Int_Rapport 1 over Ext_Rapport N