DMO - introductie Inleiding Datamodellering 2008 1 In dit college: Opzet van de cursus Inhoud van het vak DMO Belangrijke begrippen database, datamodel, etc. DMO in context: andere vakken Klassiek en modern datamodelleren vernieuwing in systeemontwikkeling Doelomgeving: relationele database en XML Oefenen 2/27 Opzet van de cursus (1) Hoor/werkcollege (verplicht) Thuis inleiding en overzicht warming up voor weekopgaven literatuur bestuderen opgaven maken; inleveren via Submit, zie rooster Practicum (verplicht) hulp bij opgaven zelf opgaven nakijken (s.a. → oplossing) 3/27 DMO 2008 1 DMO - introductie Opzet van de cursus (2) Tussentoets en tentamen Beoordeling mc + modelleeropgaven RDBMS en XML, XSLT eindcijfer = (tussentoets + tentamen) / 2 – ontbrekende_opgaven * 0.3 Indien meer dan 2 keer afwezig, geen aanvullende toets Lees: http://www.cs.uu.nl/docs/vakken/dmo/Opzet.htm 4/27 Waarover gaat DMO? Datamodellering: het ontwerp van de database = kern van informatiesysteem bedrijfsproces data datamodel requirements databasemodel + theorie diagram b.v. relationele database model 5/27 Wat is een informatiesysteem? Report Report Program Program data data DATABASE Program data data data Program Program 6/27 DMO 2008 2 DMO - introductie Structuur van een database database: tabellen (althans relationele databases) tabel: kolommen = velden rijen: records speciale velden (sleutels) → koppelen tabellen Problemen → datamodellering: Hoe kies je de tabellen? Welke velden ga je definiëren? Welke data zijn overbodig? Hoe vermijd redundantie? Welke velden zijn geschikt als sleutel? Hoe krijg ik antwoord op mijn informatievraag? 7/27 Voorbeeld: verzekering Polis tabellen / entity types Klant Polisnr Datum start Type Klantnr Rente V213748 02/29/1989 E20 HAYES01 12% Datum einde 02/29/2009 N065987 04/04/1984 E20 WALSH01 12% 04/04/2004 W345798 12/18/1987 WOL ODEAJ13 8% 06/12/2047 W678649 09/12/1967 WOL RICHB76 8% 09/12/2006 V986377 11/07/1977 SUI RICHB76 14% 09/12/2006 koppeling via sleutelvelden Klantnr Naam Adres HAYES01 D HazeHayes 3/1 Collins St 3000 F 25 WALSH01 H Walsh 2 Allen Road 3065 Postcode Geslacht M Leeftijd 53 Geboren 04/16/1947 ODEAJ13 J O’Dea 69 Black Street 3145 M 33 06/12/1967 RICHB76 B Rich 181 Kemp Rd 3507 M 59 09/12/1941 06/23/1975 velden / attributes 8/27 Vragen bij dit voorbeeld Waarom twee tabellen en niet alles in één tabel? Wat is voor een verzekeringsmaatschappij precies een ‘klant’? Moet de leeftijd van een klant in de database worden vastgelegd? Correspondeert een bepaald type polis steeds met de zelfde rente? Is het handig om voorletters en achternaam in één veld op te slaan? 9/27 DMO 2008 3 DMO - introductie Niveaus van datamodelering Conceptueel Logisch de wereld die wordt vastgelegd in de database (Universe of Discourse) entitytypes en attributen een datamodel toegesneden op de implementatie-omgeving, b.v. een RDBMS tabellen en velden Fysiek technische specificatie van tabellen, veldlengte. veldtype, etc. indexen, etc. 10/27 Wat is datamodellering? Analyse & design van informatie: entiteiten en hun attributen verbanden en afhankelijkheden die bestaan in Universe of Discourse (UoD) = de “mini-wereld van de database” met als doel: datamodel → database-structuur N.B. Er is meestal niet een enkel goed model (varianten!) 11/27 Datamodeling – belangrijk? “Data modeling is the hardest and most important activity in the RDBMS world. If you get the data model wrong, your application might not do what users need, it might be unreliable, it might fill up the database with garbage”. Philip Greenspun http://philip.greenspun.com/sql/data-modeling.html 12/27 DMO 2008 4 DMO - introductie Wie zijn betrokken? Business Requirements business specialist, gebruikers Business Specialist data modeler, systeem architect Data Modeler DBMS & Platform Specification database ontwerper, programmeur Database Designer Develop Information Requirements Build Conceptual Data Model Design Logical Data Model Design Physical Data Model Information Requirements Conceptual Data Model Logical Data Model Physical Data Model requirements conceptueel model logisch model fysiek model Performance Requirements 13/27 Criteria goed datamodel Compleet Niet-redundant Implementeert business-rules Data herbruikbaar voor meerdere doelen Stabiel (t.o.v. bedrijfspraktijk) Flexibel (uitbreidbaar) Elegant Helder (communicatie van concepten en regels) Past in bredere data-architectuur 1. 2. 3. 4. 5. 6. 7. 8. 9. 14/27 Waarom een DBMS? Wat is het verschil tussen A en B (implicaties)? A. applicatie database applicatie B. database DBMS applicatie applicatie 15/27 DMO 2008 5 DMO - introductie Wat is een DBMS? A software system that has a catalog describing the data it manages controls access to the data stored within it contains routines for data input, verification, storage, retrieval, and combination → simplifies writing data applications 16/27 ANSI/SPARC-schema Extern schema Extern schema Conceptueel schema Intern schema Extern schema Een DBMS is gebaseerd op deze driedeling → data independence (data onafhankelijkheid) → databasestructuur kan veranderen zonder dat gebruiker het merkt. 17/27 DBMS en data independence Greep uit definities data independence: The separation of data from the programs that use the data. Data access is unaffected by changes in the physical data storage characteristics Data fields can be added, changed, and deleted from a database without necessarily affecting existing application programs. Immunity of user applications to changes in the definition and organization of data, and viceversa. 18/27 DMO 2008 6 DMO - introductie Context: DMO & andere (1) Datamodel min of meer onafhankelijk van DBMS DMO minder nadruk op retrieval (→ MIR) conceptueel datamodel te implementeren in RDBMS of XMLdatabase databasetheorie (-architectuur) wel ondersteunend, maar in DMO niet in detail behandeld maar wel opgaven over SQL (eenvoudig) DMO nauwelijks architectuur en werking van DBMS transacties, concurrency, security, client-server, etc. (→ Databases) 19/27 Context: DMO & andere (2) MSO ontwikkeling van het hele informatiesysteem bedrijfsprocessen functionaliteit ontwikkelmethodologie met schematechnieken DMO focus op database (= kern van het informatiesysteem) op de achtergrond: bedrijfsprocessen, functionaliteit ontwerp en documenteren → ontwikkelmethodologie → overlap met MSO schematechnieken voor datastructuur 20/27 Context: DMO & andere (3) Een conceptueel datamodel is in verschillende systemen te implementeren: RDBMS, maar ook XML database Daarom: herhaling stof UWT en ook oefenen met XML-implementatie 21/27 DMO 2008 7 DMO - introductie DMO en systeemontwikkeling Ontwerpen van een database is onderdeel van het traject van informatiesysteem ontwikkeling Invloed van nieuw trends in systeemontwikkeling (webtijdperk), ook op datamodellering → “klassiek” versus “modern” 22/27 Methodologie Methodologieën: process-driven (data-flow) data-driven (vanaf ±1980: datastructuur primair) blended (combinatie) object-oriented (weinig O-O DBMS) agile (nu invoedrijk) Schema-technieken: uitsluitend UML? ERD vs. UML 23/27 Agile development Manifesto for Agile Software Development (2001) Early and continuous delivery of valuable software Welcome changing requirements Business people and developers must work together, build projects around motivated individuals, face-toface conversation, self-organizing teams Continuous attention to technical excellence and good design, simplicity Team reflects on how to become more effective 24/27 DMO 2008 8 DMO - introductie Klassiek versus modern Simsion volgt meer de klassieke benadering Scott Ambler de moderne, agile aanpak We komen in de loop van de cursus terug op de verschillen 25/27 Hoe leer je datamodelleren? Veel, veel oefenen Testen van gemaakte modellen Boek ondersteunt en biedt kader, maar is geen vervanging voor oefenen Dus cursus is hierop afgestemd! 26/27 Oefening Een fietsclub gaat elke zaterdag in groepjes van wisselende samenstelling erop uit; elk groepje rijdt een andere route naar keuze. Een groepje heeft een nummer; een route een letter en een omschrijving. De club heeft al een eenvoudige database van de leden (tabel, NAW, etc.) en wil die uitbreiden zodat men weet: wanneer wie samen een route heeft gereden welke routes nooit worden gereden Opdracht Maak een lijst van benodigde data (velden), groepeer deze en vermijd “dubbel vastleggen” (redundantie). 27/27 DMO 2008 9