Universitetet: ER-diagram



Relevanta dokument
Databasteori. Övningar

Databaser Design och programmering

Databasteori Övningar

Universitetet: ER-diagram e-namn

Universitetet: ER-diagram e-namn

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema

Databasteori Övningar

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion.

Databasteori. Övningar

Konceptuella datamodeller

Databasteori. Övningar

Karlstads Universitet, Datavetenskap 1

NORMALISERING. Mahmud Al Hakim

Relationell databasdesign

Logisk databasdesign

Grunderna för relationsmodellen!

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Databaser design och programmering. Design processen ER- modellering

Normalisering. Varför? För att åstadkomma en så bra struktur i databasen som möjligt med minimalt med dubbellagrad info.

Webbprogrammering, grundkurs 725G54

Funktionella beroenden - teori

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Analytisk relationsdatabasdesign

Informationssystem och databasteknik

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY!, där RIDKURS.KursId = KURS.KursId 3NF Hästnamn, Art, NY! NY! NY! NY!

Föreläsning 6: Normalisering & funktionella beroenden

Idag. Databaskvalitet(??) Databaskvalitet... Databaskvalitet...

Databaser och Datamodellering Foreläsning IV

Tentamen plus lösningsförslag

Kvalitetstänkande. Utgångsläge Samtliga ER-diagram har överförts till scheman

Uppdelning. Relationell databasdesign, FB Teori Låt R vara ett relationsschema. R 1, R 2,..., R n är en uppdelning av

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

IT i organisationer och databasteknik

Databasdesign. E-R-modellen

Relationsmodellen. Relations modellen är idag den mest änvända datamodellen för kommersiella

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Karlstads Universitet, Datavetenskap 1

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

Tentamen NDA01G Öppen för alla. Tentamenskod: Inga hjälpmedel är tillåtna

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

GIS, databasteknik och kartografi. Kursmaterial för databasdelen

Pga att (Nummer och Typ) tillsammans bestämmer övriga attribut funktionellt väljer vi (Nummer, Typ) till primärnyckel:

Databaser - Design och programmering

732G16: Databaser - Design och programmering

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Idag. Hur vet vi att vår databas är tillräckligt bra?

Tentamenskod: Tentamensdatum: Tid: 14:00-19:00. Inga hjälpmedel är tillåtna

TENTAMEN TDDB77 Databaser och Bioinformatik 24 april 2004, kl 14-18

Tentamen ISGB01, ISGB24. Databasdesign 7,5 Poäng

Föreläsning 3 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Vad är ett databashanteringssystem?

Tentamen ISGB01 (delkurs i ISGB24) Databasdesign 7,5 Poäng

Relationsmodellen och syntetisk databasdesign

TDDI60 Tekniska databaser

Webprogrammering och 729G28 databaser Webprogrammering och databaser Kursöversikt Webprogrammering Designprocessen Lösningsförslag

Databaser och databasdesign. Den relationella modellen, normalisering och modellering (2)

Tentamen 2I1033, IT i Organisationer och Databasteknik lördag 17/4 2004, kl LÖSNINGSFÖRSLAG

TDDI 60 Tekniska databaser

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Databaser - Design och programmering. Databasdesign. Funktioner. Relationsmodellen. Relationsmodellen. Funktion = avbildning (mappning) Y=X 2

Tentamen DATABASTEKNIK - 1DL116

Exempel tentamen. Skriv bara på en sida av pappret Skriv namn på varje papper Skriv läsligt, annars rättas inte tentamen Alla hjälpmedel är tillåtna

Tentamen Databasteknik

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

Modul DB1-2 Datamodellering

Karlstads Universitet, Datavetenskap 1

Lite om databasdesign och modellering

Lösningsförslag till Tentamen,

Tentamen i. Databasteknik

Lösningsförslag Tentamen, 25 april 03

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Föreläsning 4 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Normalisering (Analytisk databasdesign)

Exempel-Tentamen III

Lösningsförslag, tentamen i Databaser

Tentamen i Databasteknik

Tentamen EIT:DB Databastmetodik 11/ kl Lösningsförslag

Databasteknik. Vad är. Vad är databaser bra till? data? föreläsare: Kjell Lindqvist. och NADA. databaser? och. vad är de bra för?

TENTAMEN. TDDD12 Databasteknik TDDD46 Databasteknik. 16 augusti 2010, kl 14-18

Tentamen för DD1370 Databasteknik och informationssystem

Design och underhåll av databaser

Inst. för Data- och Systemvetenskap SU Maria Bergholtz. Tentamen. 21/ kl Inga hjälpmedel är tillåtna (annat än ordbok).

TENTAMEN TDDB77 Databaser och Bioinformatik 12 juni 2007, kl 14-18

Lösningar till tentamen i EDAF75

Tentamen för DD1370 Databasteknik och informationssystem

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

Lösningsförslag till tentamen för 1E1601

Tentamen för DD1370 Databasteknik och informationssystem

Databaser design och programmering. Fö 2: Design processen, ER-modellering

