Title: DAV B04 - Databasteknik
1DAV B04 - Databasteknik
2DAV B04 - Databasteknik
3Databaser och databashanteringssystem
- En databas (DB) är en samling av relaterad data
- representerar någon aspekt av verkligheten
minivärlden eller University of Discourse (UoD) - Databashanteringssystem (DBHS)
- programvarusystem som används för att skapa och
underhålla databaser - Ett filhanteringssystem som kan hantera komplexa
relationer mellan data och hämta och uppdatera
data enkelt och effektivt
4Databas-system
- Ett databas-system (DBS) består av DBHS-mjukvaran
tillsammans med själva databasen (applikationer,
användare)
5Egenskaper hos databas-system
- Data är integrerad och delad
- I DBHS lagras en beskrivning av databasen
- struktur, integritetsregler mm
- Visst mått av dataoberoende
6Datamodell
- Används för att
- gömma implementationsdetaljer
- ge användarna en konceptuell vy av databasen
- Stödjer många olika vyer av databasen
7(Andra) fördelar med databas-system
- Redundansen kan minskas
- Säkerheten kan förbättras
- Flera olika användargränssnitt
- Integriteten kan upprätthållas
- Stöd för återhämtning av data
- Tiden för applikationsutveckling kan minskas
8Nackdelar med databas-system
- Ofta höga kostnader för hårdvara, mjukvara och
utbildning - Komplexiteten hos ett DBHS kan ibland vara onödig
eller ge för låg prestanda
9Användare av databas-system
- Databasadministratörer (DBA)
- Applikationsprogrammerare
- Slutanvändare
10Olika typer av databas-system
- 1965-1980
- främst hierarkiska databaser och
nätverksdatabaser - Från ca 1980
- de flesta nya databas-system varit
relationsdatabaser - Från ca 1990
- objektorienterade och objektrelationella databaser
11Datamodeller
- En samling koncept för att beskriva databasens
struktur - De integritetsregler den måste följa
- Oftast också de operationer som går att göra på
databasen
12Högnivå-modeller
- Använder koncept som ligger nära hur användare
förstår data. - Används ofta vid databasdesign.
- Exempel E/R-modellen
13Logiska modeller
- Använder koncept som kan förstås av användare
- Ligger inte alltför långt ifrån hur data
organiseras i databasen
14Lågnivå-modeller
- Använder koncept som beskriver i detalj hur data
är lagrad rent fysiskt
15Databasens schema
- Beskrivningen av databasen
- Kan visas i ett schemadiagram
16Exempel på schemadiagram
17Databasens gränssnitt
- Varje användare kommunicerar med databasen m h a
ett språk - Programmerare konventionellt programspråk (C
eller Pascal) - Slutanvändare något frågespråk (SQL), eller
kommunicerar med databasen genom något
specialdesignat menysystem
18Språk
- Varje språk inkluderar
- ett underspråk (data sublanguage eller DSL)
- som sägs vara inbäddat i värdspråket (host
language)
19Dataoberoende
- Logiskt dataoberoende
- Det går att göra ändringar i det konceptuella
schemat utan att det påverkar de externa schemana
eller applikationsprogrammen - Fysiskt dataoberoende
- Det går att göra ändringar i det interna schemat
utan att det påverkar det konceptuella schemat
20Beståndsdelar DSL
- Data Definition Language (DDL)
- den del av språket som används för att definiera
de olika objekten som databasen består av - Data Manipulation Language (DML)
- den del av språket som används för att manipulera
eller utföra operationer på sådana objekt
21Applikationer skrivna av användaren
- Skrivna i något programspråk (t ex C) med
inbäddad SQL eller applikationer skrivna i SQL
22Applikationer skrivna av någon leverantör (tools)
- Kompilatorer för något frågespråk,
rapportgeneratorer, grafiska användargränssnitt,
kalkylprogram, statistikprogram,
4GL-kompilatorer, CASE-verktyg
23Program som används för att administrera databasen
- Laddningsprogram, backup-program,
reorganisationsprogram, statistik- och
analysprogram
24Katalogen (Data Dictionary)
- Ett DBHS måste innehålla en katalog eller ett
data dictionary, där detaljerad information om
systemets olika delar lagras - information om tabeller, index, användare,
integritets- och säkerhetsregler - lagras också som tabeller, så att det går att
ställa frågor till katalogen på samma sätt som
till databasen
25Översikt av kursen
- Genomgång av relationsmodellen
- Genomgång av SQL praktiska övningar
- Konceptuell databasdesign
- Fysisk databasdesign
- Transaktionshantering
- Databassäkerhet
- Web-databaser och distribuerade databaser
- Laborationer teori, design, implementation och
användargränssnitt
26DAV B04 - Databasteknik
- Relationsmodellen
- (kap 7)
27Relationsmodellen
- En formell teori som baserar sig på (främst)
- mängdlära
- predikatlogik
- Föreslogs av E.F Codd 1970 i artikeln A
relational model for large shared data banks i
Communications of the ACM, juni 1970
28Relationsmodellen
- Relation är den matematiska termen för tabell
- En databas ses som en mängd relationer
- DB R1, R2,Rn
29Relationsmodellen
- Beskriver ett sätt att se på data från en logisk
synvinkel - Tre aspekter av data
- datastrukturer (eller objekt)
- huvudsakligen tabeller
- datamanipulation (eller operationer)
- operationer är bl. a SELECT, PROJECT och JOIN
- dataintegritet
- de viktigaste reglerna är de om
entitetsintegritet och referensintegritet
30Domäner
- En domän är en namngiven mängd av skalära värden,
alla av samma typ - Varje attributs värden måste tas från exakt en
underliggande domän - En domän är vad man i moderna programspråk kallar
en datatyp - De flesta av dagens relationsdatabaser stödjer
dock bara primitiva datatyper som CHARACTER,
INTEGER och FLOAT
31Exempel på domäner
- typedef enumLondon, Paris, Athens, New York,
Stockholm, Rome City - Detta skapar en datatyp City i ett C-program.
Alla variabler av typen City måste ha som värde
en av de uppräknade städerna
32Exempel på domäner
- CREATE DOMAIN City Char(9) DEFAULT ???
- CHECK (VALUE IN (London, Paris, Athens,
New York, Stockholm, Rome, ??? ) )
33Relationer
- En relations schema består av en mängd attribut
- R A1, A2, An
- Varje attribut är definierat på exakt en
underliggande domän - Attributnamnen i en relation måste vara unika
- Flera attribut kan dock vara definierade på samma
domän
34Relationer
- En relations tillstånd eller värde vid en viss
tidpunkt benämns r och består av en mängd tupler
t (0 eller flera) - r t1,t2,tn
- Varje tuple t består av en mängd värden v där
varje värde är hämtat från motsvarande domän - t v1,v2,vn
35Relationer
- Antalet tupler i en relation kallas relationens
kardinalitet - Antalet attribut i en relation kallas relationens
grad - En eller flera attribut som unikt identifierar en
tuple kallas för relationens primärnyckel
36Egenskaper hos en relation
- Det finns inga duplicerade tupler
- Tuplerna är oordnade
- det finns ingen första eller sista tuple
- Attributen är oordnaded
- det finns inget första eller sista attribut
- Alla värden är atomära (skalära)
- (detta betyder att en relation alltid är i första
normalformen)
37Olika sorters relationer
- En namngiven relation är en relation som har
definierats i databasen - En basrelation är en relation som inte är en
härledd relation, utan existerar på riktigt - En härledd relation är en relation som är
definierad i termer av andra relationer
38Olika sorters relationer
- En vy är en namngiven härledd relation som är
virtuell den existerar bara som ett uttryck - Ett frågeresultat är en icke namngiven härledd
relation som är resultatet av att en specifik
fråga exekveras
39Vyer (virtuella relationer)
- En vy är en härledd relation som är namngiven
- relationen finns bara som ett uttryck och brukar
därför kallas en virtuell relation - Vyer har flera användningsområden, men det
viktigaste är att de kan användas för att skapa
logiskt dataoberoende
40Logiskt dataoberoende
- Ett system har logiskt dataoberoende om användare
och applikationer inte påverkas av ändringar i
databasens logiska struktur - Logiskt dataoberoende kan bara uppnås om systemet
stödjer operationer på vyer på ett korrekt sätt!
41Logiskt dataoberoende
- Två aspekter
- Om databasen växer, d v s om t ex ett attribut
läggs till en relation eller en relation läggs
till databasen, kan dessa ändringar gömmas med
hjälp av vyer - Om databasen omstruktureras, t ex om en relation
bryts ner i två stycken, kan vyer användas för
skapa illusionen om att det fortfarande är en
enda relation
42Andra fördelar med vyer
- Vyer tillåter att samma data kan ses av olika
användare på olika sätt samtidigt - Vyer kan användas som "macron
- Vyer kan användas för att gömma data (av
säkerhetsskäl)
43Integritet
- Integritet handlar om att se till att data i
databasen är korrekt - Vid varje tillfälle innehåller en databas en
mängd datavärden som skall representera en viss
del av "verkligheten - Vissa värden kan inte tillåtas eftersom de inte
representerar något som finns i verkligheten (t
ex negativa löner) - När databasen definieras måste därför också vissa
integritetsregler läggas till. Dessa gör det
möjligt för DBHS att hindra att inkorrekta värden
läggs in i databasen
44Exempel på integritetsregler
- Integritetsregler i COMPANY-databasen
- SALARY i relationen EMPLOYEE måste vara större än
noll - SEX i relationen EMPLOYEE måste ha värdet M eller
F - SSN i relationen EMPLOYEE måste bestå av nio
siffror
45Integritetsregler
- Reglerna i exemplet är databas-specifika (eller
semantiska), dvs. de gäller bara för en specifik
databas - Relationsmodellen innehåller också två generella
integritetsregler, dvs. regler som gäller för
alla databaser - kandidatnycklar (och primärnycklar)
- främmandenycklar
46Definition av en kandidatnyckel
- Låt R vara en relation. Då är en kandidatnyckel
för R en delmängd av Rs mängd av attribut, säg K,
så att - vid varje givet tillfälle, så har två olika
tupler i R inte samma värde på K (K är unik) - om K är sammansatt, så kan ingen del av K tas
bort och K fortfarande vara unik (K är ej
reducerbar)
47Enkla och sammansatta kandidatnycklar
- En kandidatnyckel som består av mer en ett
attribut sägs vara sammansatt - En kandidatnyckel som består av exakt ett
attribut sägs vara enkel
48Kandidatnycklar
- Kandidatnycklar definieras som mängder av
attribut - Skälet till att kandidatnycklar är så viktiga är
att det enda sättet att adressera en speciell
tuple är genom att använda ett värde på en
kandidatnyckel
49Exempel kandidatnycklar
Employee K SSN Project K
PNUMBER Works_on K ESSN,PNO
50Primärnycklar och alternativa nycklar
- Primärnyckel
- en nyckel som väljs från mängden kandidatnycklar
- Alternativ nyckel
- den återstående mängden kandidatnycklar när
primärnyckeln har tagits bort
51Sekundärnyckel
- En sekundärnyckel är en nyckel som när den
används för sökning kan returnera en relation med
fler än en tuple - Ex.
- SELECT SSN from EMPLOYEE
- WHERE DNO 5
- DNO är här en sekundärnyckel
52Nycklar och saknad information (nulls)
- Nulls är något som används i databaser för att
handskas med saknad information - För varje attribut i en relation kan man
specificera NULLS ALLOWED eller NULLS NOT ALLOWED
53Tolkningar av NULL
- Vissa logiska svårigheter
- värde okänt
- egenskapen ej relevant
- värde finns inte
- värde odefinierat
54Regeln om entitetsintegritet
- Ingen del av primärnyckeln i en basrelation får
vara null
I en relationsdatabas lagrar vi inte information
om någonting vi inte kan identifiera!
55Definition av främmandenyckel (FK)
- Låt R2 vara en basrelation. Då är en
främmandenyckel i R2 en delmängd av mängden
attribut i R2, säg FK, så att - det finns en basrelation R1 (R1 och R2 behöver ej
vara olika) med en kandidatnyckel CK, och - för varje tillfälle, så är varje värde på FK i
relationen R2 antingen helt och hållet null eller
identiskt med värdet på CK i någon tuple i R1
56Främmandenycklar
- Varje attribut i en främmandenyckel måste
definieras på samma domän som det motsvarande
attributet i den matchande kandidatnyckeln
57Främmandenycklar
- Främmande-till-kandidatnyckel referenser sägs
ibland vara det "lim" som håller ihop databasen.
Dessa sägs representera relationer mellan olika
tupler
58Regeln om referensintegritet
- Databasen får inte innehålla några icke matchande
värden på främmandenycklar - dvs. om B refererar till A, så måste A existera
59Regler för främmandenycklar
- Vad ska då systemet göra om en operation försöker
utföras som skulle bryta mot regeln om
referensintegritet ? - För varje främmandenyckel i databasen skall
databasdesignern specificera vad som skall hända
vid delete eller update av den matchande
kandidatnyckeln
60Exempel på regler för främmandenycklar
- Vad skall t ex hända om någon försöker ta bort
eller uppdatera 123456789 i relationen
EMPLOYEE? - Två möjligheter (åtminstone) finns för båda
operationerna - RESTRICTED - operationerna är förbjudna om
123456789 också finns i WORKS_ON - CASCADES - operationerna utförs också på de
tupler som innehåller 123456789 i SHIPMENT
61Semantiska integritetsregler
- Även kallade business rules
- Gäller för en specifik databas
62Exempel på semantiska integritetsregler
- Regler av typen Ingen kan ha en lön som är
mindre än 10000 kan specificeras med domänregler - Regler av typen Varje anställd måste tillhöra en
avdelning specificeras genom att ange NOT NULL
för attributet DNO i EMPLOYEE - Regler av typen Ingen anställd får ha högre lön
än sin chef kan specificeras genom triggers
eller assertions
63DAV B04 - Databasteknik
64Relationsalgebra
- Operationer som görs på relationer för att hämta
data från en databas - Utdata från alla operationer är en ny relation
(algebran är sluten). Detta gör det möjligt att
skriva nästlade operationer
65Operationer
- De speciella relationsoperationerna
- select, project, join och division
- De traditionella mängdoperationerna
- union, intersection, difference och cartesian
product
66SELECT ?
- SELECT returnerar en relation som består av alla
tupler från en relation som uppfyller ett visst
villkor - SELECT-operationen benämns
- ?ltselection conditiongt (R)
67?ltselection conditiongt (R)
- Den resulterande relationen har samma attribut
som R - Villkoret är av formen X ltjämförelseoperatorgt Y,
där X är ett attributnamn och Y är ett
attributnamn eller en konstant. Flera villkor kan
sättas samman med hjälp av AND, OR och NOT - SELECT är unär, dvs indata är en relation
68PROJECT ?
- PROJECT returnerar en relation som består av alla
tupler i en relation sedan vissa attribut har
utelämnats - PROJECT-operationen benämns
- ?ltattribute listgt (R)
69?ltattribute listgt (R)
- Den resulterande relationen har bara de attribut
som specificeras i attributlistan - Duplicerade tupler tas bort av PROJECT
- PROJECT är unär, dvs. indata är en relation
70Sekvenser av operationer
- Flera operationer kan kombineras för att bilda
ett algebraiskt uttryck (en fråga) - Exempel Hämta namn och löner för anställda som
arbetar på avdelning 4 - P FNAME,LNAME,SALARY (s DNO4(EMPLOYEE) )
71RENAME
- Alternativt så kan man specificera temporära
relationer för varje steg - DEPT4_EMPS ?s DNO4(EMPLOYEE)
- R ? P FNAME,LNAME,SALARY(DEPT4_EMPS)
72RENAME
- Attribut i den resulterande relationen kan ges
andra namn om man så vill - DEPT4_EMPS ? s DNO4(EMPLOYEE)
- R(FIRSTNAME,LASTNAME,SALARY) ?
- P FNAME,LNAME,SALARY(DEPT4_EMPS)
73Traditionella mängdoperationer
- Dessa binära operationer fungerar som motsvarande
operationer i matematiken - En viktig skillnad
- operanderna måste vara typkompatibla, dvs. bestå
av samma slags tupler (gäller ej produkt)
74UNION R1 ? R2
- Unionen av två typkompatibla relationer R1 och R2
är - en relation med samma huvud som både R1 och R2
- med en kropp som består av mängden av alla tupler
t som finns i R1 eller i R2 eller i båda
75INTERSECTION R1 ? R2
- Snittet av två typkompatibla relationer R1 och R2
är - en relation med samma huvud som både R1 och R2
- med en kropp som består av mängden av alla tupler
t som finns i både R1 och R2
76DIFFERENCE R1 R2
- Differensen mellan två typkompatibla relationer
R1 och R2, i den ordningen, är - en relation med samma huvud som både R1 och R2
- och med en kropp som består av mängden av alla
tupler t som finns i R1 men inte i R2
77CARTESIAN PRODUCT R1 X R2
- Den kartesiska produkten av två relationer R1 och
R2 ger en relation med alla möjliga kombinationer
av tupler från R1 och R2 - är meningslös i sig själv
78THETA JOIN
- Är det samma som en kartesisk produkt följt av en
SELECT-operation - THETA JOIN benämns
- R1ltjoin conditiongtR2
- Oftast jämförs ett attribut i R1 med ett i R2 i
villkoret
79EQUIJOIN
- Kallas operationen om villkoret är
80NATURAL JOIN
- är det samma som EQUIJOIN, men där
join-attributet i R2 är borttaget i
resultatrelationen - NATURAL JOIN benämns
- R1 R2
- R1 ltjoin attribute1gt, ltjoin attribute2gt R2
81DIVISION
- tar två relationer, en binär och en unär, och
returnerar en relation som består av alla värden
som ett av den binära relationens attribut har
och där det andra attributet matchar alla värden
i den unära relationen - DIVISION benämns
- R1 ? R2
82DAV B04 - Databasteknik
83SQL - frågespråk för relationsdatabaser
- 4GL, mycket kraftfullt jämfört med t ex C/C och
FORTRAN - SEQUEL
- SQL (Structured Query Language)
- SQL-86 SQL1 (ANSI-standard)
- SQL-92 SQL2
- SQL3
- kommer bl.a. att vara objektorienterat
84SQL i kursen
- Olika dialekter, vi använder
- Microsoft Jet SQL (separat kompendium)
- MySQL
85Beståndsdelar SQL
- Data Definition Language (DDL)
- med hjälp av kommandon i DDL skapar man och kan
modifiera scheman, tabeller, villkor och vyer - Manipulation Language (DML)
- kommandona i DML möjliggör läsning, skrivning,
insättning, radering och förändring av
tabellinnehåll
86SQL uttryck
- Tabell relation
- Rad tuple
- Kolumn attribut
87DDL-operationer
- CREATE
- Skapa tabell, schema, vy, domän
- DROP
- Radera tabell eller
- ALTER
- Lägg till eller ta bort i tabell
88DML-operationer
- SELECT
- Välj ut data ur tabell(er)
- INSERT
- Skriv in rad(er)
- DELETE
- Radera rad(er)
- UPDATE
- Modifiera kolumner i rad(er)
89DAV B04 - Databasteknik
90Datamodellering
91ER (Entity Relationship) - diagram
- Konceptuell datamodellering
- ER modellen beskriver data utifrån
- entiteter
- attribut
- relationer
92Entiteter
- Sak i verkliga världen
- existerar fysiskt, ex bil, student
- existerar konceptuellt, ex univ.kurs, jobb
93Entiteter och attribut
- Varje entitet har attribut, dvs. egenskaper som
beskriver entiteten - Student namn, ålder, adress...
94Attributens värde
- En existerande entitet har värden på sina
attribut - student s1 Kalle, 47, Karlstad
- Denna typ av data utgör majoriteten av
information sparad i en databas!
95Sammansatta attribut
- Kan delas ned i mindre delar som har oberoende
betydelse
96Mångvärdes attribut
- Vanligtvis har ett attribut bara ett värde,
men... - Vad händer om ex. en bil har tre olika färger?
97Härledda attribut
- Exempelvis kan man härleda en persons ålder från
personnummer och nuvarande år
98Entitetstyper
- Definierar en mängd av entiteter som har samma
attribut (varje entitet i mängden har dock egna
värden på attributen) - En entitetstyp beskrivs därmed med hjälp av
entitetens namn och dess attribut - STUDENT Namn, ålder, adress
99Entitetsmängder
- Samlingen/mängden av alla entiteter av en viss
entitetstyp i databasen vid någon given tid
100Nyckelattribut
- Varje entitetstyp skall ha ett attribut vars
värde skall vara unikt för varje enskild entitet
i entitetsmängden - Student Personnummer, namn, ålder
101Relationer mellan entiteter
- Som i samband mellan entiteter
102Relationer och attribut
- En relation kan också ha attribut
- Exempelvis en student på en kurs har ett betyg...
103Kardinalitet på relationer11 förhållande
104Kardinalitet på relationer1N förhållande
105Kardinalitet på relationerNM förhållande
106DAV B04 - Databasteknik
- Mappning mellan ER-diagram och relationsmodellen
- (kap 9)
107Mappning ER-diagram / relationsmodellen
- Används för att skapa den logiska databasdesignen
som baseras på den konceptuella designen
108Algoritm
- Finns en algoritm för att stegvis utföra
mappningen - denna finns mer detaljerat beskriven i kapitel 9.1
109Starka entiteter
- Steg 1
- varje stark entitetet blir en basrelation där
primärnyckeln i relationen motsvarar
nyckelattributet(en) i entiteten
110Svaga entiteter
- Steg 2
- bildar sin primärnyckel genom att ta
- primärnyckeln från ägande relationen (som
främmandenyckel) och egen partiell nyckel
tillsammans - Reglerna för främmandenycklar i en relation
mellan en svag och en stark entitet måste vara - DELETE CASCADES
- UPDATE CASCADES
- Visar på beroendeförhållandet mellan entiteterna
11111 förhållanden
- Steg 3
- välj en av entiterna och lägg in primärnyckeln i
den ena som främmandenyckel i den andra - eventuella attribut till relationen mellan dessa
bör hamna på samma sida
1121N förhållanden
- Steg 4
- introducera primärnyckeln från en relationen
som främmandenyckel i relationen på många sidan - eventuella attribut till relationen (sambandet)
mellan dessa två entiteter migreras till många
sidan
113NM förhållanden
- Steg 5
- varje många-till-många relation (samband) blir en
basrelation - varje sådan basrelation måste innehålla minst en
främmandenyckel från varje deltagare i relationen - primärnyckeln kan skapas genom kombinationen av
främmandenycklarna eller genom att introducera
ett nytt attribut
114Attribut
- Steg 6
- Varje egenskap i för en entitet blir ett attribut
i den relation den tillhör. - Undantaget är om attributet för entiteten är ett
mångvärdes attribut, i så fall skapas en ny
relation
115Värdedomäner
- Skapas för alla attributens värdemängder
116DAV B04 - Databasteknik
- Praktisk databasdesign
- (kap 16)
117Sammanhang
- Informationssystem (IS)
- Livscykel Makro
- Databassystem (DBS)
- Livscykel Mikro
118Informationssystems livscykel(Makro livscykel)
- Analys av möjliga krav (Feasibility analysis)
- Kravanalys och insamling av krav
- Design
- Implementation
- Testing/kontroll och acceptanstest
- Utplacering, drift och underhåll
119Databassystems livscykel(Mikro livscykel)
- Definition av systemet
- Databasdesign
- Databas implementation
- Inladdning av data eller konvertering
- Konvertering av applikationer
- Testing och kontroll
- Drift
- Övervakning och underhåll
120Steg 2 databasdesign
- Mål
- klara av användarnas och applikationernas krav på
informationsinnehåll - naturlig och lättförstådd struktur på
informationen - klara av ställda krav på prestanda, ex svarstid
- Består av sex olika faser...
121Faser i databasdesignen
122Faser i databasdesignen
- Insamling och analys av krav
- Konceptuell databasdesign
- Exempel ER-modellen
- Val av DBHS
- Mappning av datamodeller (logisk databasdesign)
- exempel, mappning från ER modellen till
relationsmodellen - Fysisk databasdesign
- lagringsstrukturer, index
- Implementering av databassystemet
- impl. av databas och applikationer, trimning
(tuning)
123Fas 1 Insamling och analys av krav
- Identifikation av applikationsområden och
användargrupper - Studier av existerande dokumentation
- Studier av nuvarande operativsystem och planerad
användning av informationen - Skriftliga svar på frågor från databasens
potentiella användare
124Fas 2 Konceptuell databasdesign
- 2 parallella aktiviteter
- datamodellering
- transaktionsdesign
- Datamodellering
- centraliserad vs. vy integration
- Transaktionsdesign
- Specar funktionella krav på applikationerna
- Hämtnings-/uppdaterings/blandade transaktioner
125Fas 3 Val av DBHS
- Exempel på faktorer som spelar in
- relationsdatabas, objektdatabas?
- utvecklingsverktyg?
- vad kostar det att
- införskaffa all mjukvara?
- underhålla mjukvaran?
- införskaffa eventuell ny hårdvara?
- skapa databasen alt. konvertera från gammal?
- skaffa eventuell ny personal?
- träna personalen så att de kan använda DBHS?
- ha databassystemet i drift?
126Fas 4 Mappning mellan datamodeller
- Kan ske i två steg
- system-o-beroende mappning
- ER-modell -gt relationsmodellen
- systemberoende mappning
- DBHS har olika kännetecken och restriktioner som
man behöver anpassa sig till - Resultatet blir DDL uttryck i det språk som
utvald DBHS hanterar
127Fas 5 Fysisk databasdesign
- Utifrån vad DBHS kan erbjuda väljs lämpliga
- lagringsstrukturer, åtkomstvägar, organisation av
filer, indexering - Kriterier som påverkar
- svarstid
- utrymme
- transaktionsgenomströmming (medelvärde
transaktioner/minut)
128Fas 6 implementation och trimning
- DDL och SDL uttrycken kompileras och används för
att skapa databasens scheman och (tomma)
databasfiler. Eventuellt sker laddning/konverterin
g av data - görs av DBA databasdesigner
- Transaktioner implementeras genom att utgå från
de konceptuella beskrivningarna av
transaktionerna - görs av applikationsprogrammerare
129Fysisk databasdesign i relationsdatabaser
- Brukar börja med att man tar fram de viktigaste
faktorerna och den information man har om dem och
analyserar dessa... - Frågor, transaktioner, applikationer
130Fysisk databasdesign i relationsdatabaser
- Analys av
- frågor och transaktioner
- frekvens på anrop av frågor och transaktioner
- tidskrav på frågor och transaktioner
- frekvens på uppdateringsoperationer
- indexering (accessvägar)
131Databastrimning i relationsdatabaser
- Görs för att applikationer ska köra snabbare, få
ned svarstider, förbättra genomströmning av
transaktioner - Fixas genom att trimma
- index
- databasdesignen
- frågor
132DAV B04 - Databasteknik
- Normalisering och funktionella beroenden
- (kap 14)
133Riktlinjer när man vill skapa en databas
- Designa så att det är lätt att förstå innebörden.
Kombinera inte attribut från olika entitetstyper
i samma tabell - Designa så att inte problem uppstår vid
insättning, borttagning eller modifiering - Undvik värden i basrelationer som ofta blir NULL.
Skapa istället en ny relation
134Normalisering
- Uppdelning i flera relationer
- Innebär att redundansen i databasen är minskad
(eliminerad?) - Ingen information försvinner vid normaliseringen
- Inga falska samband skapas om man gör NATURAL
JOIN på tabellerna
135Funktionellt beroende (FD)
- Functional Dependency
- Är en många-till-en relation från en mängd
attribut till en annan i en given relation
136Definition av FD
- Givet en relation R, så är attributet Y i R
funktionellt beroende av attributet X i R omm
varje X-värde i R är associerat med precis ett
Y-värde i R (vid varje tillfälle). Attributen X
och Y kan vara sammansatta - R.X ? R.Y
137Exempel på funktionellt beroende
- Relationen EMP_PROJ (i Fig. 14.3b, sida 470) har
följande FD
SSN ? ENAME PNUMBER ? PNAME, PLOCATION SSN,
PNUMBER ? HOURS
138Exempel på funktionellt beroende
- Andra raden skulle också kunna delas upp i
- Även den triviala relationen finns
PNUMBER ? PNAME PNUMBER ? PLOCATION
PNUMBER -gt PNUMBER osv.
139Determinant
- Vänstra sidan av FD
- Determinanten kan vara primärnyckel och därmed
också kandidatnyckel men måste inte vara det
(BCNF 3NF)
140Dependent
- Den högra sidan av ett FD
- Alla attribut i en relation är funktionellt
beroende av primärnyckeln
141Definition av fullständigt funktionellt beroende
- Attributet Y i relationen R är fullständigt
funktionellt beroende av attributet X i R om det
är funktionellt beroende av X och det inte finns
någon äkta delmängd Z av X sådan att Y är
funktionellt beroende av Z
142Exempel på fullständigt funktionellt beroende
- Relationen EMP_PROJ (i fig. 14.3b, sida 470)
- Här är SSN, PNUMBER primärnyckel (PK), vilket
gör att alla attribut kan bestämmas när man vet
PKs värde. Attributen ENAME, PNAME och PLOCATION
är alltså funktionellt beroende av PK men inte
fullständigt funktionellt beroende eftersom
följande gäller
SSN ? ENAME PNUMBER ? PNAME PNUMBER ? PLOCATION
1431a normalformen (1NF)
- En relation är i första normalformen (1NF) omm de
underliggande enkla domänerna innehåller endast
skalära värden - figur 14.8 och 14.9
1442a normalformen (2NF)
- En relation är i andra normalformen (2NF) omm
relationen är i 1NF och varje attribut som inte
ingår i primärnyckeln är fullständigt
funktionellt beroende av den - figur 14.10 (a)
1453e normalformen (3NF)
- En relation är i tredje normalformen (3NF) omm
relationen är i 2NF och varje attribut som inte
ingår i primärnyckeln är icke-transitivt beroende
av primärnyckeln - figur 14.10 (b)
146Boyce-Codd normalform (BCNF)
- En relation är i Boyce-Codd normalform (BCNF) omm
varje determinant är en kandidatnyckel (dvs.
skulle kunna vara primärnyckel) - figur 14.13
147Transitivt beroende
- I EMP_DEPT (i fig. 14.10b) är SSN primärnyckel
och det innebär att alla attribut inklusive DNAME
och DMGRSSN är funktionellt beroende (FD) av SSN - Det finns ytterligare beroenden i tabellen Om
man vet DNUMBER vet man också DNAME och DMGRSSN
148Transitivt beroende
- Vi har ett transitivt beroende från SSN via
DNUMBER till DNAME och DMGRSSN - Transitiva beroenden elimineras genom att
splittra tabellen (PROJECT). - fig. 14.10
SSN ? DNUMBER ? DNAME, DMGRSSN
149Vandra mellan normalformerna
- Allmänt gäller att varje steg till högre
normalform görs med PROJECT (splittring av
tabell) och tabellen kan återskapas via NATURAL
JOIN. Inga informationsförluster uppstår vid
dessa operationer - ex. finns i figur 14.2 och 14.4
150Varning!
- Vid olämplig design kan falska tupler uppstå vid
NATURAL JOIN - ex. figur 14.3, 14.5 och 14.6
151DAV B04 - Databasteknik
152Lagring av databaser på sekundärminne
- Att läsa/skriva på sekundärminne (hårddisk) är en
långsam process jämfört med operationer i
primärminnet - Antalet diskaccesser (I/O) bör därför minimeras
153Skrivning och läsning från sekundärminne
- Skrivning och läsning sker i form av sidor (
page/block) med standardstorlek, t ex 1024 bytes - Databasposterna är ofta mindre än sidorna, t ex
100 bytes, vilket gör att man läser/skriver flera
poster (i detta fall 10) på samma gång - Önskvärt är att relaterade poster lagras nära
varandra för att minska antalet accesser
154Hämta en post från databasen
- DBHS bestämmer vilken lagrad post som behöver
hämtas och ber filhanteraren att hämta posten - Filhanteraren bestämmer vilken sida (block) som
posten finns på och ber diskhanteraren att hämta
den sidan - Diskhanteraren bestämmer fysisk adress och ber om
data från denna adress - Data läses av diskhanteraren
- Den lagrade sidan returneras till filhanteraren
- Den lagrade posten returneras till DBHS
155Exempel på lagringsstrukturer
- Sekventiell lagring, osorterad/sorterad
- Indexering
- Hashing
- B-träd, B-träd
156Sekventiell lagring
- Osorterat
- plus insättning av nya poster enkelt, sist eller
första lediga - minus leta upp en post är besvärligt,
sekventiell sökning - Sorterat
- plus binärsökning ger mycket snabbare access
- minus insättning av nya poster medför att poster
måste flyttas
157Hashing
- Hashing innebär att adressen till en post
bestämmes med hjälp av en hash-funktion vars
indata är något av fälten i posten - plus direktaccess
- plus minskat adressintervall
- minus kan ge kollisioner som måste
specialbehandlas
158Indexering
- Indexering innebär att man bestämmer en viss
ordningsföljd på posterna i datafilen. Index kan
knytas till vilket fält som helst eller en
kombination av fält - Primary indexes
- Clustering indexes
- Secondary indexes
- Multilevel indexes
- Dynamic multilevel indexes, B-trees, B-trees
159Primary indexes
- Index knutet till primärnyckel
- dense index ( index till varje post)
- nondense ( ej index till varje post).
- Indexfil och datafil
- fig. 6.1 och exampel 1, sida 159
160Clustering indexes
- Index knutet till ett icke-nyckelfält som har
dubbletter - En pekare från indexfilen för varje distinkt
värde (första blocket) på clustering-fältet - fig. 6.2 och 6.3
161Secondary indexes
- Indexfil med två värden, indexfält och pekare
till post/block - En datafil kan ha många sekundärindex, ett för
varje attribut - Fig. 6.4 och exempel 2, sida 162. Index till
osorterad fil men på ett fält med unika värden - Fig. 6.5 visar indexfil till fält med ej unika
värden
162Multilevel indexes
- Index med flera nivåer
- fig. 6.6 och exempel 3, sida 167
- Mycket snabb access men i likhet med alla
ovanstående varianter är det problem med
insättning av nya poster och borttagning av
befintliga poster
163Dynamic Multilevel Indexes using B-trees and
B-trees
- B-träd som finns i olika varianter möjliggör att
dynamiskt lägga till och ta bort poster utan att
slösa med minnesutrymme - Träden är balanserade, dvs. alla löv ligger på
samma nivå - Nyckelvärdena är upphängda i sorteringsordning
i trädet
164Skillnaden mellan B-träd och B-träd
- I ett B-träd kan datapekare finnas i alla inre
noder och i löven medan B-träd endast har
datapekare i löven - Dessutom finns pekare mellan löven i B-träd
vilket möjliggör sekventiell sökning
165B-träd av ordningen p
- Varje inre nod i trädet (fig. 6.10a) är på formen
ltP1, ltK1, Pr1gt, P2, , ltK2, Pr2gt, , , ltKq-1,
Prq-1gt, Pqgt där q lt p - Varje Pi är en trädpekare och varje Pri är en
datapekare till den post (eller block som
innehåller) vars nyckelvärde är Ki
166B-träd av ordningen p
- Inom varje nod gäller K1 lt K2 lt lt Kq-1
- För alla sökvärden X i det subträd som utpekas av
Pi gäller - Ki-1 lt X lt Ki, för 1 lt i lt q
- X lt Ki, för i 1
- Ki-1 lt X för i q
167B-träd av ordningen p
- Varje nod har högst p trädpekare
- Varje nod, förutom roten och löven, har
åtminstone (p/2) trädpekare. Roten har minst 2
trädpekare såvida den inte är ensam nod i trädet
168B-träd av ordningen p
- En nod med q trädpekare, q lt p, har q-1
söknyckelvärden och därmed också q-1 datapekare - Alla löv ligger på samma nivå. Löven har samma
struktur som inre noder men deras trädpekare är
NULL
169B-träd av ordningen p
- Inre noder definieras enligt
- varje inre nod i trädet är på formen
ltP1, K1, P2, K2, , Pq-1, Kq-1 , Pqgt där q
lt p - varje Pi är en trädpekare
- Inom varje nod gäller K1 lt K2 lt lt Kq-1
170B-träd av ordningen p
- För alla sökvärden X i det subträd som utpekas av
Pi gäller - Ki-1 lt X lt Ki, för 1 lt i lt q
- X lt Ki, för i 1
- Ki-1 lt X för i q
- Varje inre nod har högst p trädpekare
171B-träd av ordningen p
- Varje inre nod, förutom roten, har åtminstone
(p/2) trädpekare. Roten har minst 2 trädpekare
såvida den inte är ensam nod i trädet - En nod med q trädpekare, q lt p, har q-1
söknyckelvärden
172B-träd av ordningen p
- Lövnoder definieras enligt
- Varje löv har utseendet
ltltK1, Pr1gt, ltK2, Pr2gt, , , ltKq-1,
Prq-1gt, Pnextgt där q lt p - Pri är en datapekare och Pnext pekar på nästa
lövnod i trädet
173B-träd av ordningen p
- Inom varje nod gäller K1 lt K2 lt lt Kq-1, q lt
p - Varje Pri är en datapekare som pekar på den post
(eller block) vars söknyckelvärde är Ki - Varje lövnod har åtminstone (p/2) trädpekare
- Alla lövnoder är på samma nivå
174DAV B04 - Databasteknik
- Transaktionshantering
- (kap 19)
175Transaktion
- Logisk enhet i databasbearbetning
- Har en början och ett slut
- Kan innehålla flera delar, t ex read(x),
modify(x) och write(x)
176read(x)
- Kan ses som 3 steg
- hitta (beräkna) adress till den sida (block) där
x finns - kopiera sidan till buffert i PM
- kopiera x från buffert till programvariabel x
177write(x)
- Kan ses som 4 steg
- hitta adress till den sida (block) där x finns
- kopiera sidan till buffert i PM
- kopiera programvariabel x till buffert
- lagra den uppdaterade sidan på sekundärminne
178Concurrency
- Innebär samtidig/jämlöpande körning av flera
transaktioner - kan ställa till problem om de jobbar mot samma
datamängd
179Förlorade uppdateringar/ Lost Update Problem
- X är initialt lika med 80
- Transaktion T1 vill flytta 5 ( N) bokningar från
X till Y - Transaktion T2 vill öka X med 4 ( M) bokningar
- X borde bli 79 men värdet blir 84
180Tillfälliga uppdateringar / Temporary Update
Problem
- X minskas av T1
- T2 läser x och uppdaterar X
- Men sedan misslyckas T1 och minskningen görs
ogjord - Därmed har T2 använt ett felaktigt värde (dirty
read)
181Felaktiga summeringar / Incorrect Summary
Problem
- T3 summerar variablerna A, B, ,Y
- Samtidigt ska T1 föra över N enheter från X till
Y - T3 summerar förändrat X-värde men oförändrat
Y-värde - Summan är ej korrekt
182Fel som kan inträffa under transaktioner
- Datorfel - hårdvaru-, mjukvaru-, nätverksfel
- Transaktionsfel
- t ex division med noll
- Exceptions
- t ex data för transaktion saknas, underskott
- Concurrency control
- visar att transaktionen ej kan utföras på ett
korrekt sätt eller deadlock inträffar - Diskfel
- read/write, headcrash
- Katastrof
- brand, fel tape
183Tillståndsdiagram
- 5 olika tillstånd
- ACTIVE
- PARTIALLY COMMITTED
- COMMITTED
- FAILED
- TERMINATED
184Loggning
- Allt som händer lagras på en loggfil som skrivs
till disk - Varje transaktion har ett transaktions-ID, T
185Operationer
- Hur mycket behöver lagras för varje typ?
- start_transaction, T
- write_item, T, X, old_value, new_value
- read_item, T, X
- commit, T
- abort, T
186Varför logga systemet?
- Eftersom alla permanenta operationer loggats kan
ett korrekt tillstånd erhållas med hjälp av
loggen om man vet läget vid en tidigare tidpunkt
(check-point) - Vi kan göra undo på de transaktioner som inte
fullföljdes genom att backa i loggen - Vi kan göra redo på transaktioner som inte gjorts
commit på genom att gå framåt i loggen
187Önskvärda egenskaper hos transaktioner
- ACID-egenskaper
- Atomicity
- en transaktion skall utföras helt eller inte alls
- Consistency preservation
- transaktionen gör att databaser växlar mellan
konsistenta tillstånd - Isolation
- transaktionen skall inte påverkas av andra
transaktioner - Durability or permanency
- ändringar är permanenta
188Transaktionsscheman
- Med schema (schedule eller history) avses en
beskrivning av ordningsföljden mellan de
operationer (read/write) som görs för att antal
transaktioner som använder gemensamma data
189Seriella och icke-seriella scheman
- Seriellt schema (serial)
- en transaktion i taget aktiv och först när den
avslutats (commit/abort) kan nästa börja - Icke-seriellt (nonserial)
- dvs. inte en transaktion i taget
- Automatiskt seriellt
- om transaktionerna är oberoende av varandra
190Hur kan man avgöra om ett schema är seriellt
eller inte?
- För varje transaktion Ti som ingår i schemat S
- Skapa en nod som heter Ti i en precedensgraf
- För varje fall i S där Tj
- utför en read_item(X) efter att Ti utfört en
write_item(X) - skapa en kant (Ti ? Tj ) i precedensgrafen
191Hur kan man avgöra om ett schema är seriellt
eller inte?
- För varje fall i S, där Tj
- utför en write_item(X) efter att Ti utfört en
read_item(X) - skapa en kant (Ti ? Tj ) i precedensgrafen
- För varje fall i S, där Tj
- utför en write_item(X) efter att Ti utfört en
write_item(X) - skapa en kant (Ti ? Tj) i precedensgrafen
192Hur kan man avgöra om ett schema är seriellt
eller inte?
- Schemat S är serialliserbart omm precedensgrafen
saknar cykler
193DAV B04 - Databasteknik
- Concurrency Control
- (kap 20)
194Tekniker för concurrency control
- Olika slags lås (locks)
- Tidsstämpling (timestamps)
195Binära lås
- 2 tillstånd, låst (locked) och olåst (unlocked)
- Ett lås till varje databasvariabel (post, item) X
- Växlar tillstånd med lock_item(X) och
unlock_item(X) - Viktigt att det är atomära (odelbara) operationer
- Om låset redan är låst läggs man i väntekö
196Regler för lås
- En transaktion T måste utföra operationen
lock_item(X) innan någon read_item(X) eller
write_item(X) utförs i T - En transaktion T måste utföra operationen
unlock_item(X) efter att alla read_item(X) eller
write_item(X) utförts i T
197Regler för lås
- En transaktion T får inte utföra operationen
lock_item(X) om den redan har ett lås på X - En transaktion T får inte utföra operationen
unlock_item(X) om den inte har ett lås på X
198Regler för lås
- Reglerna garanterar att högst en transaktion i
taget kan låsa en variabel! - I databashanteraren finns en tabell där man för
varje lås anger - lt data item, LOCK, transaktion som håller låset gt
199Delade/exklusiva lås
- Shared/Exclusive (or Read/Write) Locks
- Läsning av samma datapost kan tillåtas för flera
transaktioner, låset kan delas, en räknare vet
hur många transaktioner som låst (läser) samma
post - 3 tillstånd, read-locked, write-locked och
unlocked
200Regler för delade/exklusiva lås
- En transaktion T måste utföra operationen
read_lock(X) eller write_lock(X) innan någon
read_item(X) utförs i T - En transaktion T måste utföra operationen
write_lock(X) innan någon write_item(X) utförs i
T - En transaktion T måste utföra operationen
unlock(X) efter att alla read_item(X) och
write_item(X) är utförda
201Regler för delade/exklusiva lås
- En transaktion T får inte utföra operationen
read_lock(X) om den redan har ett lås på X - En transaktion T får inte utföra operationen
write_lock(X) om den redan har ett lås på X - En transaktion T får inte utföra operationen
unlock(X) om den inte har ett lås på X
202Two-phase locking protocol
- Alla låsningar (read_lock och write_lock) föregår
första unlock i transaktionen - Garanterar serialiserbarhet
- Dock kan deadlock inträffa
203Deadlock Prevention Protocols
- Varje transaktion förses med tidstämpel TS(T)
- Antag att Ti försöker låsa X som redan är låst av
Tj - Nu finns två varianter, i båda dessa varianter
undviks deadlock - wait-die
- wound-wait
204wait-die
- Om TS(Ti) lt TS(Tj), (dvs. Ti är äldre än Tj)
- så får Ti vänta
- annars (dvs. Ti är yngre än Tj) avbryts Ti
(abort) och återstartas senare med samma
tidstämpel
205wound-wait
- Om TS(Ti) lt TS(Tj), (dvs. Ti är äldre än Tj)
- så avbryt Tj (Ti wounds Tj ) och återstarta
senare med samma tidstämpel - annars (dvs. Ti är yngre än Tj) låt Ti vänta
206Utan tidstämpel
- No waiting
- Om transactionen inte kan få ett lås avbryts den
omedelbart och återstartas efter viss fördröjning
utan att kontrollera om deadlock kommer att
uppstå - Cautious waiting
- Antag att Ti försöker låsa X men att X redan är
låst av Tj - Om Tj inte är blockerad (inte väntar på någon
annan låst variabel) så blockeras Ti och får
vänta annars avbryts Ti
207Deadlock Detection and Timeouts
- Upptäck deadlock genom att konstruera wait-for
graph - Deadlock omm det finns cykler i grafen
- Lösningar
- victim selection
- timeouts
208Victim selection
- Någon måste offras
- Undvik transaktionen som gått länge och gjort
många uppdateringar
209Timeouts
- Avbryt transaktionen om den väntat för länge
210Starvation
- En transaktion får vänta orimligt länge på grund
av låg prioritet eller annat - Lösningar
- FCFS first-come-first-serve i väntekö
- Prioritet ge högre prioritet åt den som väntat
länge
211DAV B04 - Databasteknik
212Vad behöver du?
- Ett SSH-program som ex.Tera Term Pro (Programs-gt
Misc-gtTera Term-gt Tera Term Pro (SSH) ) - Ett program för att kopiera över filer från ditt
vanliga konto till kontot på enterprise, ex
WinSCP (Programs-gt Net-gt WinSCP) - Följande data
- enterprise.cse.kau.se
- användarkonto (ex. picard, data)
- lösenord
213Logga in på enterprise
- Från SSH-programmet med hjälp av
- användarkonto
- lösenord
214Logga in på databaskontot
- Därifrån loggar du in på MySQL
- mysql h lthostnamegt -u ltusergt -p
- (-h lthostnamegt kan du bortse från)
- Ex. mysql u picard -p
215Välj databas
- Tala om vilken databas du kommer att använda
(lab3_XX) - mysqlgt use lab3_XX
216Andra nyttiga kommandon
- Visa alla tabeller i databasen
- mysqlgt show tables
- Beskriv en specifik tabell
- mysqlgt describe lttabellens namngt
217MySQL vs. Access
- Inga sub-selects (går inte att nästla)
- Information om främmandenycklar sparas inte
(kommer i senare version...), så
referensintegritet kontrolleras inte (upp till
er) - Inga vyer (senare version...)
218MySQL vs. Access
- I MySQL är det möjligt att göra COUNT(DISTINCT
ltkolumn-namngt) - Wildcards
- Access (substräng), ? (ett tecken)
- MySQL (substräng), _ (ett tecken)
- Kommentarer skrivs efter ett -tecken eller inom
/ / enligt C-stil
219Exempel skapa tabeller
- CREATE TABLE suppliers
- (s_num varchar(5) NOT NULL PRIMARY KEY
- name varchar(50) NOT NULL
- )
- CREATE TABLE shipments
- (s_num varchar(5) NOT NULL,
- p_nu, varchar(5) NOT NULL,
- PRIMARY KEY (s_num, p_num),
- FOREIGN KEY (s_num) REFERENCES suppliers (s_num)
- FOREIGN KEY (s_num) REFERENCES parts (p_num)
- )
220Information om att skapa tabeller
- Alla alternativ för CREATE TABLE finns på
- http//www.mysql.com/doc/C/R/CREATE_TABLE.html
- Ytterligare exempel finns på
- http//www.mysql.com/doc/C/r/Creating_tables.html
- De viktigaste typerna
- TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, REAL,
DOUBLE, FLOAT, DECIMAL(length,decimals),
NUMERIC(length,decimals), CHAR(length),
VARCHAR(length), DATE, TIME, TIMESTAMP, DATETIME,
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT,
ENUM(value1,value2,value3,...)
221Ta bort tabeller
- (Efter allt arbete man lagt ned för att skapa
tabellen...)) - drop table lttabell-namngt
- Tar bort både definitionen av tabellen och alla
data så var försiktig!!!