Ingen bildrubrik - Karlstads universitet

Databaser och databassystem
• Vad är en databas?
• Vad har en databas för egenskaper?
• Vilka olika typer av användare finns
det?
• Fördelar/nackdelar
• Kort historik om databaser
• Hur är databaser uppbyggda?
(arkitektur)
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
1
Grundläggande terminologi
• En databas är en samling av relaterad data
• Databasen representerar någon aspekt av verkligheten, ibland
kallad minivärlden eller University of Discourse (UoD)
• Ett databashanteringssystem (DBHS) är ett
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”
• Ett databas-system består av DBHS-mjukvaran tillsammans
med själva databasen (applikationer, användare)
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
2
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
3
Egenskaper hos databas-system
• I DBHS lagras en beskrivning av databasen (struktur,
datatyper, integritetsregler mm)
• En datamodell används för att gömma
implementationsdetaljer och i stället ge användarna
en logisk vy av databasen
• Data i en databas är:
– integrerad (”one fact in one place”)
– delad (flera användare kan använda databasen samtidigt)
• Manipulation av databasen görs med ett frågespråk
(oftast SQL)
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
4
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
5
Egenskaper hos databas-system
(forts)
• Redundansen kan minskas
• Säkerheten kan förbättras
• Flera olika användargränssnitt
• Integriteten kan upprätthållas
• Stöd för komplexa relationer mellan data
• Stöd för återhämtning av data
• Tiden för applikations-utveckling kan minskas
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
6
Nackdelar 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
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
7
Användare av databas-system
 Databasadministratörer (DBA)
 Applikationsprogrammerare
 Slutanvändare
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
8
Kort historik…
• 1965-1980 användes främst hierarkiska databaser
och nätverksdatabaser
• Från ca 1980 har de flesta nya databas-system varit
relationsdatabaser
• DB2, ORACLE, INFORMIX, SYBASE
• SQL Server, Access (Microsoft)
• MySQL (Linux)
• Från ca 1990 har också andra typer av databassystem utvecklats, t ex objektorienterade och
objektrelationella databaser
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
9
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
10
Datamodeller
• En datamodell är en samling koncept för att beskriva
databasens struktur, de integritetsregler den måste följa och
oftast också de operationer som går att göra på databasen
Olika typer av datamodeller
• Hö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
• Logiska modeller använder koncept som kan förstås av
användare men inte ligger alltför långt ifrån hur data
organiseras i databasen.
• Lågnivå-modeller använder koncept som beskriver i detalj hur
data är lagrad rent fysiskt
• Beskrivningen av databasen kallas databasens schema och kan
visas i ett schema-diagram
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
11
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
LENGTH = 20
TYPE = BYTE(6), OFFSET = 20
TYPE = BYTE(6), OFFSET = 6, INDEX = EMPX
TYPE = BYTE(4), OFFSET = 12
TYPE = 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.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
12
The three-schema
architecture
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
13
Treschema-arkitekturen
• Definierar scheman på tre nivåer.
• Interna schemat – beskriver fysiska
lagringsstrukturer och access-vägar
• Konceptuella schemat – beskriver hela
databasen på en logisk nivå
• Externa scheman – beskriver de olika
användarvyerna
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
14
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: Det går att göra
ändringar i det interna schemat utan att det
påverkar det konceptuella schemat
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
15
Databasens gränssnitt
• Varje användare kommunicerar med databasen m h a
ett språk.
• Programmerare använder antingen ett konventionellt
programspråk såsom C eller java, eller ett 4GL-språk.
• En slutanvändare använder antingen något frågespråk
( t ex SQL) eller kommunicerar med databasen genom
något special-designat menysystem.
• Varje sådant språk inkluderar ett underspråk (data
sublanguage eller DSL), som sägs vara inbäddat i
värdspråket (host language).
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
16
Ett DSL består av:
• DDL – Data Definition Language. Den del av språket
som används för att definiera de olika objekten som
databasen består av.
• DML – Data Manipulation Language. Den del av
språket som används för att manipulera eller utföra
operationer på sådana objekt.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
17
Applikationer
• Applikationer skrivna av användaren
– Applikationer skrivna i något programspråk (t ex C) med
inbäddad SQL eller applikationer skrivna i SQL.
• 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, CASE-verktyg
• Program som används för att administrera
databasen
- Laddningsprogram, backup-program, reorganisationsprogram,
statistik- och analysprogram.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
18
Katalogen (Data Dictionary)
• Ett DBHS måste innehålla en katalog eller ett data
dictionary, där detaljerad information om systemets
olika delar lagras.
• Exempel på vad som lagras är information om
tabeller, index, användare, integritets- och
säkerhetsregler.
• Katalogen lagras också som tabeller, så att det går
att ställa frågor till den på samma sätt som till
databasen.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
19
Översikt av kursen
 Genomgång av relationsmodellen (strukturer, integritet,
operationer)
 Genomgång av SQL + praktiska övningar
 Konceptuell databasdesign (designprocessen, E/R-modellen,
mappning av E/R-modellen till relationsmodellen, funktionella
beroenden och normalisering)
 Fysisk databasdesign (främst indexering)
 Transaktionshantering (concurrency, recovery)
 Databassäkerhet
 Web-databaser och distribuerade databaser
 Laborationer: teori, design, implementation och
