Modul DB1-2 Datamodellering



Relevanta dokument
Modul DB1-1 Databasmodellering

Ett arbetsexempel Faktureringsrutin

Modul DB1-3 Datamodellering

Logisk modell. Fysisk modell. Datamodeller Konceptuell modell

Laboration 1, Datamodellering. Observera. Tips. Förberedelse. Genomförande

Analytisk relationsdatabasdesign

Design och underhåll av databaser

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

Logisk databasdesign

Konceptuella datamodeller

D0004N Databaser I. Greenline. Petter Hedlin / epeehi-4 Rikard Stenmark / rikste-8 Markus Almberg / maralm-5

Avvikelserapport. Avvikelserapport. Fantastic Four Page 1

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

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

Lite om databasdesign och modellering

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

Tentamen 4,5 hp Delkurs: Databaser och databasdesign 7,5hp Tentander: VIP2, MMD2, INF 31-60, ASP

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

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

19. Skriva ut statistik

LATHUND FÖR MALVIN. 1 Registrera ny användare Logga In Glömt lösenord Annonsering Skapa annons...

Webbprogrammering, grundkurs 725G54

Databaser Design och programmering

Databaser och Datamodellering Foreläsning IV

Lösningsförslag till Exempel tentamen

Mäta effekten av genomförandeplanen

Laboration 2, MS SQL. Observera. Tips. Förberedelse. Genomförande

8-4 Ekvationer. Namn:..

Databasapplikationen HYR AKS. Vers 1.0 6, AKS har framtagits av ApplData AB på uppdrag av TillSaluGrejorAB

2. Redundans 3. Normalformer

Att komma igång med FirstClass (FC)!

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

NORMALISERING. Mahmud Al Hakim

Kom igång med LUPP 6.1

Lära känna skrivbordet

Verktyg för arbete utifrån lotsmodellen

KeyControl Sök person, nyckel eller cylinder

Skolmästerskap. Hur man arrangerar en schacktävling

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

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

1.Lär känna MS SQL Observera. Tips. Förberedelse

Karlstads Universitet, Datavetenskap 1

2. Registrera en ny medlem

Databasteori. Övningar

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

Så lätt byter du a-kassa (om du vill)

Bekämpningsmedelsregistret

Databasdesignspecifikation för Mätvärdeshanteringssystem

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Format fo r import av objekt i Sofie

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

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

Han har tidigare hjälp mig som praktikant och fungerar bra, duktig och vill lära sig.

Ansökan nr 2 om statsbidrag för Komvux, bidragsåret 2016.

Övning 2: I cellerna B19 och F26 ska du beräkna den totala ytan för respektive hus. I cell C28 den totala ytan, för båda husen.

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

Kravspecifikation. Hantering av systemdokument

SVENSKA FALLSKÄRMSFÖRBUNDETS REGLEMENTE FÖR FÖRTJÄNSTTECKEN

Anmälning i Kuksa såhär gör du (långa versionen med bilder och översättningar)

Ny verksamhet Befintlig verksamhet Avslutande av verksamhet Annat. Bygg- och miljökontoret Miljö- och hälsoskydd

Universitetet: ER-diagram

Val av sophämtningsabonnemang för småhus

Användarmanual flexconnect.se Administratör

Omarbetade funktioner i NyA

Manual för version V2

Installationsanvisning av proximityläsare 1103/2. Mod. 1103/2

Informationssystem och databasteknik

7 Mamut Client Manager

Databasteknik för D1, SDU1 m fl

bia HÄRDPLAST AB Datablad för lagerbehållare VCSPE 1100

Tentamen för DD1370 Databasteknik och informationssystem

Antal svarande i kommunen 32 Andel svarande i kommunen, procent 43 Kategorier ångest? Mycket dåligt Totalt Nej. Någorlunda. Mycket gott.

Anslutningsavtal. inom identitetsfederationen för offentlig sektor. för leverantör av eid-tjänst

ANVISNINGAR. Sjundeå e-postsystem. Del 1: inställningar. Version 1.0