16/11/14. Databasteknik och informationssystem DD1370. Information. Dagens föreläsning: ERmodeller Dagens föreläsning. Påminnelse: Kursens mål

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem

729G28 Webprogrammering och databaser. Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminologi

Concepts learned this far. ER till relationer. ER till relationer. ER till relationer. TDDD12 Database Technology

Transkript:

Databaser Design och programmering Fortsättning på relationsmodellen: Normalisering funktionella beroenden normalformer informationsbevarande relationsschemauppdelning Varför normalisera? Metod att skydda oss från dum design Lagra samma data flera ggr i onödan Inte kunna lagra viss information Otydlig betydelse av en tupel som kan komma från otydlig betydelse av entitetsinstans Universitetet: ER-diagram e- f- läsperiod betyg år kurskod e-post poäng n kurs pnr reg. lösen på n n konto student m ansv. av hålls av e- f- institution adress jobbar på anställd driver tel.nr. n n tjänsterum anst.nr projekt budget tidsplan Relationsmodell Universitetet Student (pnr, e-, f-, epost, konto, lösen) Kurs (, kurskod, läsår, period, poäng, kursansv, institution) Anställd (f-, e-, anstnummer, rum, telefon, institution) Institution (, adress) Projekt(institution,, tidsplan, budget) RegistreradPå (studentpnr, kursnr, läsår, betyg) Relationen kurs (exempel) Problem med kurs Kurskod År Namn Läsperiod Poäng Kursansvarig Ansv Inst 732G6 2009 Databaser vt2 7.5 Eva Ragnemalm IDA 729G64 2009 Databaser ht2 7.5 Eva Ragnemalm IDA 732G6 2008 Databaser vt2 7.5 Eva Ragnemalm IDA 732G6 2007 Databaser vt2 7.5 Magnus Ingmarson IDA HIBB3 2006 Databaser Vt 5 Magnus Ingmarson IDA Samma, poäng och institution återkommer: redundans Tar plats. Uppdateringsanomali Insättningsanomali Borttagningsanomali Otydlig tolkning Hur undvika redundans?

Normalisering En metod att finna redundans Normaliserings-villkor: normalformer Begrepp: funktionella beroenden kom ihåg: nycklar och primattribut informationsbevarande relationsschemauppdelning :a Normalform Alla attribut ska vara atomära (odelbara) Relationsmodellen antar att alla attribut är odelbara. 2:a normalform, 3:e normalform, BCNF baseras på Funktionella beroenden i relationen. Funktionellt beroende X är en delmängd av attributen i en relation. Om X entydigt bestämmer värdet på ett attribut Y, kallas det att Y är funktionellt beroende av X eller att X bestämmer Y. X Y X kallas determinant i det funktionella beroendet. Exempel För nycklar finns alltid fb till alla attribut i hela relationen: ex: Student {pnr} {e-} {pnr} {f-} {pnr} {konto} {pnr} {epost} {pnr} {lösen} men även: {pnr} {pnr} {konto} {pnr,e-,f-,epost,konto,lösen} {epost} {pnr,e-,f-,epost,konto,lösen} Funktionella beroenden, forts Fullt funktionellt beroende Funktionella beroenden baseras på relationens semantik. Ett fb ska gälla i alla möjliga instanser av databasen OBS: Att det finns ett fb X Y betyder inte att det finns ett fb Y X Givet X Y. Om inget attribut kan tas bort ur X utan att vi förlorar det funktionella beroendet (dvs X är minimal), kallas det fullt funktionellt beroende, ffb ex: Kurs (, kurskod, läsår, period, poäng, kursansv, institution) {kurskod, läsår} {kursansv} {kurskod, läsår} {poäng} Ej för en kurs får inte ändra poäng hur som helst

Fullt funktionellt beroende, forts exemplet kurs {kurskod} {poäng} Ett attribut (poäng) är ej av nyckeln Andra i Kurs: {kurskod} {} {kurskod} {institution} OBS att verkligheten styr Andra normalformen - 2NF Definition: Ett relationsschema R är i 2NF om det är i :a normalform och varje icke-primattribut A i R är av varje kandidatnyckel i R. Fråga: Är alla attribut som inte är primattribut av alla kandidatnycklar? Exempel 2NF Exemplet kurs Relationen Student (pnr, e-, f-, epost, konto, lösen) Har : {pnr} {e-, f-, lösen} {konto} {e-, f-, lösen} {epost} {e-, f-, lösen} Kurs (, kurskod, läsår, period, poäng, kursansv, institution) {kurskod, läsår} {kursansv} {kurskod, läsår} {läsperiod} {kurskod} {poäng} {kurskod} {} {kurskod} {institution} Uppfyller ej 2NF Relationsschemauppdelning Lyft ut det/de problematiska funktionella beroendet/na till en egen tabell Exempel: Kurs (kurskod,, poäng, institution) KursÅr(kurskod, läsår, kursansv, läsperiod) informationsbevarande? Informationsbevarande relationsschemauppdelning Om vi delar upp en relation R i relationerna R och R2 så kallas uppdelningen informationsbevarande om R * R2 innehåller samma information som R. * = naturlig sammansättning Varken mer eller mindre naturlig sammansättning

