Databasteknik

Download Report

Transcript Databasteknik

DAV B04 Databasteknik
Föreläsningsmaterial
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
1
DAV B04 Databasteknik
Introduktion
(kap 1, 2)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
2
Databaser 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”
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
3
Databas-system

Ett databas-system (DBS) består av DBHSmjukvaran tillsammans med själva databasen
(applikationer, användare)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
4
Egenskaper hos databassystem

Data är integrerad och delad

I DBHS lagras en beskrivning av databasen


struktur, integritetsregler mm
Visst mått av dataoberoende
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
5
Datamodell

Används för att



gömma implementationsdetaljer
ge användarna en konceptuell vy av databasen
Stödjer många olika vyer av databasen
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
6
(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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
7
Nackdelar med databassystem

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
8
Användare av databassystem

Databasadministratörer (DBA)

Applikationsprogrammerare

Slutanvändare
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
9
Olika typer av databassystem

1965-1980


Från ca 1980


främst hierarkiska databaser och
nätverksdatabaser
de flesta nya databas-system varit
relationsdatabaser
Från ca 1990

2015-07-16
objektorienterade och objektrelationella databaser
KaU - Datavetenskap - DAV B04 - MGö
10
Datamodeller

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
11
Högnivå-modeller

Använder koncept som ligger nära hur
användare förstår data.

Används ofta vid databasdesign.

2015-07-16
Exempel E/R-modellen
KaU - Datavetenskap - DAV B04 - MGö
12
Logiska 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
13
Lågnivå-modeller

Använder koncept som beskriver i detalj hur
data är lagrad rent fysiskt
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
14
Databasens schema

Beskrivningen av databasen

Kan visas i ett schemadiagram
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
15
Exempel på schemadiagram
Extern nivå 1
Extern nivå 2
SALARIES
Eno
Pay
EMPLOYEES
Empnr
Depnr
Konceptuell nivå
EMPLOYEES
Employee_number
Department_number
salary
Intern nivå
STORED_EMP
PREFIX
EMP#
DEPT#
PAY
-
-
2015-07-16
LENGTH = 20
TYPE
TYPE
TYPE
TYPE
=
=
=
=
BYTE(6), OFFSET = 20
BYTE(6), OFFSET = 6, INDEX = EMPX
BYTE(4), OFFSET = 12
WORD, OFFSET = 16
Systemet lagrar information om samma post i tre olika nivåer.
Systemet måste också känna till att t ex empnr i den externa nivån motsvarar
employee_number på den konceptuella nivån.
Dessa motsvarigheter eller mappningar är också lagrade i
systemet.
KaU - Datavetenskap - DAV B04 - MGö
16
Databasens 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
17
Språk

Varje språk inkluderar

ett underspråk (data sublanguage eller DSL)

som sägs vara inbäddat i värdspråket (host
language)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
18
Dataoberoende

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

2015-07-16
Det går att göra ändringar i det interna schemat
utan att det påverkar det konceptuella schemat
KaU - Datavetenskap - DAV B04 - MGö
19
Bestå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)

2015-07-16
den del av språket som används för att
manipulera eller utföra operationer på sådana
objekt
KaU - Datavetenskap - DAV B04 - MGö
20
Applikationer skrivna av
användaren

Skrivna i något programspråk (t ex C) med
inbäddad SQL eller applikationer skrivna i
SQL
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
21
Applikationer skrivna av
någon leverantör (tools)

Kompilatorer för något frågespråk,
rapportgeneratorer, grafiska
användargränssnitt, kalkylprogram,
statistikprogram, 4GL-kompilatorer, CASEverktyg
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
22
Program som används för
att administrera databasen

Laddningsprogram, backup-program,
reorganisationsprogram, statistik- och
analysprogram
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
23
Katalogen (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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
24
Ö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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
25
DAV B04 Databasteknik
Relationsmodellen
(kap 7)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
26
Relationsmodellen

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
27
Relationsmodellen

Relation är den matematiska termen för tabell

En databas ses som en mängd relationer

2015-07-16
DB = {R1, R2,…Rn}
KaU - Datavetenskap - DAV B04 - MGö
28
Relationsmodellen
Beskriver ett sätt att se på data från en logisk
synvinkel
 Tre aspekter av data


datastrukturer (eller objekt)


datamanipulation (eller operationer)


operationer är bl. a SELECT, PROJECT och JOIN
dataintegritet

2015-07-16
huvudsakligen tabeller
de viktigaste reglerna är de om entitetsintegritet och
referensintegritet
KaU - Datavetenskap - DAV B04 - MGö
29
Domä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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
30
Exempel på domäner

typedef enum{London, Paris, Athens, New
York, Stockholm, Rome} City;

2015-07-16
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
KaU - Datavetenskap - DAV B04 - MGö
31
Exempel på domäner

CREATE DOMAIN City Char(9) DEFAULT
’???’

CHECK (VALUE IN (’London’, ’Paris’,
’Athens’, ’New York’, ’Stockholm’, ’Rome’,
’???’ ) )
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
32
Relationer

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
33
Relationer

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

2015-07-16
t = {v1,v2,…vn}
KaU - Datavetenskap - DAV B04 - MGö
34
Relationer

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
35
Egenskaper hos en relation
Det finns inga duplicerade tupler
 Tuplerna är oordnade



Attributen är oordnaded


det finns ingen ”första” eller ”sista ”tuple”
det finns inget ”första” eller ”sista” attribut
Alla värden är atomära (skalära)

2015-07-16
(detta betyder att en relation alltid är i första
normalformen)
KaU - Datavetenskap - DAV B04 - MGö
36
Olika 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
37
Olika 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
38
Vyer (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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
39
Logiskt 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!
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
40
Logiskt 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
41
Andra 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)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
42
Integritet

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
43
Exempel 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
44
Integritetsregler

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


2015-07-16
kandidatnycklar (och primärnycklar)
främmandenycklar
KaU - Datavetenskap - DAV B04 - MGö
45
Definition 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)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
46
Enkla 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
47
Kandidatnycklar

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
48
Exempel kandidatnycklar

Ex i COMPANY:
Employee:
2015-07-16
K = {SSN}
Project:
K = {PNUMBER}
Works_on:
K = {ESSN,PNO}
KaU - Datavetenskap - DAV B04 - MGö
49
Primärnycklar och
alternativa nycklar

Primärnyckel


en nyckel som väljs från mängden
kandidatnycklar
Alternativ nyckel

2015-07-16
den återstående mängden kandidatnycklar när
primärnyckeln har tagits bort
KaU - Datavetenskap - DAV B04 - MGö
50
Sekundä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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
51
Nycklar 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
52
Tolkningar av NULL

Vissa logiska svårigheter




2015-07-16
värde okänt
egenskapen ej relevant
värde finns inte
värde odefinierat
KaU - Datavetenskap - DAV B04 - MGö
53
Regeln 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!
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
54
Definition 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
55
Främmandenycklar

Varje attribut i en främmandenyckel måste
definieras på samma domän som det
motsvarande attributet i den matchande
kandidatnyckeln
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
56
Frä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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
57
Regeln om referensintegritet

Databasen får inte innehålla några icke
matchande värden på främmandenycklar

2015-07-16
dvs. om B refererar till A, så måste A existera
KaU - Datavetenskap - DAV B04 - MGö
58
Regler 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
59
Exempel 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:


