Analytisk relationsdatabasdesign



Relevanta dokument
Informationssystem och databasteknik

IT i organisationer och databasteknik

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

Relationsmodellen och syntetisk databasdesign

Design och underhåll av databaser

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

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

Informationssystem och Databasteknik

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

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

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

Logisk databasdesign

Funktionella beroenden - teori

Informationssystem och Databasteknik

Tentamen. Databasmetodik Lördag 27 september 2014 kl

Exempel-Tentamen III

Konceptuella datamodeller

Databaser och Datamodellering Foreläsning IV

Modul DB1-2 Datamodellering

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

Universitetet: ER-diagram

Lösningsförslag till Exempel tentamen

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

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

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

Lösningsförslag, tentamen i Databaser

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

Föreläsning 6: Normalisering & funktionella beroenden

Tentamen plus lösningsförslag

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

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: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

IT i organisationer och databasteknik

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

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Relationell databasdesign

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

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

NORMALISERING. Mahmud Al Hakim

Webbprogrammering, grundkurs 725G54

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

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

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

Konceptuell modellering

Tentamen i Databasteknik

Karlstads Universitet, Datavetenskap 1

WCMS-15, Webbutvecklare CMS

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Databaser Design och programmering

K3 Om andra ordningens predikatlogik

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

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

08/11/13. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Deadline på tisdag

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

Sätt att skriva ut binärträd

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

Lösningsförslag till Tentamen,

Kompendium till databaser och informationssystem 10p för SY2 2000

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

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

GIS, databasteknik och kartografi. Kursmaterial för databasdelen

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

Databasteori. Övningar

Lösningar till tentamen i EDAF75

Exempel-tentamen 1. + Lösningsförslag. Inga hjälpmedel är tillåtna.

Idag. Hur skapar vi och underhåller en databas? Index? Vad är det och varför behövs de? Behöver jag bry mig om index?

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Starta MySQL Query Browser

Övningar i SQL. SQLAccess.doc Ove Lundgren

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

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

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

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Relationsdatabasdesign

Avvikelserapport. Avvikelserapport. Fantastic Four Page 1

Karlstads Universitet, Datavetenskap 1

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

2. Redundans 3. Normalformer

Reducering till relationsscheman

Semantik och pragmatik

Grunderna i SQL del 1

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

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

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

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

Tentamen i Databasteknik

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

Databasutveckling Introduktion till SQL och TSQL

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen Lördag 8 juni kl

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13

Uppgift 1. (a) Ange tre orsaker hur felaktigheter i en databas kan uppsta. Till varje av dem, ange en lamplig metod som anvands som atgard mot dessa.

Föreläsning 2: Översikt över ett databassystem

Karlstads Universitet, Datavetenskap 1

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Transkript:

Analytisk relationsdatabasdesign Att förbättra kvaliteten i databaser Presenter s Name Organization name www.horton.com Domän-regler och främmande nyckel regler via DDL Datatyp! Datatyp! Maxvärde! Maxvärde! Min-värde! Min-värde! Tabellerna ovan, inklusive datatyper och främmande nycklar (och andra regler) kan definieras via SQL DDL SQL har en DDL-del (lite mer okänd än DML-delen) DDL Data Definition Language, DML Data Manipulation Language Via DDL definierar vi tabeller, regler etc. Via DML kan vi sen ställa frågor mot de tabeller vi skapat 1

DDL Datatyp! Datatyp! FÖRETAG Företagsnamn: String 1..1 Antal_anställda: Int 1..1 FÖRETAG Företagsnamn Antal_anställda Min-värde! Min-värde! CREATE TABLE FÖRETAG (Företagsnamn Varchar(25) NOT NULL, Antal_anställda Integer NOT NULL, Primary key (Företagsnamn)) DDL Främmande nyckel-regler ANSTÄLLD FÖRETAG Anstnr Mitt_företag Företagsnamn Antal_anställda 11111 22222 33333 Maria Paul Petia SKRUV AB SKRUV AB 2 1 CREATE TABLE ANSTÄLLD (Anstnr String NOT NULL, String NOT NULL, Mitt_företag Varchar(25) NOT NULL, Primary key(anstnr), Foreign key(mitt_företag) REFERENCES FÖRETAG(Företagsnamn) ON DELETE restrict ON UPDATE cascade) 2