Informationsbevarande relationsschemauppdelning, exempel Person(Pnr,Namn,Adress) med funktionella beroenden: Pnr Namn, Pnr Adress, inte Namn Adress pnr Adress 79080234 Anna Ågatan 3 82237890 Anna Rydsv.2 pnr 79080234 Anna 82237890 Anna Adress Anna Ågatan 3 Anna Rydsv.2 Exempel En firma som administrerar andrahandsuthyrning av lägenheter vill hålla reda på kontraktisinformationen. Man vill hålla reda på vem hyr vad (kund, kundnummer, lägenhetsnummer, lägenhetsadress) när (start och slutdatum) samt till vilken hyra (som är olika för varje lägenhet). De lagrar också information om vem som egentligen äger lägenheten. För tills vidare -kontrakt registreras slutdatum som null. Varje person antas bara hyra varje lägenhet en gång och kan bara hyra en lägenhet åt gången. En ägare kan dock låta firman hantera flera lägenheter. Möjlig relationsmodell: Kontrakt(kundNr, lghnr, knamn, lghadr, start, slut, hyra, ägarnr, änamn) :a normalform? 2:a normalform? Funktionella beroenden? Kontrakt(kundNr, lghnr, knamn, lghadr, start, slut, hyra, ägarnr, änamn) Fb, 5 och 6 visar kandidatnycklarna: {kundnr, lghnr}, {lghnr, start} samt {kundnr, start} Primattribut? kundnr, lghnr, start Det innebär att följande attribut är ickeprimattribut: knamn, lghadr, slut, hyra, ägarnr, änamn Dela upp relationen så att de problematiska beroendena får en egen relation. Kund(kundNr, knamn) Lgh(lghNr, lghadr, hyra, ägarnr, änamn) Hyra(kundNr, lghnr, start, slut) Är dessa i 2NF? Är informationen bevarad? 2NF?

Övning på informationsbevarande relationsschemauppdelning Kund Lgh Kund Lgh Start Slut Hyra Ägar Ägar nr Nr Namn Adr Nr Namn CR76 PG4 J.Kay Lagv 4 82 9032 3200 CO40 T.Moe CR76 PG6 J.Kay Nyv 2 9033 null 3500 CO93 U.Sin CR56 PG4 A.Son Lagv 4 9033 null 3200 CO40 T.Moe CR56 PG35 A.Son Husg 72 9030 3000 CO93 U.Sin CR56 PG6 A.Son Nyv 2 6080 70 3500 CO93 U.Sin Tredje normalform - 3NF Definition: Ett relationsschema R är i 3NF om det är i 2NF och det för varje X A som finns i R, gäller något av följande villkor: a) X är en supernyckel för R b) A är ett primattribut i R Frågan för 3NF: För varje beroende: är X en supernyckel eller Y ett primattribut? Dela upp igen. Exempel (3NF) LghInfo(lghNr, lghadr, hyra, ägarnr) Ägare (ägarnr, änamn) Kund(kundNr, knamn) Hyra(kundNr, lghnr, start, slut) Är dessa i 3NF? Boyce-Codd normalform - BCNF Ett relationsschema R är i BCNF om det är i 3NF och för varje beroende X A som finns i R, X är en supernyckel för R. Dvs alla determinanter är antingen en kandidatnyckel eller innehåller en (hel). Frågan för BCNF: är varje determinant en supernyckel? Exempel (BCNF) 3NF/BCNF Frågan för BCNF: är varje determinant en supernyckel? LghInfo(lghNr, lghadr, hyra, ägarnr) Ägare (ägarnr, änamn) Kund(kundNr, knamn) Hyra(kundNr, lghnr, start, slut) Inte alltid möjligt att transformera ett schema till BCNF och behålla beroendena. 3NF har de flesta av BCNF s fördelar. Det är inte självklart att man måste uppfylla BCNF. OBS: 3NF tillåter någon sorts redundans som BCNF inte gör (funktionella beroenden mellan primattribut).

Ytterligare exempel Exempel på rapport Antag att uthyrningsfirman inspekterar varje lägenhet mellan uthyrningarna och noterar brister och problem. När inspektion ska göras rekvirerar man en bil som används under dagen. En bil kan dock användas av flera personer under samma dag, men en inspektör bokar samma bil hela dagen. En inspektör kan inspektera flera lägenheter under samma dag, men varje lägenhet inspekteras endast en gång en viss dag. Det finns alltså ett (eller flera) sådana rapportformulär per lägenhet. Lägenhetsnummer: PG4 Lägenhetsadress Studentv 8 Nollköping Inspektions datum Tid Kommentar Inspektör Nr Inspektör Namn BilNr 90228 0.00 Trasigt proslin SG37 Ann Beech ABC23 830 09.00 Fint SG4 David Ford DEF098 730 3.00 Mögel i badrum SG4 David Ford GHI987. Funktionella beroenden? Facit: lgh(lghnr, lghadr) personal(pnr, pnamn) inspektion(lghnr, idatum, itid, kommentar, pnr) personbil(pnr, idatum, bil)