2015-07-16
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
KaU - Datavetenskap - DAV B04 - MGö
60
Semantiska integritetsregler
Även kallade business rules
 Gäller för en specifik databas

2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
61
Exempel 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
62
DAV B04 Databasteknik
Relationsalgebra
(kap 7)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
63
Relationsalgebra

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
64
Operationer

De speciella relationsoperationerna


select, project, join och division
De traditionella mängdoperationerna

2015-07-16
union, intersection, difference och cartesian
product
KaU - Datavetenskap - DAV B04 - MGö
65
SELECT 

SELECT returnerar en relation som består av
alla tupler från en relation som uppfyller ett
visst villkor

SELECT-operationen benämns

2015-07-16
<selection condition> (R)
KaU - Datavetenskap - DAV B04 - MGö
66
<selection condition> (R)

Den resulterande relationen har samma attribut som
R

Villkoret är av formen X <jämförelseoperator> 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
67
PROJECT 

PROJECT returnerar en relation som består
av alla tupler i en relation sedan vissa attribut
har utelämnats

PROJECT-operationen benämns

2015-07-16
<attribute list> (R)
KaU - Datavetenskap - DAV B04 - MGö
68
<attribute list> (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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
69
Sekvenser 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:
 FNAME,LNAME,SALARY ( DNO=4(EMPLOYEE) )
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
70
RENAME

Alternativt så kan man specificera temporära
relationer för varje steg:
DEPT4_EMPS  DNO=4(EMPLOYEE)
R   FNAME,LNAME,SALARY(DEPT4_EMPS)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
71
RENAME

Attribut i den resulterande relationen kan ges andra
namn om man så vill:
DEPT4_EMPS   DNO=4(EMPLOYEE)
R(FIRSTNAME,LASTNAME,SALARY) 
 FNAME,LNAME,SALARY(DEPT4_EMPS)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
72
Traditionella
mängdoperationer

Dessa binära operationer fungerar som
motsvarande operationer i matematiken

En viktig skillnad

2015-07-16
operanderna måste vara typkompatibla, dvs.
bestå av samma slags tupler (gäller ej produkt)
KaU - Datavetenskap - DAV B04 - MGö
73
UNION: 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
74
INTERSECTION: 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
75
DIFFERENCE: 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
76
CARTESIAN 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

2015-07-16
är meningslös i sig själv
KaU - Datavetenskap - DAV B04 - MGö
77
THETA JOIN

Är det samma som en kartesisk produkt följt
av en SELECT-operation

THETA JOIN benämns


R1<join condition>R2
Oftast jämförs ett attribut i R1 med ett i R2 i
villkoret
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
78
EQUIJOIN

Kallas operationen om villkoret är ”=”
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
79
NATURAL JOIN

är det samma som EQUIJOIN, men där joinattributet i R2 är borttaget i resultatrelationen

NATURAL JOIN benämns


2015-07-16
R1 * R2
R1 * <join attribute1>, <join attribute2> R2
KaU - Datavetenskap - DAV B04 - MGö
80
DIVISION

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

2015-07-16
R1  R2
KaU - Datavetenskap - DAV B04 - MGö
81
DAV B04 Databasteknik
SQL
(kap 8)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
82
SQL - 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




2015-07-16
kommer bl.a. att vara objektorienterat
KaU - Datavetenskap - DAV B04 - MGö
83
SQL i kursen

Olika dialekter, vi använder

Microsoft Jet SQL (separat kompendium)

MySQL
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
84
Bestå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)

2015-07-16
kommandona i DML möjliggör läsning, skrivning,
insättning, radering och förändring av
tabellinnehåll
KaU - Datavetenskap - DAV B04 - MGö
85
SQL uttryck

Tabell = relation

Rad = tuple

Kolumn = attribut
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
86
DDL-operationer

CREATE


DROP


Skapa tabell, schema, vy, domän…
Radera tabell eller…
ALTER

2015-07-16
Lägg till eller ta bort i tabell
KaU - Datavetenskap - DAV B04 - MGö
87
DML-operationer

SELECT


INSERT


Skriv in rad(er)
DELETE


Välj ut data ur tabell(er)
Radera rad(er)
UPDATE

2015-07-16
Modifiera kolumner i rad(er)
KaU - Datavetenskap - DAV B04 - MGö
88
DAV B04 Databasteknik
ER-diagram
(kap 3)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
89
Datamodellering
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
90
ER (Entity Relationship) diagram

Konceptuell datamodellering

ER modellen beskriver data utifrån



2015-07-16
entiteter
attribut
relationer
KaU - Datavetenskap - DAV B04 - MGö
91
Entiteter

”Sak” i verkliga världen


2015-07-16
existerar fysiskt, ex bil, student
existerar konceptuellt, ex univ.kurs, jobb
KaU - Datavetenskap - DAV B04 - MGö
92
Entiteter och attribut

Varje entitet har attribut, dvs. egenskaper som
beskriver entiteten

2015-07-16
Student: namn, ålder, adress...
KaU - Datavetenskap - DAV B04 - MGö
93
Attributens 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!
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
94
Sammansatta attribut

Kan delas ned i mindre delar som har oberoende
betydelse
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
95
Mångvärdes attribut

Vanligtvis har ett attribut bara ett värde, men...

2015-07-16
Vad händer om ex. en bil har tre olika färger?
KaU - Datavetenskap - DAV B04 - MGö
96
Härledda attribut

Exempelvis kan man härleda en persons ålder från
personnummer och nuvarande år
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
97
Entitetstyper

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

2015-07-16
STUDENT: Namn, ålder, adress
KaU - Datavetenskap - DAV B04 - MGö
98
Entitetsmängder

Samlingen/mängden av alla entiteter av en viss
entitetstyp i databasen vid någon given tid
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
99
Nyckelattribut

Varje entitetstyp skall ha ett attribut vars värde skall
vara unikt för varje enskild entitet i entitetsmängden

2015-07-16
Student: Personnummer, namn, ålder
KaU - Datavetenskap - DAV B04 - MGö
100
Relationer mellan entiteter

Som i: samband mellan entiteter
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
101
Relationer och attribut

En relation kan också ha attribut

2015-07-16
Exempelvis: en student på en kurs har ett betyg...
KaU - Datavetenskap - DAV B04 - MGö
102
Kardinalitet på relationer
1:1 förhållande
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
103
Kardinalitet på relationer
1:N förhållande
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
104
Kardinalitet på relationer
N:M förhållande
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
105
DAV B04 Databasteknik
Mappning mellan ER-diagram och
relationsmodellen
(kap 9)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
106
Mappning ER-diagram /
relationsmodellen

Används för att skapa
den logiska
databasdesignen som
baseras på den
konceptuella designen
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
107
Algoritm

Finns en algoritm för att stegvis utföra
mappningen

2015-07-16
denna finns mer detaljerat beskriven i kapitel 9.1
KaU - Datavetenskap - DAV B04 - MGö
108
Starka entiteter

Steg 1 ~

2015-07-16
varje stark entitetet blir en basrelation där
primärnyckeln i relationen motsvarar
nyckelattributet(en) i entiteten
KaU - Datavetenskap - DAV B04 - MGö
109
Svaga 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