Sammanfattning på lättläst svenska

B = Bokad tid. T = Tillfälligt bokad tid. L = Ledig tid. X = Spärrad tid

Programmering för språkteknologer II, HT2014. Rum

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

Innehåll MySQL Intro. Ex på ett index Index typer ISAM Balanserat träd Pk och Fk i MySQL Eget index För o nackdelar med index

Manual till 3C för CPUP

HAR DU PLATS FÖR EN TILL?

Förändringar i regelverket avseende införande av intygskonverteringstjänst och alternativt tekniskt anslutningsförfarande

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Upptäck Mälardalen med tåg

Här kan du välja befintligt upplägg eller skapa ett nytt. Klicka på edit uppe till höger för att redigera och/eller skapat nytt.

Inkomstuppgift för beräkning av avgift för förskola, fritidshem och pedagogisk omsorg

ELEVHJÄLP. Diskussion s. 2 Åsikter s. 3. Källkritik s. 11. Fördelar och nackdelar s. 4. Samarbete s. 10. Slutsatser s. 9. Konsekvenser s.

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

Kom igång med LUPP 6.0

Komma igång med Eventor

Microsoft Publisher. Laborationskompendium för digital behandling av publikationer. Detta exemplar tillhör:

Planering av egen cup - Steg 4: Under cupdagarna

Varmt välkomna till SK Ägirs simskola på Östbergsbadet!

Björn Abelli Programmeringens grunder med exempel i C#

Nyhetsdokument Vitec Teknisk Förvaltning

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Workshop om remiss för riskbedömning

Administrera serier. Syfte. Innehåll. Guide Eventor

E-tjänster och Webbprogrammering

Transkript:

Modul DB- Datamodellering Antal föreläsningar: Antal laborationer: Förkunskapskrav: Grundläggande kännedom om databaser (Modul DB-) Kurslitteratur: Referenslitteratur: Praktisk datamodellering ISBN: 9-44-800-

Innehållsförteckning Innehållsförteckning: Utveckling av Logiska datamodellen Objektifiering Egenrelationer Funktionellt beroende Normalisering Ej önskvärda bieffekter

Utvecklingsprocessen Steg Steg Steg Steg 4 Steg 5 Steg 6 Steg 7 Verksamheten, nulägesanalys, livscykelmodellen, datamodellering, kravspecifikation, projektbeskrivning Konceptuell modell, objekt, relationer, tabeller. Olika objektstyper och relationstyper. Attribut egenskaper, identifierare, nycklar Logisk modell, utför normalisering (fyra normalformerna). Objektifiera dina relationsobjekt. Generalisera. Fysisk modell, generalisering, denormalisering, optimering radvis/kolumnvis delning/sammanslagning, Index, tabellprecisering, dokumentera avvikelser från logisk modell. Anpassa för den valda databasen Volymberäkningar, belastningsanalys, borttagsanalys, skärmbilder, svarstider Databaskonstruktion, SQL-anpassningar, skärmbilder, rapporter, tester Dokumentation och implementation (installation)

Objektifiering av n:m relation Objektifiering av relationsobjektet Ägare Person ägare Bil PID BilID 00 0 00 0 00 0 Före objektifiering Observa att relationer vänds vid objektifiering Ägare Efter objektifiering Person Ägare Eget objekt Bil EgarID BilID (Fk) 00 0 00 0 00 0 PID (Fk) Objektifiering innebär att man ritar ett objekt (=en rektangel). Dessutom tilldelar man det nya objektet en egen Pk. Ägare EgarID PID 00 00 00 BilID 0 0 0 4

Objektifiering av n:m relation Objektifiering av relationsobjektet flera varianter Lager Förråd Artikel Förråd Lager Artikel Förråd Lager Artikel FörrådID Namn Stora Lilla Centrum Adress Sgatan Lgatan Cgatan FörrådID ArtID Antal ArtID Namn 00 00 00 4 8 00 Bord 00 Stol 00 Fåtölj Färg Furu Blå Grön Det finns flera olika varianter av utförande av lagertabellen dvs relationsobjektet. LagerID FörrådID ArtID Antal LagerID 00 4 00 4 00 00 00 8 00 8 FörrådID ArtID Antal 5

