Webprogrammering och databaser Begrepps-modellering ! ! Konceptuell datamodellering med Entitets-Relationsmodellen Databaser - Design och programmering ! LiU Eva L. Ragnemalm entiteter (saker) som har – samband med varandra – Varje entitet har ett antal attribut och – varje attribut har ett visst värde. Databaser - Design och programmering ! ! LiU Eva L. Ragnemalm ! 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. LiU Eva L. Ragnemalm 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å. Databaser - Design och programmering 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). Databaser - Design och programmering Exempel: kravspec forts. ! LiU Eva L. Ragnemalm Exempel: universitetsstudier Kravspec Enligt ER-modellen består en domän av – Konceptuell modell är oberoende av DBMS (dvs. ingen hänsyn till implementationsdetaljer) Databaser - Design och programmering ER-modellen ! Mål: skapa en högnivå-specifikation av informationsinnehållet i databasen LiU Eva L. Ragnemalm ! ! 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 och information om var anställda har sina tjänsterum. Databaser - Design och programmering LiU Eva L. Ragnemalm Exempel: kravspec forts: ! ER-modellen 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? ! ! LiU Databaser - Design och programmering Eva L. Ragnemalm Studera ‘den värld som skall modelleras’ och identifiera de: – Entitetstyper – Sambandstyper – Attribut som behövs för problemlösningen. Databaser - Design och programmering Entitetstyp ! ! Sambandstyp En typ av företeelse som behöver representeras. ! En individ av den typen är en entitetsinstans ! Entitetsinstans Anna Axelsson Globen Databaser - design och prog. Nokia AB E=MC2 Entitetstyp Person Byggnad/hus Kurs Företag Idé Databaser - Design och programmering 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. – LiU Eva L. Ragnemalm Ex: studenter som går kurser: Går-kurs är en sambandstyp Databaser - Design och programmering Exempel: universitetsstudier Hur hitta entitetstyper och sambandstyper? ! Tips: – Sunt förnuft! – Entitetstyper är ofta substantiv! – Meningar där entitetstyperna kombineras beskriver ofta sambandstyper. LiU Eva L. Ragnemalm ER-modell, notation ! Databaser - Design och programmering LiU Eva L. Ragnemalm ! ER-modeller beskrivs oftast i diagramform. Går LiU Eva L. Ragnemalm Databaser - Design och programmering LiU Eva L. Ragnemalm Attribut ! ! Attribut: exempel De egenskaper hos entitetstyper som vi är intresserade av representeras som en entitetstyps attribut. ! Läraren Anna Axelsson kan t.ex. beskrivas som följande entitet: Varje attribut har en domän (värdemängd) som anger de tillåtna värdena för attributen. Databaser - Design och programmering LiU Eva L. Ragnemalm I en ER-modell brukar man identifiera tre slags värden: enkla (ex. anställningsnummer) – sammansatta (ex. Adress) – multipla (ex. kurser) – null ! Databaser - Design och programmering LiU Eva L. Ragnemalm ! – – ! ! 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) Studentvägen 8, 1tr Telefon 011-121212 Kurser 729G68, 732G16 LiU Eva L. Ragnemalm 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? LiU Eva L. Ragnemalm 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. – Kardinalitet för flervägssamband uttrycks i ord Databaser - Design och programmering 234 Adress Sambandstyper: deltagande Specificerar antalet sambandsinstanser av en viss typ som en entitetsinstans kan ingå i. – Anställningsnr Databaser - Design och programmering Sambandstyper: kardinalitet ! Anna Axelsson Nyckelattribut ! – Attributvärde Namn Databaser - Design och programmering Värden ! Attribut LiU Eva L. Ragnemalm Totalt deltagande ritas i diagrammet som dubbelstreck mellan entitetstyp och sambandstyp. Databaser - Design och programmering LiU Eva L. Ragnemalm Exempel: universitetsstudier entitetstyp utan id Universitetsexemplet e-namn pnr betyg e-post lösen konto student läsperiod namn f-namn namn reg. på år kurskod n poäng kurs ! n n m ansv. av hålls av e-namn 1 1 f-namn institution namn namn anställd tel.nr. tjänsterum adress jobbar på 1 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. n anst.nr Databaser - Design och programmering LiU Eva L. Ragnemalm LiU Databaser - Design och programmering Eva L. Ragnemalm ER-diagram, exemplet Svag entitetstyp ! ! ! e-namn Ä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. pnr LiU Eva L. Ragnemalm student e-namn ! ! 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? Databaser - Design och programmering anställd tjänsterum adress jobbar på driver n n anst.nr projekt namn Databaser - Design och programmering budget tidsplan LiU Eva L. Ragnemalm 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. ! LiU 1 institution namn tel.nr. – Eva L. Ragnemalm n n 1 Vem håller en viss kurs, var är den anställd? Vilken institution ger en viss kurs? poäng kurs 1 f-namn 1 – ! n m namn ! Vilka studenter är registrerade på en viss kurs och vilka betyg har de fått? reg. på ansv. av Verifiera ER-modellen mot tänkta frågor ! år kurskod hålls av Identifierande attribut i den svaga entiteten kallas partiell nyckel. Databaser - Design och programmering betyg e-post lösen konto läsperiod namn f-namn namn entitetstyper med 1:1-samband kan vara varianter av samma entitetstyp. ! entitetstyper som bara förbinder andra entitetstyper. ! å andra sidan: inga “lösa” entitetstyper Databaser - Design och programmering LiU Eva L. Ragnemalm Summering: designprocessen hittills Fler designbeslut ! Avvägningar: ! Skapa kravspecifikation – attribut eller samband med annan entitetstyp? ! Skilj ut datadesign från funktionsdesign – flera enkla attribut eller ett sammansatt? ! Skapa ER-modell: – flervägssamband eller en entitetstyp i mitten? Databaser - Design och programmering LiU Eva L. Ragnemalm redundans – enkelhet – kontrollera mot transaktioner ! ! ! Databaser - Design och programmering LiU Eva L. Ragnemalm ! attribut till entitetstyper – nycklar LiU Eva L. Ragnemalm Företaget består av ett antal avdelningar. Varje avdelning har ett namn, ett nummer, en chef och ett antal anställda. Startdatum för varje avdelningschef registreras. En avdelning kan ha flera lokaler. Varje avdelning finansierar ett antal projekt. Varje projekt har ett namn, ett nummer och en lokal. För varje anställd lagras följande information: namn, personnummer, adress, lön och kön. LiU Eva L. Ragnemalm Frågor till exempel 2 En anställd jobbar för endast en avdelning men kan jobba med flera projekt som kan tillhöra olika avdelningar. Information om antalet timmar (per vecka) som en anställd jobbar med ett projekt sparas. Information gällande den anställdes chef sparas också. För varje anställd lagras information om familjen av försäkringsskäl. För varje familjemedlem lagras förnamn, födelsedatum, kön samt relation till den anställde. Databaser - Design och programmering sambandstyper, kardinalitet och deltagande – Databaser - Design och programmering Ett exempel till, forts ! – Ett exempel till Granska modellen – entitetstyper (t.ex via substantiv) Databaser - Design och programmering Summering forts: designprocessen hittills ! – LiU Eva L. Ragnemalm ! ! ! Herr Ohlsson är sjuk idag, sök ut alla projekt där han jobbar så att man kan sätta upp anslag i lokalen om att han är sjuk. De anställda som har barn under 12 år ska få ett erbjudande om barnförsäkring (lista anställda med barn under 12) Projekt X behöver att man lägger mer tid. De chefer som har folk som jobbar på projekt X ska sammankallas för förhandlingar. Databaser - Design och programmering LiU Eva L. Ragnemalm
© Copyright 2024