2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
110
1:1 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
111
1:N 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
112
N:M 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
113
Attribut

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
114
Värdedomäner

Skapas för alla attributens värdemängder
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
115
DAV B04 Databasteknik
Praktisk databasdesign
(kap 16)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
116
Sammanhang

Informationssystem (IS)


Livscykel: Makro
Databassystem (DBS)

2015-07-16
Livscykel: Mikro
KaU - Datavetenskap - DAV B04 - MGö
117
Informationssystems livscykel
(Makro livscykel)
1)
Analys av möjliga krav (Feasibility analysis)
2)
Kravanalys och insamling av krav
3)
Design
4)
Implementation
5)
Testing/kontroll och acceptanstest
6)
Utplacering, drift och underhåll
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
118
Databassystems livscykel
(Mikro livscykel)
1)
Definition av systemet
2)
Databasdesign
3)
Databas implementation
4)
Inladdning av data eller konvertering
5)
Konvertering av applikationer
6)
Testing och kontroll
7)
Drift
8)
Övervakning och underhåll
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
119
Steg 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...
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
120
Faser i databasdesignen
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
121
Faser i databasdesignen
1)
Insamling och analys av krav
2)
Konceptuell databasdesign
Exempel ER-modellen

3)
Val av DBHS
4)
Mappning av datamodeller (logisk databasdesign)
exempel, mappning från ER modellen till relationsmodellen

Fysisk databasdesign
5)
lagringsstrukturer, index

Implementering av databassystemet
6)

2015-07-16
impl. av databas och applikationer, trimning (tuning)
KaU - Datavetenskap - DAV B04 - MGö
122
Fas 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
123
Fas 2 – Konceptuell
databasdesign

2 parallella aktiviteter



Datamodellering


datamodellering
transaktionsdesign
centraliserad vs. vy integration
Transaktionsdesign

2015-07-16
Specar funktionella krav på applikationerna
 Hämtnings-/uppdaterings/blandade transaktioner
KaU - Datavetenskap - DAV B04 - MGö
124
Fas 3: Val av DBHS

Exempel på faktorer som spelar in



relationsdatabas, objektdatabas?
utvecklingsverktyg?
vad kostar det att:







2015-07-16
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?
KaU - Datavetenskap - DAV B04 - MGö
125
Fas 4 – Mappning mellan
datamodeller

Kan ske i två steg

system-o-beroende mappning


systemberoende mappning


ER-modell -> relationsmodellen
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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
126
Fas 5 – Fysisk databasdesign

Utifrån vad DBHS kan erbjuda väljs lämpliga


lagringsstrukturer, åtkomstvägar, organisation av
filer, indexering
Kriterier som påverkar



2015-07-16
svarstid
utrymme
transaktionsgenomströmming (medelvärde
transaktioner/minut)
KaU - Datavetenskap - DAV B04 - MGö
127
Fas 6 – implementation och
trimning

DDL och SDL uttrycken kompileras och
används för att skapa databasens scheman
och (tomma) databasfiler. Eventuellt sker
laddning/konvertering av data


görs av DBA + databasdesigner
Transaktioner implementeras genom att utgå
från de konceptuella beskrivningarna av
transaktionerna

2015-07-16
görs av applikationsprogrammerare
KaU - Datavetenskap - DAV B04 - MGö
128
Fysisk databasdesign i
relationsdatabaser

Brukar börja med att man tar fram de
viktigaste faktorerna och den information man
har om dem och analyserar dessa...

2015-07-16
Frågor, transaktioner, applikationer
KaU - Datavetenskap - DAV B04 - MGö
129
Fysisk databasdesign i
relationsdatabaser

Analys av





2015-07-16
frågor och transaktioner
frekvens på anrop av frågor och transaktioner
tidskrav på frågor och transaktioner
frekvens på uppdateringsoperationer
indexering (accessvägar)
KaU - Datavetenskap - DAV B04 - MGö
130
Databastrimning 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



2015-07-16
index
databasdesignen
frågor
KaU - Datavetenskap - DAV B04 - MGö
131
DAV B04 Databasteknik
Normalisering och funktionella
beroenden
(kap 14)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
132
Riktlinjer när man vill
skapa en databas
1)
Designa så att det är lätt att förstå
innebörden. Kombinera inte attribut från
olika entitetstyper i samma tabell
2)
Designa så att inte problem uppstår vid
insättning, borttagning eller modifiering
3)
Undvik värden i basrelationer som ofta blir
NULL. Skapa istället en ny relation
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
133
Normalisering

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
134
Funktionellt beroende (FD)

Functional Dependency

Är en många-till-en relation från en mängd
attribut till en annan i en given relation
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
135
Definition 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

2015-07-16
R.X  R.Y
KaU - Datavetenskap - DAV B04 - MGö
136
Exempel på funktionellt
beroende

Relationen EMP_PROJ (i Fig. 14.3b, sida 470) har
följande FD:
SSN  ENAME
PNUMBER  {PNAME, PLOCATION}
{SSN, PNUMBER}  HOURS
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
137
Exempel på funktionellt
beroende

Andra raden skulle också kunna delas upp i
PNUMBER  PNAME
PNUMBER  PLOCATION

Även den triviala relationen finns
PNUMBER -> PNUMBER
2015-07-16
osv.
KaU - Datavetenskap - DAV B04 - MGö
138
Determinant

Vänstra sidan av FD

Determinanten kan vara primärnyckel och
därmed också kandidatnyckel men måste
inte vara det (BCNF – 3NF)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
139
Dependent

Den högra sidan av ett FD

Alla attribut i en relation är funktionellt
beroende av primärnyckeln
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
140
Definition 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
141
Exempel 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 PK:s
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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
142
1:a normalformen (1NF)

En relation är i första normalformen (1NF)
omm de underliggande enkla domänerna
innehåller endast skalära värden

2015-07-16
figur 14.8 och 14.9
KaU - Datavetenskap - DAV B04 - MGö
143
2:a 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

2015-07-16
figur 14.10 (a)
KaU - Datavetenskap - DAV B04 - MGö
144
3:e 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 icketransitivt beroende av primärnyckeln

2015-07-16
figur 14.10 (b)
KaU - Datavetenskap - DAV B04 - MGö
145
Boyce-Codd normalform
(BCNF)

En relation är i Boyce-Codd normalform
(BCNF) omm varje determinant är en
kandidatnyckel (dvs. skulle kunna vara
primärnyckel)

2015-07-16
figur 14.13
KaU - Datavetenskap - DAV B04 - MGö
146
Transitivt 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
147
Transitivt beroende

Vi har ett transitivt beroende från SSN via
DNUMBER till DNAME och DMGRSSN
SSN  DNUMBER  {DNAME, DMGRSSN}

Transitiva beroenden elimineras genom att
splittra tabellen (PROJECT).

2015-07-16
fig. 14.10
KaU - Datavetenskap - DAV B04 - MGö
148
Vandra 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

2015-07-16
ex. finns i figur 14.2 och 14.4
KaU - Datavetenskap - DAV B04 - MGö
149
Varning!

Vid olämplig design kan falska tupler uppstå
vid NATURAL JOIN