DDL Främmande nyckel-regler ANSTÄLLD FÖRETAG Anstnr Mitt_företag Företagsnamn Antal_anställda 11111 Maria 2 22222 33333 Paul Petia SKRUV AB SKRUV AB 1 CREATE TABLE ANSTÄLLD (Anstnr String NOT NULL, String NOT NULL, Mitt_företag Varchar(25) NOT NULL, Primary key(anstnr), Foreign key(mitt_företag) REFERENCES FÖRETAG(Företagsnamn) ON DELETE cascade ON UPDATE cascade) ANSTÄLLD Anstnr 11111 22222 Maria Paul Mitt_företag FÖRETAG Företagsnamn Antal_anställda 2 DDL Främmande nyckel-regler ANSTÄLLD FÖRETAG Anstnr Mitt_företag Företagsnamn Antal_anställda 11111 Maria 2 22222 33333 Paul Petia SKRUV AB SKRUV AB 1 CREATE TABLE ANSTÄLLD (Anstnr String NOT NULL, String NOT NULL, Mitt_företag Varchar(25) NOT NULL, Primary key(anstnr), Foreign key(mitt_företag) REFERENCES FÖRETAG(Företagsnamn) ON DELETE cascade ON UPDATE cascade) ANSTÄLLD Anstnr 11111 22222 33333 Maria Paul Petia Mitt_företag BULTIA AB BULTIA AB SKRUV AB FÖRETAG Företagsnamn BULTIA AB SKRUV AB Antal_anställda 2 1 3

Analytisk relationsdatabasdesign Att förbättra kvaliteten i databaser Presenter s Name Organization name www.horton.com Vad är ett bra relationsdatabasschema? PERSON&BIL Regnr Märke PERSON BIL ÄGANDE Regnr Märke Bil Ägare Den första lösningen är enkel. Men den andra lösningen är mer informativ den grupperar ihop saker som hänger samman och ger på det sättet mer struktur. Sådant som är beroende av varann hålls ihop. Detta kan erhållas genom konceptuell modellering och/eller och analytisk databasdesign (syntaktisk databasdesign påverkar just detta i mindre hög grad) 4

Redundans och uppdateringsanomalier PERSON&BIL 5566 Regnr ABC123 DEF456 GHI789 ABC123 ABC123 XXX999 Stina Märke Volvo Saab Skoda Volvo Volvo Skoda Redundans. Samma faktum upprepas flera gånger I tabellen. Uppdateringsanomalier. När man skall uppdatera en uppgift måste man ändra på flera ställen. Tidskrävande och riskfyllt. Normalformer Normalformsanalys. Genom att studera de funktionella beroendena I en tabell kan man bestämma dess normalform. Om en tabell har en låg normalform kan den ge upphov till problem. Man kan då transformera tabellen så den får en högre normalform. 5

Funktionella beroenden Ett värde på är associerat till högst ett värde på 7788 5566 Greta Olle Stina Funktionella beroenden Gäller det att Regnr? Det skulle betyda att givet ett värde på Regnr så finns högst ett värde på : ABC123 DEF456 GHI789 Olle Men det är tänkbart att en bil ägs av flera personer och då gäller inte det funktionella beroendet: ABC123 DEF456 GHI789 Olle 6

Funktionella beroenden syntax Här skriver man den eller de kolumner som bestämmer andra kolumner Kolumner Kolumner Här skriver man de kolumner som är beroende av kolumnerna till vänster Pil Här skriver man en pil som skiljer kolumnerna från varandra Funktionella beroenden semantik Antag att man har ett funktionellt beroende Det betyder att unikt bestämmer, det vill säga att om två tupler i en tabell har samma värde på så skall de ha samma värde på. Mer precist kan man skriva upp det så här. För varje par av tupler, s och t, i en tabell skall följande gälla: S[] = t[] s[] = t[] Med andra ord: om en s-tuppel (s-rad) och en t-tuppel (t-rad) har samma värde i kolumnen så ska de även ha samma värde i kolumnen! 7

Funktionella beroenden exempel PERSON&BIL Regnr Köpdatum ABC123 060101 DEF456 051231 GHI789 040601 ABC123 050601 ABC123 060601 5566 Stina XXX999 060701 Gäller? Ja Funktionella beroenden exempel PERSON&BIL Regnr Köpdatum ABC123 060101 DEF456 051231 GHI789 040601 ABC123 050601 ABC123 060601 5566 Stina XXX999 060701 Gäller Regnr? Nej 8