användargränssnitt.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
20
Relationsmodellen
• En formell teori som baserar sig på (främst) mängdlära och
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.
• Relation är den matematiska termen för tabell.
• En databas ses som en mängd relationer: DB = {R1, R2,…Rn}
• Relationsdatamodellen beskriver ett sätt att se på data från en
logisk synvinkel. Tre aspekter av data tas upp i modellen:
• 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
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
21
Relationer
 En relations schema består av en mängd attribut:
R = {A1, A2, …An}, där R är relationens namn.
 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.
 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: t = {v1,v2,…vn} där
varje värde är hämtat från motsvarande domän
 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
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
22
Example of a Relation
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
23
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.
Ex 1.
• typedef enum{London, 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.
Ex 2.
• CREATE DOMAIN City Char(9) DEFAULT ’???’
• CHECK (VALUE IN (’London’, ’Paris’, ’Athens’, ’New York’,
’Stockholm’, ’Rome’, ’???’ ) ).
De flesta av dagens relationsdatabaser stödjer dock bara primitiva
datatyper som CHARACTER, INTEGER och FLOAT.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
24
Egenskaper hos en relation
 Det finns inga duplicerade tupler.
 Tuplerna är oordnade (Det finns ingen
”första” eller ”sista ”tuple”).
 Attributen är oordnade (Det finns inget
”första” eller ”sista” attribut).
 Alla värden är atomära (odelbara). Detta
betyder att en relation alltid är i första
normalformen.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
25
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.
• 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.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
26
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.
Ett system har logiskt dataoberoende om användare och applikationer
inte påverkas av ändringar i databasens logiska struktur.
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.
•
Logiskt dataoberoende kan bara uppnås om systemet stödjer
operationer på vyer på ett korrekt sätt.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
27
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)
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
28
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.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
29
Integritet (forts)
• Exempel på integritetsregler för STUDENTdatabasen
- CreditHours i relationen COURSE måste vara större än noll.
 Grade i relationen GRADE_REPORT måste ha värdet A, B, C,
D eller F
 CourseNumber i relationen COURSE måste bestå av ett
antal bokstäver följt av fyra siffror
• Dessa regler är databas-specifika (eller
semantiska), dvs de gäller bara för en specifik
databas.
• Relationsdatamodellen innehåller också två generella
integritetsregler, dvs regler som gäller för alla
databaser. Dessa handlar om (a) kandidatnycklar (och
primärnycklar) och (b) främmandenycklar.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
30
Kandidatnycklar
• Definition av Kandidatnyckel (K):
• 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).
• Notera: 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.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
31
Kandidatnycklar (forts)
• Kandidatnycklar definieras som mängder av attribut.
• Ex:
STUDENT:
K = {StudentNumber}
COURSE:
K = {CourseNumber}
GRADE_REPORT: K =
{StudentNumber,SectionIdentifier}
• 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.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
32
Primä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.
• 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.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
33
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.
 Nulls innebär vissa logiska svårigheter, t ex hur det