2015-07-16
ex. figur 14.3, 14.5 och 14.6
KaU - Datavetenskap - DAV B04 - MGö
150
DAV B04 Databasteknik
Indexering
(kap 6)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
151
Lagring 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
152
Skrivning 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
153
Hämta en post från
databasen
1)
DBHS bestämmer vilken lagrad post som behöver hämtas och
ber filhanteraren att hämta posten
2)
Filhanteraren bestämmer vilken sida (block) som posten finns
på och ber diskhanteraren att hämta den sidan
3)
Diskhanteraren bestämmer fysisk adress och ber om data från
denna adress
4)
Data läses av diskhanteraren
5)
Den lagrade sidan returneras till filhanteraren
6)
Den lagrade posten returneras till DBHS
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
154
Exempel på
lagringsstrukturer

Sekventiell lagring, osorterad/sorterad

Indexering

Hashing

B-träd, B+-träd
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
155
Sekventiell 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


2015-07-16
plus: binärsökning ger mycket snabbare access
minus: insättning av nya poster medför att poster
måste flyttas
KaU - Datavetenskap - DAV B04 - MGö
156
Hashing

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



2015-07-16
plus: direktaccess
plus: minskat adressintervall
minus: kan ge kollisioner som måste
specialbehandlas
KaU - Datavetenskap - DAV B04 - MGö
157
Indexering

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





2015-07-16
Primary indexes
Clustering indexes
Secondary indexes
Multilevel indexes
Dynamic multilevel indexes, B-trees, B+-trees
KaU - Datavetenskap - DAV B04 - MGö
158
Primary indexes

Index knutet till primärnyckel



dense index (= index till varje post)
nondense (= ej index till varje post).
Indexfil och datafil

2015-07-16
fig. 6.1 och exampel 1, sida 159
KaU - Datavetenskap - DAV B04 - MGö
159
Clustering 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

2015-07-16
fig. 6.2 och 6.3
KaU - Datavetenskap - DAV B04 - MGö
160
Secondary 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


2015-07-16
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
KaU - Datavetenskap - DAV B04 - MGö
161
Multilevel 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
162
Dynamic 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
163
Skillnaden 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
164
B-träd av ordningen p

Varje inre nod i trädet (fig. 6.10a) är på
formen <P , <K , Pr >, P , , <K , Pr >, …, , <K , Pr >, P > där
q <= p
1

1
1
2
2
2
q-1
q-1
q
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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
165
B-träd av ordningen p

Inom varje nod gäller K1 < K2 < … < Kq-1

För alla sökvärden X i det subträd som
utpekas av Pi gäller



2015-07-16
Ki-1 < X < Ki, för 1 < i < q
X < Ki, för i = 1
Ki-1 < X för i = q
KaU - Datavetenskap - DAV B04 - MGö
166
B-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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
167
B-träd av ordningen p

En nod med q trädpekare, q <= 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
168
B+-träd av ordningen p

Inre noder definieras enligt

varje inre nod i trädet är på formen
<P1, K1, P2, K2, …, Pq-1, Kq-1 , Pq> där q <= p


2015-07-16
varje Pi är en trädpekare
Inom varje nod gäller K1 < K2 < … < Kq-1
KaU - Datavetenskap - DAV B04 - MGö
169
B+-träd av ordningen p

För alla sökvärden X i det subträd som utpekas av
Pi gäller




2015-07-16
Ki-1 < X <= Ki, för 1 < i < q
X <= Ki, för i = 1
Ki-1 < X för i = q
Varje inre nod har högst p trädpekare
KaU - Datavetenskap - DAV B04 - MGö
170
B+-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 <= p, har q-1
söknyckelvärden
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
171
B+-träd av ordningen p
Lövnoder definieras enligt


Varje löv har utseendet
<<K1, Pr1>, <K2, Pr2>, …, , <Kq-1, Prq-1>, Pnext> där

2015-07-16
q <= p
Pri är en datapekare och Pnext pekar på nästa
lövnod i trädet
KaU - Datavetenskap - DAV B04 - MGö
172
B+-träd av ordningen p

Inom varje nod gäller K1 < K2 < … < Kq-1, q <= 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å
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
173
DAV B04 Databasteknik
Transaktionshantering
(kap 19)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
174
Transaktion

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)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
175
read(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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
176
write(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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
177
Concurrency

Innebär samtidig/jämlöpande körning av flera
transaktioner

2015-07-16
kan ställa till problem om de jobbar mot samma
datamängd
KaU - Datavetenskap - DAV B04 - MGö
178
Fö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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
179
Tillfä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)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
180
Felaktiga 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
181
Fel som kan inträffa under
transaktioner


Datorfel - hårdvaru-, mjukvaru-, nätverksfel
Transaktionsfel


Exceptions


visar att transaktionen ej kan utföras på ett korrekt sätt eller
deadlock inträffar
Diskfel


t ex data för transaktion saknas, underskott
Concurrency control


t ex division med noll
read/write, headcrash
Katastrof

2015-07-16
brand, fel tape
KaU - Datavetenskap - DAV B04 - MGö
182
Tillståndsdiagram

5 olika tillstånd





2015-07-16
ACTIVE
PARTIALLY COMMITTED
COMMITTED
FAILED
TERMINATED
KaU - Datavetenskap - DAV B04 - MGö
183
Loggning

Allt som händer lagras på en loggfil som
skrivs till disk

Varje transaktion har ett transaktions-ID, T
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
184
Operationer

Hur mycket behöver lagras för varje typ?





2015-07-16
[start_transaction, T]
[write_item, T, X, old_value, new_value]
[read_item, T, X]
[commit, T]
[abort, T]
KaU - Datavetenskap - DAV B04 - MGö
185
Varfö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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
186
Önskvärda egenskaper hos
transaktioner

ACID-egenskaper:




2015-07-16
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
KaU - Datavetenskap - DAV B04 - MGö
187
Transaktionsscheman

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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
188
Seriella och icke-seriella
scheman

Seriellt schema (serial)


Icke-seriellt (nonserial)


en transaktion i taget aktiv och först när den
avslutats (commit/abort) kan nästa börja
dvs. inte en transaktion i taget
Automatiskt seriellt

2015-07-16
om transaktionerna är oberoende av varandra
KaU - Datavetenskap - DAV B04 - MGö
189
Hur 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


2015-07-16
utför en read_item(X) efter att Ti utfört en
write_item(X)
skapa en kant (Ti  Tj ) i precedensgrafen
KaU - Datavetenskap - DAV B04 - MGö
190
Hur 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


2015-07-16
utför en write_item(X) efter att Ti utfört en
write_item(X)
skapa en kant (Ti  Tj) i precedensgrafen
KaU - Datavetenskap - DAV B04 - MGö
191
Hur kan man avgöra om ett
schema är seriellt eller inte?

Schemat S är serialliserbart omm
precedensgrafen saknar cykler
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
192
DAV B04 Databasteknik
Concurrency Control
(kap 20)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
193
Tekniker för concurrency
control

Olika slags lås (locks)

Tidsstämpling (timestamps)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
194
Binä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ö
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
195
Regler 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
196
Regler 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
197
Regler 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

2015-07-16
< data item, LOCK, transaktion som håller låset >
KaU - Datavetenskap - DAV B04 - MGö
198
Delade/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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
199
Regler 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
200
Regler 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
201
Two-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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
202
Deadlock 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


2015-07-16
wait-die
wound-wait
KaU - Datavetenskap - DAV B04 - MGö
203
wait-die

Om TS(Ti) < 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
204
wound-wait

Om TS(Ti) < 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
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
205
Utan 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


2015-07-16
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
KaU - Datavetenskap - DAV B04 - MGö
206
Deadlock Detection and
Timeouts

Upptäck deadlock genom att konstruera waitfor graph

Deadlock omm det finns cykler i grafen

Lösningar


2015-07-16
victim selection
timeouts
KaU - Datavetenskap - DAV B04 - MGö
207
Victim selection

”Någon måste offras”

Undvik transaktionen som gått länge och
gjort många uppdateringar
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
208
Timeouts

Avbryt transaktionen om den väntat för länge
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
209
Starvation

En transaktion får vänta orimligt länge på
grund av låg prioritet eller annat

Lösningar


2015-07-16
FCFS : first-come-first-serve i väntekö
Prioritet : ge högre prioritet åt den som väntat
länge
KaU - Datavetenskap - DAV B04 - MGö
210
DAV B04 Databasteknik
MySQL
(-)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
211
Vad behöver du?

Ett SSH-program som ex.Tera Term Pro (Programs->
Misc->Tera Term-> Tera Term Pro (SSH) )

Ett program för att kopiera över filer från ditt vanliga
konto till kontot på enterprise, ex WinSCP (Programs->
Net-> WinSCP)

Följande data



2015-07-16
enterprise.cse.kau.se
användarkonto (ex. picard, data)
lösenord
KaU - Datavetenskap - DAV B04 - MGö
212
Logga in på enterprise

Från SSHprogrammet
med hjälp av


2015-07-16
användarkonto
lösenord
KaU - Datavetenskap - DAV B04 - MGö
213
Logga in på databaskontot

Därifrån loggar du in på MySQL


2015-07-16
mysql –h <hostname> -u <user> -p
 (-h <hostname> kan du bortse från)
Ex. mysql –u picard -p
KaU - Datavetenskap - DAV B04 - MGö
214
Välj databas

Tala om vilken databas du kommer att
använda (lab3_XX)

2015-07-16
mysql> use lab3_XX;
KaU - Datavetenskap - DAV B04 - MGö
215
Andra nyttiga kommandon

Visa alla tabeller i databasen


mysql> show tables;
Beskriv en specifik tabell

2015-07-16
mysql> describe <tabellens namn>;
KaU - Datavetenskap - DAV B04 - MGö
216
MySQL 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...)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
217
MySQL vs. Access

