Transcript Databashantering
Databaskonstruktion
@ B2KUNO Johan Eklund
Lästips
Connolly T., Begg C. (2002).
Database systems
.
http://www.w3schools.com/sql Eklund, Johan (2005). Tio steg till en databas i Microsoft Access. http://www.adm.hb.se/~jek/b2kuno/tensteps.html
Data och information
Data
: numeriska värden och text som utan kontext saknar självständig mening
Information
: en uppsättning data som genom kontext och/eller struktur har självständig mening
Kunskap
: information som har blivit medvetandegjord
Informationsteori (Shannon 1948)
Information kan ses som ett
meddelande
från en sändare till en mottagare Mängden information i ett meddelande beräknas på basis av hur mycket
nytt
eller
oväntat
meddelandet innehåller H b ( x ) i n 1 p ( i ) log b p ( i )
Vad är en databas?
En samling av logiskt organiserade data Genom att använda en databas kan dataentiteter effektivt lagras, relateras till varandra (och därmed bilda information) samt hämtas upp (återvinnas) Databas dokument Databas databashanteringssystem
Databashanteringssystem
DBMS, Database Management System Ett programvarusystem som möjliggör för användare att definiera, skapa, underhålla och kontrollera tillgång till en databas Exempel: Access, SQL Server, Oracle, MySQL, FileMaker
Datamodeller
Datamodell: en övergripande ramverk för hur data skall organiseras i en databas Objektorienterade
Post-orienterade
Nätverksdatamodellen Hierarkiska datamodellen
Relationsdatamodellen
Nu blir det lite matematik...
Mängdlära (set theory)
En
mängd
är en oordnad samling av unika objekt (dubbletter förekommer inte) Notation:
A
= {10, 3, 7, 24, 39} En
tipel
(eng. tuple) är en ordnad sekvens av objekt där dubbletter kan förekomma Notation:
A
= (2, 5, 5, 3, 8)
Tillhörighet
x
A
objektet
x
tillhör mängden
A
= {apelsin, banan, citron},
x
= banan
A
x
A
objektet
x
tillhör inte mängden
A
= {apelsin, banan, citron},
x
= äpple
A
Delmängd
B
A B
är en äkta delmängd till
A
= {3, 7 , 10, 24 , 39 },
B
= {7, 24, 39}
A
B
A B
är en delmängd till
A
A
= {3, 7, 10, 24, 39},
B
= {3, 7, 10, 24, 39}
Union och snitt
A
B
unionen av mängderna
A A
= {3, 5, 8}
B
= {5, 6, 8}
A
och
B B
= {3, 5, 6, 8}
A
A B
snittet av mängderna
A
= {3, 5 , 8 }
B
= { 5 , 6, 8 }
A
B
och
B
= {5, 8}
Cartesisk produkt
En cartesisk produkt mängder
A
och
B A
B
av två är mängden av alla ordnade par (
a
,
b
) som kan bildas från elementen i
A
respektive
B
A
B
{(
a
,
b
) |
a
A
och
b
B
}
Relation
En relation R är (informellt) en struktur för påståenden om tillstånd Formellt: R A 1 A 2 … A n Denna bok
skriven av har titeln
Örnens Gåva,
är
Carlos Castaneda och
är utgiven år
1986 (Örnens Gåva, Carlos Castaneda, 1986)
Relationsdatamodellen
Codd, E. F. (1970).
A relational model of data for large shared data banks
.
Data struktureras i relationer Relationer lagras som poster i tabeller Poster identifieras genom nycklar
Relationsmodellen
Relation Attribut
Plagg Färg
Armébyxa Grå Chinos Jeans Beige
Storlek
52 54 Indigoblå 108
Pris
249 199 199 Tipel
Tabeller, fält och poster
Tabell Fält
Plagg Färg
Armébyxa Grå Chinos Jeans Beige
Storlek
52 54 Indigoblå 108
Pris
249 199 199 Post
Attribut / egenskaper / fält
När du vet beskriva är det dags att fundera på
vad hur
du skall Egenskaper / attribut Fält 235, 2006-01-16, ”Information Retrieval”
Datatyper
Anger hur attributvärden är beskaffade Numeriskt värde [Tal] Sträng (sekvens av tecken där minst ett är icke-numeriskt, "text") [Text] Datum [Datum/tid]
Datatyper
PK artnr färg storlek pris
plagg
Text Text Tal Valuta
Nycklar
Primärnyckel (primary key):
ett fält, eller en kombination av fält, som kan användas för att unikt identifiera en post
Naturlig primärnyckel
resp
surrogatnyckel Främmande nyckel (foreign key):
en kombination av fält, som pekar på en primärnyckel ett fält, eller
Nycklar
låntagare
PK kortnr efternamn förnamn telefon
lån
FK kortnr bok datum
Frågespråk
Relationsalgebra
Föreslagen av E.F. Codd som komplement till relationsdatamodellen Språk innehållande operationer på relationer (tabeller) Bygger på
mängdlära
Föregångare till dagens frågespråk
Relationsalgebra
Urval: age ≥ 30 (Person) Projektion: forename,surname (Person) Cartesisk produkt: Person × Resultat Union: age ≥ 30 (Person) surname = Karlsson (Person) Snitt: age ≥ 30 (Person) surname = Karlsson (Person)
SQL
, Structured Query Language Generellt databasspråk Är ett: datadefinitionsspråk (DDL) datamanipulationsspråk (DML) Deklarativt språk: man anger
vad
skall utföras, inte
hur
som det skall gå till
Kommandon i SQL
Varje sats i SQL innehåller ett
kommando
som anger vilken operation som skall utföras
SELECT
– hämta
INSERT
– lägg till
UPDATE
– uppdatera / modifiera
DELETE
– ta bort
En SELECT-sats
Tabell Fält
Plagg Färg
Armébyxa Grå Chinos Jeans Beige
Storlek
52 54 Indigoblå 108
Pris
249 199 199 Post
En SELECT-sats
SELECT plagg, färg, storlek, pris FROM sortiment WHERE pris < 200 ORDER BY plagg ASC, pris DESC
Tips: använd VERSALER för reserverade ord och gemener för egendefinierade ord
SELECT-satsens struktur
6.
7.
8.
1.
2.
3.
4.
5.
SELECT
Vilka fält som skall visas i resultatet
FROM
Vilken eller vilka tabeller
WHERE
Villkor för vilka poster som skall returneras
ORDER BY
Fält på vilka sortering skall ske
Villkor för urval av poster
Ett villkor är alltid
tredelat
:
efternamn = 'Andersson'
betyg > 3
Observera att fältvärden av typen text skall omgärdas av apostrof Villkor kan kombineras med boolska operatorer (AND, OR, NOT IN, <>)
Trunkerad sökning
Sökning med trunkering är exempel på en teknik som kallas
mönstermatchning
Trunkering anges med ordet LIKE (istället för =) och % som trunkeringsoperator
SELECT * FROM person WHERE efternamn LIKE 'Lun%'
S k maskning sker med _ (understreck)
Funktion
En funktion om
y i
y j f
är en binär relation (
x i
,
y i
) gäller även
x i
x j
sådan att , annorlunda uttryckt:
f
(
x i
)
f
(
x j
)
x i
x j
Aggregatfunktioner
Funktioner som utför beräkningar på en eller flera poster och returnerar sammanfattande värden COUNT: räknar poster SUM: summerar värden AVG: beräknar medelvärde MIN, MAX: minsta resp. största värde
Cartesisk produkt och JOIN
låntagare
PK kortnr efternamn förnamn telefon
lån
FK kortnr bok datum
Cartesisk produkt
SELECT * FROM låntagare, lån
från tabellen
låntagare
från tabellen
lån kortnr 25
25
32
32
efternamn förnamn
Karlsson Jan Karlsson Hagström Hagström Jan Lena Lena
telefon
------- ------- ------- --------
kortnr 25
28
32
40
bok
Livet Ofredsår Om ett ord I cirkelns mitt
datum
060202 060203 060126 060124
Cartesisk produkt
För att få poster där informationen ”stämmer” filtrerar vi resultatet på relationen primärnyckel – främmande nyckel
SELECT * FROM låntagare, lån WHERE låntagare.kortnr = lån.kortnr
AND datum >= #2006-02-01#
JOIN
I en JOIN operation mellan två tabeller
A
och
B
kombineras poster och fält i
A
poster och fält i
B
enligt ett villkor med
INNER JOIN:
endast poster som matchar varandra kombineras
OUTER JOIN:
samtliga poster från den ena tabellen plus matchande poster från den andra tabellen
INNER JOIN
SELECT * FROM låntagare INNER JOIN lån ON låntagare.kortnr = lån.kortnr
WHERE datum >= #2006-02-01#
LEFT OUTER JOIN
SELECT * FROM titles LEFT JOIN publishers ON titles.pub_id = publishers.pub_id
Denna konstruktion garanterar att poster tas med från
titles
även där
pub_id = NULL
Datamodellering
All beskrivning av verkligheten sker genom att identifiera objekt, egenskaper hos objekt och relationer mellan objekt.
Lästips
Unified Modeling Language (UML) Hidefjäll, M. & Axelsson, L. (1993).
Praktisk datamodellering – ta greppet om begreppen
.
Databasdesign
Konceptuell design:
vad skall jag beskriva, vilka objekt finns, hur är de relaterade till varandra
Logisk design:
tabeller, relationer
Fysisk design:
anpassning för det konkreta DBMS:et
Konceptuell design
Låntagardatabas – situationsbeskrivning Låntagare 1 utför n Lån n Böcker 1 består av
Konceptuell design
Bok:
författare, titel, isbn, hyllplacering
Låntagare:
förnamn, efternamn, telefon, adress, kortnr
Lån:
isbn, kortnr, datum
Relationstyper
1:1 relationer (binära relationer) person låntagare 1:N-relationer låntagare - lån N:N-relationer låntagare - bok
Relationsintegritet
Entitetsintegritet:
inte ha värdet NULL en primärnyckel kan
Referensintegritet:
om en främmande nyckel finns i en tabell måste motsvarande värde existera i den relaterade tabellen
Relationsintegritet
låntagare
PK kortnr efternamn förnamn telefon
lån
FK kortnr bok datum
Logisk design
PK
låntagare
kortnr efternamn förnamn telefon FK FK
lån
kortnr isbn datum PK
bok
isbn titel författare
Normalisering
En process som delar upp enskilda tabeller i flera tabeller för att undvika upprepningar (redundans) av data
Första normalformen (1NF)
Data med multipla värden per objekt tilldelas egen tabell
kortnr namn
012 236 Lars Svensson Malin Bergkvist
bok datum
0-123-45678-9 20030628 1-234-56789-0 20030628 2-345-67890-1 20030804 3-456-78901-2 20030804
Andra normalformen (2NF)
Attribut som inte är funktionellt beroende av hela primärnyckeln placeras i egen tabell
lån
FK, PK kortnr FK, PK isbn PK titel författare datum
bok
PK isbn titel författare
Tredje normalformen (3 NF)
Attribut som är funktionellt beroende av andra attribut, vilka inte är nycklar, placeras i egen tabell
person
PK person_id förnamn efternamn postnr postort
Fysisk design
låntagare
PK kortnr Efternamn Förnamn Telefon Tal Text (40) Text (40) Text (20) NOT NULL NOT NULL NOT NULL NULL