egentligen skall tolkas.
• Tolkningar av null
-
värde okänt
egenskapen ej relevant
värde finns inte
värde odefinierat
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
34
Entitetsintegritet
• Tillsammans med primärnycklar finns i
relationsmodellen 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.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
35
Främmandenycklar
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 primärnyckel PK, 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å PK i någon tuple i
R1.
• Varje attribut i en främmandenyckel måste definieras på samma
domän som det motsvarande attributet i den matchande
primärnyckeln.
• Främmande-till-primärnyckel referenser sägs ibland vara det
"lim" som håller ihop databasen. Dessa sägs representera
relationer mellan olika tupler.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
36
Referensintegritet
• Tillsammans med främmandenycklar, så finns i
relationsdatamodellen regeln 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).
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
37
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 ?
• Vad skall t ex hända om någon försöker ta bort eller uppdatera
StudentNumber ’17’ i relationen STUDENT?
• Två möjligheter (åtminstone) finns för båda operationerna:
– RESTRICTED - operationerna är förbjudna om ’17’ också finns i
GRADE_REPORT
 CASCADES - operationerna utförs också på de tupler som
innehåller ’17’ i GRADE_REPORT.
• För varje främmandenyckel i databasen skall databasdesignern
specificera vad som skall hända vid delete eller update av den
matchande primärnyckeln.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
38
Semantiska integritetsregler
 Semantiska integritetsregler, även kallade business
rules, är sådana som bara gäller för en specifik
databas.
 Regler av typen ”Ingen kan ha en lön som är mindre än
10000” kan specificeras med domänregler.
 Regler av typen ”Varje kurs måste tillhöra en
avdelning” specificeras genom att ange NOT NULL
för attributet Department i COURSE
 Regler av typen ”Ingen lärare får ge mer än fyra
kurser per termin” kan specificeras genom triggers
eller assertions
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
39
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
• Operationer
– De speciella relationsoperationerna select, project, join och
division
– De traditionella mängdoperationerna union, intersection,
difference och cartesian product.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
40
SELECT 
 SELECT returnerar en relation som består av alla
tupler från en relation som uppfyller ett visst villkor.
 SELECT-operationen benämns <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
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
41
PROJECT 
 PROJECT returnerar en relation som består av alla
tupler i en relation sedan vissa attribut har
utelämnats
 PROJECT-operationen benämns <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
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
42
Sekvenser av operationer och
RENAME-operationen

Flera operationer kan kombineras för att bilda ett algebraiskt uttryck
(en fråga)

Exempel: Hämta namn och vikt för produkter i London:
 PNAME,WEIGHT ( CITY=’London’(P) )
•
Alternativt så kan man specificera temporära relationer för varje steg:
LONDON_PROD <-
R <-
•
CITY=’London’ (P)
PNAME,WEIGHT(LONDON_PROD)
Attribut i den resulterande relationen kan ges andra namn om man så
vill:
LONDON_PROD <-
PNAME,WEIGHT
(P)
R(Produktnamn,Vikt) <-
 PNAME,WEIGHT (LONDON_PROD)
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
43
Traditionella mängdoperationer
• Dessa binära operationer fungerar som motsvarande
operationer i matematiken, med en viktig skillnad:
operanderna måste vara typkompatibla, dvs bestå av
samma slags tupler (gäller ej produkt).
• UNION: R1  R2
• INTERSECTION: R1  R2
• DIFFERENCE: R1 – R2
• 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. Är meningslös i sig själv.
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
44
JOIN – operationer
 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.
 EQUIJOIN kallas operationen om villkoret är ”=”
 NATURAL JOIN är det samma som EQUIJOIN,
men där join-attributet i R2 är borttaget i resultatrelationen.
 NATURAL JOIN benämns R1 * R2 eller
R1 * <join attribute1>, <join attribute2> R2
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
45
DIVISION-operationen
 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 R1  R2
Karlstads Universitet
Datavetenskap
Databasteknik
Katarina Asplund
46