I MySQL är det möjligt att göra
COUNT(DISTINCT <kolumn-namn>)

Wildcards



Access * (substräng), ? (ett tecken)
MySQL % (substräng), _ (ett tecken)
Kommentarer skrivs efter ett #-tecken eller
inom /* */ enligt C-stil
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
218
Exempel: 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)
);
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
219
Information om att skapa
tabeller

Alla alternativ för CREATE TABLE finns på


Ytterligare exempel finns på


http://www.mysql.com/doc/C/R/CREATE_TABLE.html
http://www.mysql.com/doc/C/r/Creating_tables.html
De viktigaste typerna

2015-07-16
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,...)
KaU - Datavetenskap - DAV B04 - MGö
220
Ta bort tabeller

(Efter allt arbete man lagt ned för att skapa
tabellen...;))


drop table <tabell-namn>;
Tar bort både definitionen av tabellen och alla
data så var försiktig!!!
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
221
Ändra i tabeller

Ex.



ALTER TABLE shipments
ADD COLUMN qty INT NOT NULL AFTER
p_num;
ALTER TABLE shipments
DROP COLUMN qty;
Alla alternativ finns på:

2015-07-16
http://www.mysql.com/doc/A/L/ALTER_TABLE.html
KaU - Datavetenskap - DAV B04 - MGö
222
Importera data till tabell

Skapa en text-fil och se till att den har något
slags avgränsare


I Excel finns alternativet att spara som tabdelimited .txt-file, vilket är lämpligt eftersom det är
default för MySQL vid importering av data
Kopiera över filen till ert användarkonto

2015-07-16
(med ex. WinSCP)
KaU - Datavetenskap - DAV B04 - MGö
223
Importera data till tabeller
 Vid

2015-07-16
prompten är syntaxen sedan
mysql> LOAD DATA LOCAL INFILE
”/home/<användarnamn>/<filnamn.txt>” INTO
TABLE lab3_XX.<tabell-namn>;
KaU - Datavetenskap - DAV B04 - MGö
224
Testa tabellerna

All data i en tabell


SELECT * FROM <tabellnamn>;
SELECT fungerar till stort precis som förut
(förutom att du inte kan nästla SELECTsatserna)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
225
Ta bort data från tabeller

DELETE FROM <tabellnamn>;


Tar bort ALL data i tabellen!!!
DELETE FROM <tabellnamn> WHERE
<villkor>

2015-07-16
Tar bort alla rader i tabellen där villkoret matchats
KaU - Datavetenskap - DAV B04 - MGö
226
Logga ut

Logga ut från MySQL


quit
Logga ut ifrån SSH-programmet

2015-07-16
exit
KaU - Datavetenskap - DAV B04 - MGö
227
Mer information om MySQL

Officiell sajt


Dokumentation/tutorial


www.mysql.com
http://www.mysql.com/doc/
Tutorial MySQL/PHP

2015-07-16
http://www.mysql.com/articles/ddws/index.html
KaU - Datavetenskap - DAV B04 - MGö
228
DAV B04 Databasteknik
PHP
(-)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
229
PHP Hypertext Preprocessor

Scriptspråk på serversidan

2015-07-16
Innebär att webbservern översätter php-scripten
innan sidan skickas till webbläsaren, dvs.
webbläsaren ser bara vanlig html-kod
KaU - Datavetenskap - DAV B04 - MGö
230
PHP Grunderna

