Webprogrammering och databaser Konceptuell datamodellering med ER-modellen
2 Programutveckling Interaktionsdesign, behovsanalys Programdesign, databasdesign Implementation
3 Programdesign, databasdesign Databasdesign Kravspecifikation Applikationsdesign Konceptuell design Konceptuell datamodell Transaktionsdesign Logisk design Implementationsmodell Fysisk design Fysisk datamodell Implementation
4 Konceptuell datadesign Mål: skapa en högnivå-specifikation av informationsinnehållet i databasen Konceptuell modell är oberoende av DBMS (dvs. ingen hänsyn till implementations-detaljer)
5 ER-modellen Enligt ER-modellen består en domän av entiteter (saker) som har samband med varandra Varje entitet har ett antal attribut och varje attribut har ett visst värde.
6 Entitetstyp En typ av företeelse som behöver representeras. En individ av den typen är en entitetsinstans Entitetstyp Person Byggnad/hus Kurs Företag Idé Entitetsinstans Anna Axelsson Globen Databaser - design och prog. Nokia AB E=MC 2
7 Sambandstyp Representerar ett förhållande mellan två eller flera entitetstyper. Om entitetsinstanserna kan höra ihop finns det en sambandsinstans mellan dem. Sambandstypen är mängden av sådana sambandsinstanser. Ex: Personer studerar kurser studerar blir då sambandstypen Anna Anderson studerar Webprogrammering är en sambandsinstans
8 Attribut De egenskaper hos entitetstyper som vi är intresserade av representeras som en entitetstyps attribut. Varje attribut har en domän (värdemängd) som anger de tillåtna värdena för attributen.
9 Attribut: exempel Studenten Anna Axelsson kan t.ex. beskrivas som följande entitet: Attribut Attributvärde Namn Anna Axelsson LiuID annax234 Adress Studentvägen 8, 1tr Telefon 011-121212 Kurser 729G68, 732G16
10 Värden I en ER-modell brukar man identifiera tre slags attributvärden: enkla (ex. LiUID) sammansatta (ex. Adress) multipla (ex. kurser) null
11 Notation för ER-modeller ER-modeller beskrivs i diagramform Entitetstyp Sambandstyp Attribut
12 Exempel: universitetsstudier Kravspec Antag att universitetet behöver ett databassystem för att hålla rätt på studenter som går kurser, vem som ger vilka kurser och var de personerna är anställda (vilken institution). Datakrav: För att representera studenter behöver vi lagra namn (förnamn och efternamn skiljs så att man enkelt kan sortera på efternamn), personnummer för att få ett unikt id, kontonamn och lösenord.
13 Exempel: kravspec forts. Kurser har kurskoder, namn, ges en viss period och ägs (ansvaras för) av en viss institution. De ger ett visst antal poäng och hålls av någon som är anställd på högskolan. Olika år kan en viss kurs ges olika läs-perioder och av olika personer. Institutionen som ansvarar för kurserna är inte nödvändigtvis samma institution som läraren är anställd på.
14 Exempel: kravspec forts: Funktionskrav: Man ska kunna söka ut vilka studenter som går en viss kurs och vilket betyg de fått på kursen. Även vem som undervisar på vilken kurs är viktigt och var de är anställda. Vi vill kunna hitta telefonnummer (en del har flera nummer) och information om var anställda har sina tjänsterum.
15 Exempel: kravspec forts: Vi vill också kunna skicka epost till studenter och hjälpa dem hålla rätt på sina lösenord. Vi vill också lagra information om vilka betyg studenter får på de kurser de går. Mycket information! Hur strukturera detta?
16 ER-modellering Studera den värld som skall modelleras och identifiera de: Entitetstyper Sambandstyper Attribut som behövs för problemlösningen.
17 Exempel: universitetsstudier Hur hitta entitetstyper och sambandstyper? Tips: Sunt förnuft! Entitetstyper är ofta substantiv! Meningar där entitetstyperna kombineras beskriver ofta sambandstyper.
18 Nyckelattribut Identifiering av nyckelattribut ingår i ERmodellering och databasdesign. Ett attribut med unika värden för varje instans av en entitetstyp kallas nyckelattribut Om inget attribut ensamt är unikt för varje instans? Flera tillsammans (gör sammansatt). markeras i ER-diagrammet med understrykning av attributnamnet Nyckelattribut i exemplet?
19 Sambandstyper: kardinalitet Specificerar antalet sambandsinstanser av en viss typ som en entitetsinstans kan ingå i. För binära sambandstyper (siffran skrivs vid respektive entitetstyp i diagrammet): en-till-en (1:1) en-till-många (1:N) många-till-en (N:1) många-till-många (M:N) Kardinalitet för flervägssamband uttrycks i ord
20 Sambandstyper: deltagande specificerar om en entitetsinstans måste ha ett samband via sambandsinstansen. Om alla entiteter av en viss typ måste delta i ett samband av den typen kallas det totalt/ fullständigt deltagande. Om alla entitetsinstanser inte måste delta i någon sambandsinstans är det partiellt deltagande. Totalt deltagande ritas i diagrammet som dubbelstreck mellan entitetstyp och sambandstyp.
21 Universitetsexemplet pnr konto e-namn namn f-namn student e-post m lösen reg. på betyg namn kurskod n n läsperiod kurs n år poäng ansv. av e-namn f-namn hålls av 1 1 institution namn 1 jobbar på namn adress tel.nr. anställd n tjänsterum anst.nr
22 Exempel: universitetsstudier: entitetstyp utan id Antag att rektor utlyser pengar för pedagogiska projekt, som institutionerna kan arrangera. Man vill kunna söka efter alla olika projekten, kolla deras tidsplaner och budgetar. Projekten identifieras med namn. För varje institution finns en kontroll att namnen är unika, men institutionerna pratar inte med varandra.
23 Svag entitetstyp Är en entitetstyp vars instanser inte kan identifieras utan att blanda in en instans av en annan entitetstyp. Den identifierande entitetstypen kallas ägande entitetstyp och sambandet som används vid identifikation kallas ägande samband och en svag entitetstyp måste ha totalt deltagande i det ägande sambandet. Identifierande attribut i den svaga entiteten kallas partiell nyckel.
ER-diagram, exemplet 24 tjänsterum tel.nr. e-namn f-namn namn anst.nr anställd reg. på hålls av jobbar på ansv. av tidsplan projekt budget namn driver namn adress institution betyg lösen e-post konto e-namn f-namn namn pnr student m 1 n läsperiod kurskod namn kurs år poäng n n n 1 1 1 n
25 Verifiera ER-modellen mot tänkta frågor Vilka studenter är registrerade på en viss kurs och vilka betyg har de fått? Vem håller en viss kurs, var är den anställd? Vilken institution ger en viss kurs? Vilka kurser ges av en viss institution? Vilka lärare har kurser för en viss student? Vilka lärare har kurser för en viss institution?
26 Designbeslut att tänka på vid design av begreppsmodell: Undvik redundans. ex: attribut som finns på flera entitetstyper sambandstyper som går att härleda Enkelt är vackert. Undvik onödiga entitetstyper. entitetstyper med 1:1-samband kan vara varianter av samma entitetstyp. entitetstyper som bara förbinder andra entitetstyper. å andra sidan: inga lösa entitetstyper
27 Fler designbeslut Avvägningar: attribut eller samband med annan entitetstyp? flera enkla attribut eller ett sammansatt? flervägssamband eller en entitetstyp i mitten?
28 Summering: designprocessen hittills Skapa kravspecifikation Skilj ut datadesign från funktionsdesign Skapa ER-modell: entitetstyper (t.ex via substantiv) sambandstyper, kardinalitet och deltagande attribut till entitetstyper nycklar
29 Summering forts: designprocessen hittills Granska modellen redundans enkelhet kontrollera mot transaktioner
Frågor? eva.ragnemalm@liu.se www.liu.se