Bilköp forts. Objektifiering (Konceptuell Logisk modell) I den logiska datamodellen gör du relationsobjektet till ett eget objekt Alla gafflar på relationerna vänds emot det nya objektet Person Bil Person Köp Bil Köp Datum Datum Eftersom det är onödigt att bara ha en tabell för datum kan vi nu göra en optimering genom att lägga datum i köp -tabellen Observera att vi inte gör optimeringen förrän på den fysiska datamodellen av den goda anledningen att optimera bort en databastabell och slippa join - funktioner Person Köp PersID RegNr ABC00 DFG4 KLM755 Köp RegDatum 000 0060 0085 Pris 550000 475000 45000 Bil 6

Egenrelationer Relationer mellan olika förekomster (rader) av objekt Exempelvis: Här registreras personalen i en hierarki indelad i chef och underställda Personal Personal PersID Namn Är chef över 0 Kalle Underställd 0 Linda 0 Olle Exempelvis: En egenrelation kan även vara av typen många till många Chef 0 0 0 Enheter Samband Samband Enhet N/m N/m bar Enhet Pa bar N/m Faktor *0-5 *0 5 7

Funktionellt beroende A B B är funktionellt beroende av A om varje instans av A unikt bestämmer B. Betecknas: A B (Om vi vet A så vet vi också B) Exempel I: Om du vet ett produktid så kan du hitta produktnamnet D.v.s. Produktnamnet är funktionellt beroende av ProduktID. ProduktID ProduktNamn Produkt ProduktID ProduktNamn T56 X60 S70 Exempel II: Nettoinkomsten = Bruttoinkomst - inkomstskatt D.v.s. Nettoinkomsten är funktionellt beroende av bruttoinkomsten och inkomstskatten (Bruttoinkomst, skatt) Nettoinkomst Inkomst Brutto 8000 000 4000 Skatt % 9% % Netto 40 60 0 Exempel III: (PersID, Regnr, Regdatum) Pris Men för (PersID, Regnr) Pris eller PersID Pris finns inget funktionellt beroende Köp PersID Regnr ABC 0 DFG 456 YQW Regdatum 000 9900 000 Pris 750000 0000 50000 8

Normalisering Normalisering innebär att befintliga tabeller testas m.a.p. olika beroende för att bl.a. avlägsna redundans och olika oönskade bieffekter (anomalies) vid radering, insättning och uppdatering av poster i databasen. Leder vanligen till att tabeller delas upp och struktureras om. Tabeller kan uppfylla olika normalformer beroende på hur långt normaliseringen drivs. 9

Första normalformen Första normalformen ( NF) Unik nyckel En tabell måste ha en unik nyckel för varje post. Atomära fält Ett fält får inte växa på bredden. Kund Namn Guld AB Silver AB Platina AB Postadress Gatan Vägen Stranden Telefon 45, 678 9, 00 00 0 00, 00 0, 555 55 555 0, 666 0, 444 77 Ett namn är ingen bra unik primärnyckel då det är talande och det kan finnas dubbletter Telefon får inte innehålla fler än en datapost Dela upp Kundtabellen Uppdelningen av kundtabellen i två separata tabeller ger tabeller som uppfyller NF Kund Telefon KundID Namn Postadress KundID TelID Telefon Guld AB Gatan 45 Silver AB Platina AB Vägen Stranden 678 9 0 00 0

Första normalformen forts. Postadress räknas som en adress och räknas inte som ett multivalued field och behöver INTE delas upp enligt NF Det är dock för det mesta en fördel att dela upp postadressen i flera fält Det underlättar sökning på de olika delarna av adressen. Det gör det enklare att presentera informationen på olika sätt. Adress Postnr Gatuadress Postadress Nobelvägen 0 00 Lund 0 00 Nobelvägen Lund Gastvägen 0 00 Kalmar 0 00 Gastvägen Kalmar Amiralsvägen 00 Malmö 00 Amiralsvägen Malmö Namn Förnamn Efternamn Kalle Petterson Kalle Petterson Pelle Johansson Pelle Johansson Lotta Persson Lotta Persson