Funktionella beroenden övning PERSON&BIL Regnr Köpdatum ABC123 060101 DEF456 051231 GHI789 040601 ABC123 050601 ABC123 060601 5566 Stina XXX999 060701 Gäller Köpdatum? Nej Armstrongs axiom Låt A, B, C, X och D utgöra mängder av attribut (kolumner) (ibland med bara ett element) i en relation R Reflexiva lagen: Om B är en delmängd av A så gäller A B Transitiva lagen: Om A B och B C så gäller A C Additiva lagen: Om A B och A C så gäller A BC Dekomponeringslagen: Om A BC så (A B OCH A C) Augmentativa lagen: Om A B så gäller XA XB 9

Funktionella beroenden inom en klass Det finns ingen bra notation för att visa funktionella beroenden INOM en klass - alltså funktionella beroenden mellan attribut! PERSON : String 1..1 Vikt: Integer 1..1 Adressort: String 1..1 Postnr: Integer 1..1 1..1 ägs_av HUND 0..* : String 1..1 Vikt: Integer 1..1 Favoritmat: String 1..1 Första normalform En tabell är i första normalform om samtliga kolumner i tabellen har atomära domäner. 2233 Inte 1NF Efternamn Persson Nyfjord Förnamn Per, Bo, Ulf Olle Eriksson, Stina 1NF Som vi tidigare definierat domäner och relationsscheman är faktiskt alla tabeller i första normalform 2233 Efternamn Persson Persson Persson Nyfjord Eriksson Eriksson Förnamn Per Bo Ulf Olle Stina 10

Partiellt funktionellt beroende A B kallas ett partiellt funktionellt beroende om det finns ett C som är en äkta delmängd av A och C B. Man säger då att B är partiellt beroende av A. 5566 Regnr ABC123 DEF456 GHI789 CBA321 FED654 IHF987 Stina Märke Volvo Saab Skoda Fiat Skoda Fiat är partiellt beroende av (, Regnr) Märke är partiellt beroende av (, Regnr) B är fullt funktionellt beroende av A om B är funktionellt beroende av A och inte partiellt beroende av A., Regnr, Regnr Märke Regnr Märke Andra normalform En tabell är i andra normalform om varje kolumn som inte ingår i primärnyckeln är fullt funktionellt beroende av primärnyckeln Varje kolumn skall vara beroende av hela nyckeln, inte bara av en del av nyckeln. 5566 Regnr ABC123 DEF456 GHI789 CBA321 FED654 IHF987 Stina Märke Volvo Saab Skoda Fiat Skoda Fiat Denna tabell är inte i andra normalform eftersom inte är fullt funktionellt beroende av primärnyckeln, Regnr, Regnr Märke Regnr Märke 11

Andra normalform - exempel PERSON 2233 Ulf Bo Per Erik Nils Postnr Ort Lund Är denna tabell i andra normalform?, Postnr, Ort Postnr, Ort Postnr Ort Nej, eftersom Postnr och Ort inte är fullt funktionellt beroende av primärnyckeln. Normalisering till andra normalform PERSON Postnr Ort Ulf Bo Per 2233 Lund Erik Nils Postnr, Ort PERSON POST Postnr Ort Ulf Bo 2233 Lund Per 2233 Erik Nils Om det finns ett partiellt funktionellt beroende så bryt ut kolumnerna i detta till en egen tabell. Hurdå? Jo, de kolumner som är beroende av bara en del av nyckeln bryts ut till en egen tabell. Tillsammans med den del av nyckeln som de var beroende av. Vid normaliseringen bildas en främmande nyckel mellan tabellerna: PERSON.() utgör främmande nyckel mot POST.() 12

Andra normalform - övning PRODUKT Produkt Färg Penna Blå Pris 3 Produkt, Färg Pris Produkt Pris Penna Röd 3 Skruv Grön Skruv Vit Skruv Svart Vas Vit PRODUKT Produkt Färg Penna Blå Penna Röd Skruv Grön Skruv Vit Skruv Svart Vas Vit 5 5 5 9 PRIS Produkt Penna Skruv Vas Pris 3 5 9 Normalisera denna tabell till andra normalform! Vid normaliseringen bildas en främmande nyckel mellan tabellerna: PRODUKT.(Produkt) utgör främmande nyckel mot PRIS.(Produkt) Utrymme vs Tid vs Konsistens Titel Författare Librettot Vikt Antal Sidor Förlag Hamlet Shakespeare Once upon.the End. 35 1000 Bonniers Hamlet Shakespeare Once upon.the End. 46 1500 Pierson Hamlet Shakespeare Once upon.the End. 60 2000 Nordstedts etc. Hamlet Shakespeare Once upon.the End. 79 2500 Prentice-Hall 1984 Orwell 20 100 Bonniers etc. Titel, Förlag Författare, Librettot, Vikt, AntalSidor Titel Författare, Librettot Titel Författare Librettot Hamlet Shakespeare Once upon The End. 1984 Orwell Titel Vikt Ant.sid. Förlag Hamlet 35 1000 Bonniers Hamlet 46 1500 Pierson Hamlet 60 2000 Nordstedts etc. 1984 20 100 Bonniers etc. 13