Exempel php-script på webbservern
//test.php
<HTML>
<HEAD>
<TITLE> Simple PHP Example</TITLE>
</HEAD>
<BODY>
<P>
<?php
print(“<B>Hello World!</B>");
?>
</P>
</BODY>
</HTML>
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
231
PHP Grunderna

Samma sida i webbläsaren
//test.php
<HTML>
<HEAD>
<TITLE> Simple PHP Example</TITLE>
</HEAD>
<BODY>
<P>
<B>Hello World!</B>
</P>
</BODY>
</HTML>
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
232
PHP Grunderna

Resultat i webbläsaren
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
233
Positiva aspekter

Oberoende av webbläsarens typ/version etc.

Tillgång till resurser på webbservern


Ex. MySQL-databaser
Saktar inte ned webbläsaren som exempelvis
JavaScript kan göra (prestandakraven ligger
istället på servern)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
234
PHP Syntax

Ett php-script börjar alltid med


Och slutar alltid med


<?php (eller <?)
?>
Kallas för scriptets avgränsare (delimiters)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
235
Skalära (primitiva) typer

boolean, bool: {true, false}

integer, int: {…-1, 0, 1, 2…}

float, double, real: {..1.1, 1.2..}

string: tecken inom ’ ’ eller ” ”
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
236
Komplexa (sammansatta)
typer

arrayer (lista, haschtabell, samling…) där
nyckeln är antingen är av typen integer eller
string

objekt (ej i denna kurs om ni inte absolut
känner för det…)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
237
Variabler

Börjar alltid med ett dollartecken ( $)


$name, $i, $test
Är typlösa 8!




2015-07-16
$name = ”Joppe”;
$i = 1;
$test = 4.7;
$test = ”Kalle”;
KaU - Datavetenskap - DAV B04 - MGö
238
Operatorer

=, ==, !=, !, +, -, *, /, ++, --, &&, || etc....




$i = 1;
$i = $i + 2;
$i++;
//$i = 3
//$i = 4
Dvs. precis som i C/C++
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
239
”Utökningar” som kan vara
bra att känna till
AND, OR
 Punktoperatorn (.) som används för att slå
ihop strängar






2015-07-16
$fname = ”Joppe”;
$sname = ”Karlsson”;
$name = $fname . ” ” . $sname; //Joppe Karlsson
$name = ”$fname $sname”;
$name = ’$fname $sname’;
KaU - Datavetenskap - DAV B04 - MGö
//samma resultat
//samma resultat
240
Utskrift

print() eller echo()




print(”Hello World”);
echo(”Hello World”);
print($fname . ” ” . $sname);
Egentligen inte funktioner, utan
språkkonstruktioner...


2015-07-16
print ”Hello World”;
echo $fname . ” ” . $sname;
KaU - Datavetenskap - DAV B04 - MGö
241
Reserverade ord
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
242
Selektioner

if-else
if ($var1 == true)
{
//...
}
else if($var2 == true)
{
//...
}
else
{
//...
}
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
243
Iterationer

while
while ($expr)
{
//...
}

for
for($i = 0; i < $size; $i++)
{
//...
}
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
244
Iterationer

do-while
$i = 0;
do {
//...
}while ($i>0);

foreach
foreach($array_expr as $value)
//...
foreach($array_expr as $key => $value)
//...
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
245
Funktioner
function add ($arg, $arg_2)
{
echo "Example function.\n";
$retval = $arg1 + $arg2;
return $retval;
}
…
$sum = add(1, 2);
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
246
Koppla upp mot MySQL

mysql_connect(<address>, <username>, <password>);

Exempel
$dbcnx = @mysql_connect("localhost", ”picard", ”password");
if (!$dbcnx){
print("<P>Unable to connect to the " .
"database server at this time.</P>" );
exit();
}
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
247
Välj databas

bool mysql_select_db (string databas [, uppkoppling])

Exempel
if (! @mysql_select_db(”lab3_XX") )
{
print( "<P>Unable to locate the " .
"database at this time.</P>" );
exit();
}
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
248
Kör en SQL-fråga

mysql_query(string sql_question [,
uppkoppling] )

Vad funktionen returnerar varierar:

vid CREATE/INSERT/UPDATE/DROP etc.
returneras true/false

vid SELECT returneras en resultatmängd
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
249
Kör en SQL-fråga

Exempel
$result = mysql_query(”SELECT * FROM Supplier ”);
if ( !$result )
{
print("<P>Error performing query: " .
mysql_error() . "</P>");
exit();
}
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
250
Hantera
resultatmängden
Hämta resultatet rad efter rad…

while ( $row = mysql_fetch_array($result) )
{
print( ”<P>” . $row[”snum”] . ” ” . $row[”sname”] .
”</P>”);
}
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
251
Formulär

<FORM ACTION=”vad som skall hända"
METHOD = POST>
…
</FORM>

2015-07-16
där ”vad som skall hända” exempelvis kan vara
att ladda in en ny sida, eller maila till någon
person...
KaU - Datavetenskap - DAV B04 - MGö
252
Formulär

Exempel
<FORM ACTION="<?php echo($PHP_SELF); ?>"
METHOD = POST>
…
</FORM>
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
253
Textboxen

<INPUT TYPE="text" NAME="name" SIZE="30">
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
254
Pop-up boxen

<SELECT NAME=”color" SIZE="1">
<OPTION SELECTED>Blue
<OPTION>Red
</SELECT>
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
255
Sänd eller återställ
informationen i formuläret

<INPUT TYPE="submit” NAME=”submit”>
<INPUT TYPE="reset” NAME=”reset”>
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
256
Viktigt att veta om PHP och
formulär

Namnet på textboxen, pop-up boxen, knapparna
osv. blir automatiskt variabler i PHP!
<?php
if($submit){
//Ok, arbeta mot databasen
}
?>
<FORM ACTION="<?php echo($PHP_SELF); ?>" METHOD=POST>
<INPUT TYPE="submit” NAME=”submit”>
</FORM>
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
257
Exempel på PHP och
formulär
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
258
PHP och reguljära uttryck

Reguljära uttryck kan användas för att
kontrollera att det användaren matar in är i
rätt form för en given kolumn

2015-07-16
exempelvis att ett Bach-nummer måste vara på
formen BWV XXX(X) där X är en siffra mellan 0-9
KaU - Datavetenskap - DAV B04 - MGö
259
Exempel på reguljära
uttryck

Sök efter strängen ”Now” i meningen ”Now is the
time!”
2015-07-16

if(ereg(”Now”, ”Now is the time!”) == true)
print(”Found”);

if(ereg(”^Now”, ”Now is the time!”) == true)
print(”Found”);

if(ereg(”Now$”, ”Now is the time!”) == true)
print(”Found”); //Hittas ej
KaU - Datavetenskap - DAV B04 - MGö
260
PHP och reguljära uttryck

Bara bokstäver/siffror i ex. en variabel
if(ereg(”[A-Za-z0-9]*”, $test) == true)
print(”Correct”);
else
print(”Error”);



2015-07-16
* står för 0 eller flera gånger
+ står för 1 eller flera gånger
{n,m} står för att det finns mellan minst n till som mest
m gånger
KaU - Datavetenskap - DAV B04 - MGö
261
PHP och reguljära uttryck

Sant eller falskt?



ereg(”^Now [a-z ]+$”, ”Now is the time!”)
ereg(”^Now [a-z ]+!$”, ”Now is the time!”)
Vill man sedan inte bry sig om stora eller små
bokstäver så använder man istället

2015-07-16
eregi()
KaU - Datavetenskap - DAV B04 - MGö
262
Mer information

Manualer/tutorials/sökning


Tutorial om PHP och MySQL


http://www.mysql.com/articles/ddws/2.html
Tutorial om html, formulär osv..


www.php.net eller www.se.php.net
www.htmlgoodies.com
Information om laborationen

2015-07-16
http://enterprise.cse.kau.se
KaU - Datavetenskap - DAV B04 - MGö
263
DAV B04 Databasteknik
Återhämtning
(kap 21)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
264
Återhämtning (Recovery)

Innebär att man:

återhämtar/återställer databasen till dess senast
konsistenta tillstånd efter det att en transaktion
misslyckats


2015-07-16
Disk-krasch, datorfel, transaktionsfel, katastrof osv.
Använder vanligtvis systemloggar för att återställa
databasen
KaU - Datavetenskap - DAV B04 - MGö
265
Repetition transaktioner

En transaktion är en mängd operationer, utförda i sekvens, som
tillsammans bildar en logisk enhet.
BEGIN TRANSACTION ;
INSERT ( { S#: 'S5', P#: 'P1', QTY:1000 } ) INTO SP ;
IF any error occurred THEN GO TO UNDO ;
UPDATE P WHERE P# = 'P1' TOTQTY := TOTQTY + 1000;
IF any error occurred THEN GO TO UNDO ;
COMMIT TRANSACTION ;
GO TO FINISH ;
UNDO :
ROLLBACK TRANSACTION ;
FINISH :
RETURN ;

En transaktion förflyttar databasen från ett konsistent tillstånd till ett
annat konsistent tillstånd, men garanterar inte konsistens under tiden
transaktionen utförs.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
266
Strategier vid återhämtning

Vid allvarligare fel

backup av databasen används för att säkerställa
ett konsistent tillstånd hos databasen

alla operationer sedan backupen togs tills det att
feltillståndet inföll görs sedan om
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
267
Strategier vid återhämtning

Mindre allvarliga fel

vrid tillbaka ändringar som orsakat inkonsistens
genom att göra operationerna ogjorda

det kan också vara nödvändigt att göra om vissa
operationer för att återställa databasen

jobbar efter avstämningar i systemets logg
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
268
Mindre allvarliga fel

Två olika tekniker

uppskjuten uppdatering (deferred update)

omedelbar uppdatering (immediate update)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
269
Caching

Caching av disk-block
1.
2.
3.

data som skall uppdateras cachas i
primärminnet
datan uppdateras i primärminnet.
datan skrivs tillbaka till disken.
Speciellt cachningsminne för DB

2015-07-16
DBHS cache
KaU - Datavetenskap - DAV B04 - MGö
270
Strategier för återskrivning

In-place updating


Skriver över ursprungsvärdet
Shadowing

2015-07-16
Skriver en uppdaterad buffer till ett annat
diskutrymme, vilket innebär att flera versioner av
datan existerar.
KaU - Datavetenskap - DAV B04 - MGö
271
Loggningsinformation

Två typer av loggningsinformation
Information som behövs för UNDO
1.
•
Information som behövs för REDO
2.
•
2015-07-16
Nya värdet (AFIM)
Gamla värdet (BFIM)
KaU - Datavetenskap - DAV B04 - MGö
272
Write-Ahead loggning

De loggblock som innehåller information om
datan som skall uppdateras måste skrivas till
disk innan själva datablocket skrivs till disken
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
273
Ansatser till återhämtning

Terminologi för när information kan skrivas
från cachen till disken...

no-steal


steal

2015-07-16
cache-info som blivit uppdaterad av en transaktion
kan inte skrivas till disken innan transaktionen kommit
till sin commit-punkt.
uppdaterad information i buffern (cache-minnet) kan
skrivas innan transaktionen nått commit-punkten.
KaU - Datavetenskap - DAV B04 - MGö
274
Ansatser till återhämtning

force approach


no-force approch

2015-07-16
all information som blivit uppdaterad av en
transaktion skrivs omedelbart till disken så fort en
transaktion nått sin commit-punkt.
uppdaterad information behöver inte skrivas till disk
direkt efter att en transaktion nått sin commit-punkt.
KaU - Datavetenskap - DAV B04 - MGö
275
Ytterligare
loggningsinformation

Checkpoints

sådan information skrivs till loggen när systemet
uppdaterar databasen med alla DBHS [cache]
buffrar som har blivit modifierade

alla transaktioner som har sina commit-punkter i
loggen innan en checkpoint behöver inte få sina
WRITE-operationer omgjorda ifall det blir en
krasch av något slag
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
276
Strategi för checkpoints
1.
Frys temporärt exekveringen av alla transaktioner
2.
Gör en force-write av alla buffrar i primärminnet
som har blivit uppdaterade (till disk)
3.
Skriv in en checkpoint till loggen och gör en forcewrite även på loggen (till disk)
4.
Påbörja exekvering av transaktionerna igen
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
277
Rollback

Om en transaktion misslyckas kan det vara
nödvändigt att återställa uppdaterade värden
till de gamla värdena (BFIM). Kallas för att
man gör en rollback.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
278
Cascading rollback

Vid beroendeförhållanden

Om en transaktion T misslyckas och det
måste utföras en rollback på T så måste det
även utföras en rollback på alla transaktioner
som läst värden som uppdaterats av T...
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
279
Illustration av cascading
rollback

Fig. 21.1
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
280
Illustration av cascading
rollback
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
281
Illustration av cascading
rollback
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
282
Uppskjuten uppdatering

Skjuter upp eventuella uppdateringar till
databasen tills dess att transaktionen avslutat
sin exekvering och nått sin commit-punkt
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
283
Strategi för uppskjuten
uppdatering
1.
En transaktion kan inte ändra databasens
innehåll förrän den nått sin commit-punkt
2.
En transaktion når inte sin commit-punkt
förrän alla dess uppdateringsoperationer
har blivit inskrivna i loggen och loggen har
blivit force-written till disken

2015-07-16
NO-UNDO/REDO recovery algorithm
KaU - Datavetenskap - DAV B04 - MGö
284
Uppskjuten uppdatering i
enanvändarmiljö

Fig. 21.2
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
285
Uppskjuten uppdatering i
ett fleranvändarsystem

För att hantera concurrency och återhämtning

en transaktion skriver ingen information till databasen
förrän efter dess commit-punkt (lyckad exekvering) =>
en transaktion behöver aldrig göra roll back pga. en
misslyckad transaktion

en transaktion läser aldrig ett värde som blivit
uppdaterat av en transaktion som inte nått sin commitpunkt, eftersom värdet förblir låst tills dess att commitpunkten nåtts (ingen cascading rollback)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
286
Återhämtning

Uppskjuten uppdatering i ett fleranvändarsystem
(fig. 21.3)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
287
Omedelbar uppdatering

När en transaktion gör en uppdateringsoperation uppdateras
databasen omedelbart.
 uppdateringsoperationen måste dock skrivas till loggen
innan uppdateringen så att återhämtning kan ske

UNDO/NO-REDO Algorithm
 alla uppdateringar skrivs till DB innan transaktionen gjort
commit

UNDO/REDO Algorithm
 transaktioner får göra commit innan alla dess
uppdateringar skrivits till DB
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
288
Shadowing pages

NO-UNDO/NO-REDO recovery algorithm

alla uppdateringar görs hela tiden i en ny katalog
och den gamla versionen sparas i en s.k.
skuggkatalog

vid fel byter man helt enkelt tillbaka till den gamla
katalogen
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
289
Illustrering av Shadowing
pages
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
290
Återhämtning i ett system
med flera databaser

Two-phase commit används om en given
transaktion involverar flera "resurshanterare"


t ex i ett distribuerat databassystem
Om en transaktion uppdaterar två olika
databaser, får det inte hända att
uppdateringar görs i den ena databasen men
inte i den andra
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
291
Återhämtning i ett system
med flera databaser

En komponent i systemet, koordinatorn, har
som uppgift att garantera att båda
databaserna utför samma operation (båda
gör COMMIT eller båda gör ROLLBACK),
även om systemet kraschar mitt i
processen.

Om koordinatorn bestämmer att
operationen skall vara COMMIT gås två
faser igenom...
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
292
Strategi för återhämtning i ett
system med flera databaser

Fas 1

koordinatorn instruerar alla resurshanterare att göra sig
klara för att avsluta transaktionen

det betyder att alla deltagare i processen måste skriva
all information de har om transaktionen till loggen

om detta gick bra, svarar resurshanteraren "OK", annars
"not OK" till koordinatorn.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
293
Strategi för återhämtning i ett
system med flera databaser

Fas 2

när koordinatorn har fått svar från alla deltagare, skriver
den sitt beslut till sin egen logg

om alla svar var "OK" blir beslutet "commit”, annars blir
det "rollback”

koordinatorn informerar sedan alla deltagare om sitt
beslut, vilket de alla måste rätta sig efter
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
294
Återhämtning i ett system
med flera databaser

Om systemet kraschar mitt i processen, letar
omstartproceduren efter koordinatorns beslut
i loggen.

Om den hittar det, kan processen fortsätta
där den slutade.

Om inte, så antas beslutet ha varit "rollback".
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
295
DAV B04 Databasteknik
Säkerhet
(kap 22)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
296
Olika säkerhetsaspekter

Lagliga och etiska aspekter

Policyfrågor

Säkerhet på hårdvarunivå

Säkerhet i operativsystemet

Säkerhet i nätverket

Säkerhet i databassystemet
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
297
Säkerhetsmål (allmänt)

Sekretess (Confidentiality)


Integritet (Integrity)


förhindrande av att information görs tillgänglig för
obehöriga
förhindrande av obehörig påverkan av information
Tillgänglighet (Availability)

2015-07-16
information skall finnas tillgänglig för den
behörige användaren
KaU - Datavetenskap - DAV B04 - MGö
298
Säkerhetsmekanismer i
databaser

Två typer av mekanismer används:



discretionary control
 användare beviljas accessrättigheter till objekt (tabeller,
kolumner, rader mm) i databasen på individuell basis
mandatory control
 Användare och objekt delas in i olika säkerhetsklasser
För att dessa mekanismer skall fungera krävs
autentisering av användarna
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
299
Discretionary Control

Är den vanligaste mekanismen

Bygger på att man beviljar (grant) eller drar undan
(revoke) olika privilegier

Privilegier på kontonivå specificeras av DBA

Privilegier på relationsnivå kan specificeras av den
som skapat relationen (och som själv äger alla
rättigheter)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
300
Privilegier på relationsnivå

SELECT


INSERT, UPDATE, DELETE


för att kunna modifiera data
REFERENCES


för att kunna hämta data
för att kunna referera en relation t ex i en integritetsregel
WITH GRANT OPTION

2015-07-16
för att en användare ska kunna ge privilegier vidare
KaU - Datavetenskap - DAV B04 - MGö
301
SQL-syntax

GRANT ALL [ PRIVILEGES ] |





[ SELECT ] [ INSERT ] [ DELETE ]
[ UPDATE [ (kolumnlista) ]
ON tabellnamn
TO namnlista | PUBLIC
[ WITH GRANT OPTION ]
OBS!!! Allting som inte är uttryckligen tillåtet, är
förbjudet.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
302
Exempel på säkerhetsregler
med GRANT
GRANT ALL PRIVILEGES
ON cust_table
TO lewis, agganis
WITH GRANT OPTION.
GRANT SELECT, UPDATE (credit_limit)
ON cust_table
TO garcia.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
303
Exempel på säkerhetsregler
med REVOKE

Det går också att dra tillbaka rättigheter med
REVOKE
REVOKE DELETE, UPDATE
ON cust_table
FROM jones, brown.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
304
exempel på en värdeoberoende
säkerhetsregel
GRANT SELECT ( S#, SNAME, CITY )
ON S
TO Jacques, Anne, Charley.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
305
Exempel på en värdeberoende
säkerhetsregel
GRANT SELECT, INSERT, UPDATE
( SNAME, STATUS ), DELETE
ON S WHERE S.CITY = 'Paris’
TO Dan, Misha.

Dessa användare kan se en horisontell delmängd
av S
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
306
Exempel på osynliga villkor
GRANT SELECT ( S#, SNAME )
ON S WHERE S.STATUS > 50
TO Judy, Paul.

Attributet STATUS används här som villkor även fast
det inte är synligt för användarna.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
307
Exempel på en kontextberoende
säkerhetsregel
GRANT SELECT, UPDATE ( STATUS )
ON S
WHERE DAY ( ) IN ( 'mon', 'tue', 'wed', 'thu', 'fri' )
AND TIME ( ) >= '9:00 AM'
AND TIME ( ) <= '5:00 PM'
TO Purchasing.
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
308
Säkerhetsregler på vyer

Anta att vi har definierat en vy SSQ enligt
följande:
CREATE VIEW SSQ AS
SELECT S#, SUM(QTY)
FROM SP
GROUP BY S#
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
309
Säkerhetsregler på vyer

Då kan vi skriva följande säkerhetsregel:
GRANT SELECT
ON SSQ
TO Fidel.

Fidel har bara rättigheter att se viss statistik från
basrelationen SP, inte några detaljer

Detta är ett exempel på hur man kan använda vyer
för att gömma information
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
310
Audit Trails

En audit trail är en speciell logg där detaljer om alla
operationer som har utförts registreras

Information som en audit trail kan innehålla:







2015-07-16
hur operationen såg ut
från vilken terminal operationen utfördes
vilken användare som utförde operationen
datum och tid för operationen
berörda relationer, tupler och attribut
de gamla värdena
de nya värdena
KaU - Datavetenskap - DAV B04 - MGö
311
Mandatory control

Används i databaser som har höga krav på
säkerhet

Ett antal säkerhetsklasser definieras, tex top
secret(TS), secret(S), confidential(C) och
unclassified(UC) där TS >= S >= C >= UC

Den vanligaste klassificeringsmodellen är
den sk Bell-LaPadula-modellen
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
312
Bell-LaPadula-modellen

Varje subjekt (användare, konto, program)
och objekt (relation, tuple, attribut, vy,
operation) tilldelas en av säkerhetsklasserna
TS, S, C eller UC

klassificering av ett subjekt: class(S)

klassificering av ett objekt: class(O)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
313
Bell-LaPadula-modellen

Två regler:

Ett subjekt S får bara läsrättigheter till ett objekt O
om class(S) >= class(O) (simple security property)

Ett subjekt S får bara skrivrättigheter till ett objekt O
om class(S) <= class(O) (*-property eller star
property)
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
314
Statistiska databaser

Användare får bara ställa frågor m h a count,
sum, min, max osv.

Problemet med sådana databaser är att det
ofta går att få svar på en otillåten fråga
genom att ställa ett antal tillåtna frågor….
2015-07-16
KaU - Datavetenskap - DAV B04 - MGö
315
Relationen Stat
NAME
Alf
Bea
Cary
Dawn
Ed
Fay
Guy
Hal
Ivy
Joy
2015-07-16
SEX
M
F
F
F
M
F
M
M
F
F
KIDS
3
2
0
2
2
1
0
3
4
1
OCCUPATION
Programmer
Physician
Programmer
Builder
Clerk
Artist
Lawyer
Homemaker
Programmer
Programmer
KaU - Datavetenskap - DAV B04 - MGö
SALARY
50K
130K
56K
60K
44K
30K
190K
44K
64K
60K
TAX
10K
10K
18K
12K
4K
0K
0K
2K
10K
20K
316