Andra normalformen Andra normalformen ( NF) NF + Alla icke nyckelfält ska vara funktionellt beroende av hela nyckeln Tabellen nedan visar en databastabell som var tänkt att hålla reda på olika programinstallationer på olika datorer. Tabeller likt nedan skapas ofta då du utvecklar i fel ordning. D.v.s. du tittar bara på vad som ska presenteras och gör en tabell efter det ProdNr MaskinID Produktnamn Produkttyp Maskinplacering Installationsdatum Win 000 Notepad Gel OS Texteditor Programmeringseditor BOM40 BBS0 Te5 00-0-0 999-05-09 00-05-4 Beror av (MaskinID) Beror av (ProdNr) Endast Installationsdatum som beror på hela nyckel

Andra normalformen forts. Vi delar upp tabellen i sina logiska delar så att varje kolumn beror på hela nyckeln. Nu är alla tabeller i andra normalformen Produkt Maskin ProdNr Produktnamn Produkttyp MaskinID Maskinplacering Win 000 OS BOM40 Notepad Gel Texteditor Programmeringseditor BBS0 Te5 Installationer ProdNr MaskinID Installationsdatum 00-0-0 999-05-09 00-05-4 Produkt Installationer Maskin Beror på både (ProdNr och MaskinID) NF gäller endast tabeller med komposit pk (sammansatt primärnyckel)

Tredje normalformen Tredje normalformen ( NF) NF + Det får inte finnas några funktionella beroende mellan icke nyckelfält På en jsp-sida ska information om kunder och vilket distrikt de tillhör presenteras, det är då lätt att skapa en databastabell som innehåller just den information vilket är FEL. TÄNK PÅ att inte skapa databastabellerna efter vad som ska presenteras Kund Kund Namn Postadress Telefon Distrikt Diskriktnamn Guld AB Silver AB Gatan Vägen 6 0480-5566 08-564578 00 00 Kalmar Stockholm Platina AB Gränden 9 08-458978 00 Stockholm Distriktnamn är funktionellt beroende av distrikt Du får onödig redundans genom att du måste dubbellagra ett distriktnamn för varje kund 4

Tredje normalformen forts. För att uppnå NF tas inbördes beroende bort genom att göra en separat Distriktstabell och endast behålla Distrikt som främmande nyckel i Kundtabellen Distrikt Kund Kund Distrikt Kund Namn Postadress Telefon Distrikt (fk) Distrikt Diskriktnamn Guld AB Silver AB Gatan Vägen 6 0480-5566 08-564578 00 00 00 00 Kalmar Stockholm Platina AB Gränden 9 08-458978 00 00 Stockholm Mer exempel: Spara inte fält som kan beräknas i databasen Orderrad (Antal * Pris) Totalpris OrderID Radnr Benämning Antal Pris Totalpris 00 00 Hårddisk RAM-minne 0 0 700 500 7000 50000 Ska beräknas vid Visning istället 00 Moderkort 00 00 5

Fjärde normalformen Fjärde normalformen i sin ursprungliga definition är krånglig att förstå och efterleva och brukar inte återfinnas i många databasböcker, därför presenterar jag en enklare och mycket användbar version av 4 NF Fjärde normalformen (4 NF) i en förenklad variant NF + Ett attribut får endast finns en gång per tabell Kund Kund Namn Postadress Telefon Telefon Telefon Guld AB Silver AB Gatan Vägen 6 070 44 Platina AB Gränden 9 Du slösar med minne när du antar att alla personer har tre telefoner och får tomma attribut Vad händer om en person har fler än tre telefoner? 6