Transitivt beroende C är transitivt beroende av A via B om det finns funktionella beroenden A B och B C, och där det gäller att A inte är funktionellt beroende av B eller C 2233 4455 5566 6677 Postnr 16739 Ort Lund Bromma Lund Postnr, Ort Postnr Ort Ort är transitivt beroende av via Postnr Tredje normalform En tabell är i tredje normalform om och endast om den är i andra normalform, och varje kolumn som inte ingår i primärnyckeln är funktionellt men ej transitivt beroende av primärnyckeln Varje kolumn skall vara beroende av nyckeln, och ingenting annat än nyckeln. 2233 4455 5566 6677 Postnr 16739 Ort Lund Bromma Lund Postnr, Ort Postnr Ort Denna tabell är inte i tredje normalform eftersom Ort är transitivt beroende av 14

Normalisering till tredje normalform POST 2233 4455 5566 Postnr 16739 Ort Lund Bromma Om en kolumn är transitivt beroende av primärnyckeln via en annan kolumn så bryt ut dessa till en egen tabell (kan också vara grupper av kolumner) 6677 POST 2233 4455 5566 6677 Postnr 16739 Lund POSTNR Postnr Ort Lund 16739 Bromma Postnr, Ort Postnr Ort Vid normaliseringen bildas en främmande nyckel mellan tabellerna: POST.(Postnr) utgör främmande nyckel mot POSTNR.(Postnr) Tredje normalform - övning Kurs AA1 BB2 Lärare Sal B A AntalPlatser 100 50 Kurs Lärare, Sal, AntalPlatser Sal AntalPlatser CC3 B 100 DD4 EE5 FF6 Kurs AA1 BB2 CC3 DD4 EE5 FF6 Nils Lärare Nils A C A 50 200 50 Sal B A B A C A Sal A B C Normalisera denna tabell till tredje normalform! AntalPlatser 50 100 200 15

Problem vid ofullständig normalisering Ofullständig normalisering leder till så kallade uppdateringsanomalier: INSÄTTNING: Man kan inte lägga in uppgifter om en sals antal sittplatser om salen ifråga inte används av en kurs BORTTAG: När den enda kursen som en sal används i tas bort så försvinner även alla uppgifter om salen UPPDATERING: Om man bygger om en sal och följdaktligen kanske vill ändra angivelsen av antal platser (om nu salen blivit mindre/större) så måste man ändra på ALLA rader där just denna sal förekommer - risk för inkonsistens! Armstrongs axiom Låt A, B, C, X och D utgöra mängder av attribut (kolumner) (ibland med bara ett element) i en relation R Reflexiva lagen: Om B är en delmängd av A så gäller A B Transitiva lagen: Om A B och B C så gäller A C Additiva lagen: Om A B och A C så gäller A BC Dekomponeringslagen: Om A BC så (A B OCH A C) Augmentativa lagen: Om A B så gäller XA XB 16

Armstrongs axiom en svårare övning Om vi vet att (a) X--> Y (b) Z --> WY (c) YW --> ZX gäller Gäller det då även att (d) Z --> X? SANT. Bevis: Vi använder först dekomponeringslagen på (b): (e) Z --> W OCH (f) Z --> Y Sen använder vi (f) och (e) och additiva lagen och får: (g) Z --> YW Sen tar vi transitiva lagen på (g) och (c) och får: (h) Z --> ZX Slutligen används dekomponeringslagen en gång till på (h) och vi får Z --> X, vilket skulle bevisas. En svårare övning forts. OM vi vet att följande gäller: (a): XY Z (b): ZY W Gäller då följande: (c) XW Z? FALSKT. Visas med ett motbevis: X Y Z W a b c b a m q b Både (a) och ( b) är uppfyllda men INTE (c) 17