Fjärde normalformen forts. Lösning: Gör en separat telefontabell. Denna kan växa obegränsat vi slipper på detta sätt tomma poster i databasen samt att en kund kan ha ett obegränsat antal telefoner Telefon Kund Kund Kundnr B Namn Telefon Postadress Kundnr Nr Telefon 070 44 Typ Hem Mobil Fax Guld AB Silver AB Platina AB Gatan Vägen 6 Gränden 9 Hem Fax Hem Liknade situationer uppkommer vid lagring av: Kontaktpersoner Adresser m.m. Det finns fler normalformer Exempelvis: Boyce-Codd s och 5 NF Dessa kan du för det mesta bortse från 7

Fördelar och nackdelar Normalisering innebär att det skapas fler tabeller Fördelar: icke redundanta tabeller är enklare att uppdatera och skala i storlek Exempelvis: Om en felstavning upptäcks behöver du bara ändra på ett ställe istället för att gå igenom hela databasen. det tar ofta mindre plats Exempelvis: Nackdelar: Du slipper lagra samma information på flera ställen i databasen. kan ta längre tid att söka i databasen Exempelvis: Du måste göra join på flera tabeller vilket gör att det går långsammare. besvärligare programmering Exempelvis: Det blir fler tabeller att hålla reda på (Utmaningar är till för att övervinnas). 8

Ej önskvärda bieffekter Deletion anomaly Antag att vi raderar Uppland då förlorar vi inte bara Uppland utan även Stockholmskommun och dess invånare. Landskap Uppland Småland Öland Kommun Stockholm Kalmar Borgholm Distrikt Norra Centrum Södra Insertion anomaly Antag att vi vill registrera att EU-Masters kostar 80 000 Euro, så kan vi inte göra detta förrän en golfspelare har anmält sig till tävlingen. PersID 770 800 75006 Tävling US Open US Masters EU Masters Avgift 50000 65000 70000 Update anomaly Antag att avgiften för US-Open ska ändras. Då måste alla poster där US-Open förekommer uppdateras. PersID 770 800 75006 Tävling US Open US Open US Open Avgift 50000 50000 50000 9

Bättre lösning En bättre lösningar för att undvika anomalies En bättre lösning på det första problemet är en så kallad stabil hierarkistruktur Tillhör Landskap Kommun Tillhör En bättre lösning på det andra problemet Distrikt Person Deltar Tävling Person Deltar Tävling Person Deltar Tävling PersID Namn Kalle Linda Olle PersID TävlingID 00 00 00 TävlingID 00 00 00 Namn US Open US Masters EU Masters Avgift 50000 65000 75000 0

Regelverk Produkt Prislista Period Kundgrupp Volymgräns Fasta volymgränser för alla produkter Regelverk beskriver ett antal kriterier som ska vara uppfyllda för att erhålla ett visst resultat. Ex. Stafflade priser, bonusskalor, provisionstabeller mm. Prislista ProdID KundgrpID Från VolymGränsID Pris 00 0 0085 00 00 0 0085 90 00 0 0085 80 00 0 0 05 00 0 0 95 00 0 0 85 För att erhålla rätt pris måste fyra värden i relationen anges: Produkt, Kundgrupp, Datum och Volym

Sammanfattning Sammanfattning: Hur skapar du en databasmodell Skapa en konceptuell databasmodell, generalisera, identifiera objekten ur verksamheten. Normalisera och objektifiera din modell så får du en logisk modell. Skapa den fysiska modellen genom denormalisering, tabellprecisering, optimera utifrån logiska modellen. Använd sunt förnuft men dokumenterna noga alla ändringar. Primärnyckeln identifierar varje post i en tabell unikt Främmande nyckel identifierar vilken post som är relaterad till vem De olika relationerna : en till en :n en till många n: många till en n:m många till många (skapar alltid ett relationsobjekt) Ej önskvärda bieffekter Deletion anomaly Insertion anomaly Update anomaly De fyra första normalformerna NF Unik nyckel och Atomära fält NF NF + Alla icke nyckelfält ska vara funktionellt beroende av hela nyckeln NF NF + Det får inte finnas några funktionella beroende mellan icke nyckelfält 4NF NF + Ett attribut får endast finns en gång per tabell