databashantering för programmerare

28
DATABASHANTERING DATABASHANTERING för programmerare för programmerare Lektion 2 Lektion 2 Mahmud Al Hakim Mahmud Al Hakim [email protected] www.hakimdata.se

Upload: vinaya

Post on 22-Jan-2016

56 views

Category:

Documents


0 download

DESCRIPTION

DATABASHANTERING för programmerare. Lektion 2 Mahmud Al Hakim [email protected] www.hakimdata.se. Idag Databasdesign. Databasbegrepp och terminologi Principer för databasdesign Normalisering Övningar. Repetition. Vad är en databas? Vad är en DBMS? Ge exempel på några DBMS? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: DATABASHANTERING för programmerare

DATABASHANTERINGDATABASHANTERINGför programmerareför programmerare

Lektion 2Lektion 2Mahmud Al HakimMahmud Al Hakim

[email protected]

Page 2: DATABASHANTERING för programmerare

22

Idag Idag Databasdesign Databasdesign

Databasbegrepp och terminologiDatabasbegrepp och terminologi Principer för databasdesignPrinciper för databasdesign NormaliseringNormalisering ÖvningarÖvningar

Page 3: DATABASHANTERING för programmerare

33

RepetitionRepetition

1.1. Vad är en databas?Vad är en databas?

2.2. Vad är en DBMS?Vad är en DBMS?

3.3. Ge exempel på några DBMS?Ge exempel på några DBMS?

4.4. Vilket kommando visar en lista på Vilket kommando visar en lista på databaser i MySQL?databaser i MySQL?

5.5. Vilket kommando visar information en Vilket kommando visar information en tabell i MySQL? tabell i MySQL?

Page 4: DATABASHANTERING för programmerare

44

Enheter och relationerEnheter och relationer

EnheterEnheter: Saker i verkliga : Saker i verkliga livet som vi vill lagra livet som vi vill lagra information om i information om i databasen.databasen.Ex. Anställd, Avdelning…Ex. Anställd, Avdelning…

Länkarna mellan enheter Länkarna mellan enheter kallas kallas relationerrelationer..Ex. En anställd arbetar på Ex. En anställd arbetar på en avdelning.en avdelning.

Page 5: DATABASHANTERING för programmerare

55

RelationerRelationer

En till enEn till en Ex. En anställd finns i sitt eget kontorEx. En anställd finns i sitt eget kontor

En till många (många till en)En till många (många till en)Ex. Flera anställda arbetar för en Ex. Flera anställda arbetar för en avdelningavdelning

Många till mångaMånga till mångaEx. Flera anställda arbetar för flera Ex. Flera anställda arbetar för flera avdelningaravdelningar

Page 6: DATABASHANTERING för programmerare

66

Relationsmodellen och RDBMSRelationsmodellen och RDBMS

RelationsmodellenRelationsmodellenEn datamodell där man beskriver En datamodell där man beskriver verkligheten genom att lagra data i verkligheten genom att lagra data i tabeller. tabeller.

Relationsdatabas RDBMSRelationsdatabas RDBMS En databas organiserad enligt En databas organiserad enligt relationsmodellen, d.v.s. med alla data relationsmodellen, d.v.s. med alla data lagrade i tabeller. lagrade i tabeller. Ex. MySQLEx. MySQL

Page 7: DATABASHANTERING för programmerare

77

Relation = TabellRelation = Tabell

personalIDpersonalID namnnamn befattningbefattning avdelningIDavdelningID

75137513 Nina LarssonNina Larsson ProgrammerareProgrammerare 128128

98429842 Bengt SvenssonBengt Svensson DBADBA 4242

66516651 Arne PerssonArne Persson ProgrammerareProgrammerare 128128

90069006 Camilla BlomCamilla Blom SystemadministratörSystemadministratör 128128

Page 8: DATABASHANTERING för programmerare

88

PrimärnyckelPrimärnyckel

En primärnyckel En primärnyckel En kolumn, eller en kombination av En kolumn, eller en kombination av kolumner, som alltid har ett unikt värde för kolumner, som alltid har ett unikt värde för varje rad i tabellen. Om det finns flera varje rad i tabellen. Om det finns flera möjliga primärnycklar säger man att man möjliga primärnycklar säger man att man har flera har flera kandidatnycklarkandidatnycklar, och man väljer , och man väljer en av dem som primärnyckel. en av dem som primärnyckel.

Page 9: DATABASHANTERING för programmerare

99

Främmande nyckelFrämmande nyckel

En främmande nyckel En främmande nyckel Ett attribut (kolumn) i en tabell som Ett attribut (kolumn) i en tabell som refererar till en annan (eller ibland samma) refererar till en annan (eller ibland samma) tabell.tabell.Kallas även för Kallas även för ReferensattributReferensattribut..

Page 10: DATABASHANTERING för programmerare

1010

SchemanScheman

Schema eller databasschemaSchema eller databasschemaDatabasens struktur eller utformningDatabasens struktur eller utformning

Ex.Ex.personal (personal (personalIDpersonalID, namn, befattning, , namn, befattning, avdelningIDavdelningID))

Page 11: DATABASHANTERING för programmerare

1111

Principer för databasdesignPrinciper för databasdesign

Vilken sorts information ska lagras?Vilken sorts information ska lagras? Vilka frågor behöver vi ställa till Vilka frågor behöver vi ställa till

databasen?databasen? Ta hänsyn till affärsreglerna.Ta hänsyn till affärsreglerna. Undvik strukturella problem som Undvik strukturella problem som

redundans och dataanomalier.redundans och dataanomalier. Undvik Null-värden.Undvik Null-värden.

Page 12: DATABASHANTERING för programmerare

1212

RedundansRedundans

RedundansRedundansData som upprepas i olika rader i en tabell Data som upprepas i olika rader i en tabell eller i olika tabeller i databasen. eller i olika tabeller i databasen. Ex.Ex.personalAvdelning (personalAvdelning (personalIDpersonalID, namn, , namn, befattning, avdelningID, avdelningNamn)befattning, avdelningID, avdelningNamn)

Kom ihåg: Minska upprepning av data utan att Kom ihåg: Minska upprepning av data utan att information går förlorad. information går förlorad.

Page 13: DATABASHANTERING för programmerare

1313

personalAvdelningpersonalAvdelning

personalIDpersonalID namnnamn befattningbefattning avdelningIDavdelningID avdelningNamnavdelningNamn

75137513 Nina LarssonNina Larsson ProgrammerareProgrammerare 128128 FoUFoU

98429842 Bengt SvenssonBengt Svensson DBADBA 4242 EkonomiEkonomi

66516651 Arne PerssonArne Persson ProgrammerareProgrammerare 128128 FoUFoU

90069006 Camilla BlomCamilla Blom SystemadministratörSystemadministratör 128128 FoUFoU

Page 14: DATABASHANTERING för programmerare

1414

Personal AvdelningPersonal Avdelning

personalIDpersonalID namnnamn befattningbefattning avdelningIDavdelningID

75137513 Nina Nina LarssonLarsson

ProgrammerareProgrammerare 128128

98429842 Bengt Bengt SvenssonSvensson

DBADBA 4242

66516651 Arne Arne PerssonPersson

ProgrammerareProgrammerare 128128

90069006 Camilla Camilla BlomBlom

SystemadministSystemadministratörratör

128128

avdelningIDavdelningID avdelningNamnavdelningNamn

4242 EkonomiEkonomi

128128 FoUFoU

Page 15: DATABASHANTERING för programmerare

1515

AnomalierAnomalier

Problem som uppkommer i data Problem som uppkommer i data beroende på felaktig databasdesign.beroende på felaktig databasdesign.

1.1. InfogningsanomalierInfogningsanomalier

2.2. BorttagningsanomalierBorttagningsanomalier

3.3. UppdateringsanomalierUppdateringsanomalier

Page 16: DATABASHANTERING för programmerare

1616

Null-värdenNull-värden

Ett speciellt värde, eller snarare brist på Ett speciellt värde, eller snarare brist på värde, som betyder att en uppgift saknas i värde, som betyder att en uppgift saknas i databasen. Motsvarar en "tom ruta" i databasen. Motsvarar en "tom ruta" i relationsmodellen. relationsmodellen.

Page 17: DATABASHANTERING för programmerare

1717

VTC - Getting StartedVTC - Getting Started

Gå till adressen:Gå till adressen:http://www.vtc.com/products/mysql.htm

Lyssna på Lyssna på Database BasicsDatabase Basics -What is a Database? -What is a Database? -RDBMSs -RDBMSs -Tables and Data Pt 1 -Tables and Data Pt 1 -Tables and Data Pt 2 -Tables and Data Pt 2

Page 18: DATABASHANTERING för programmerare

1818

NormaliseringNormalisering

En process som kan användas för att En process som kan användas för att avlägsna fel i en databas.avlägsna fel i en databas.

Beskriver ett antal normalformer som Beskriver ett antal normalformer som består av en uppsättning regler som består av en uppsättning regler som beskriver hur en tabellstruktur ska och beskriver hur en tabellstruktur ska och inte ska utformas.inte ska utformas.

Page 19: DATABASHANTERING för programmerare

1919

Första normalformen (1NF)Första normalformen (1NF)

Varje attribut eller kolumnvärde måste vara odelbarVarje attribut eller kolumnvärde måste vara odelbar

personalIDpersonalID namnnamn befattningbefattning avdelningIDavdelningID KunskapKunskap

75137513 Nina LarssonNina Larsson ProgrammerareProgrammerare 128128 C, Perl, JavaC, Perl, Java

98429842 Bengt Bengt SvenssonSvensson

DBADBA 4242 DB2DB2

66516651 Arne PerssonArne Persson ProgrammerareProgrammerare 128128 VB, JavaVB, Java

90069006 Camilla BlomCamilla Blom SystemadministratöSystemadministratörr

128128 NT, LinuxNT, Linux

Page 20: DATABASHANTERING för programmerare

2020

personalIDpersonalID namnnamn befattningbefattning avdelningIDavdelningID KunskapKunskap

75137513 Nina LarssonNina Larsson ProgrammerareProgrammerare 128128 CC

75137513 Nina LarssonNina Larsson ProgrammerareProgrammerare 128128 PerlPerl

75137513 Nina LarssonNina Larsson ProgrammerareProgrammerare 128128 JavaJava

98429842 Bengt SvenssonBengt Svensson DBADBA 4242 DB2DB2

66516651 Arne PerssonArne Persson ProgrammerareProgrammerare 128128 VBVB

66516651 Arne PerssonArne Persson ProgrammerareProgrammerare 128128 JavaJava

90069006 Camilla BlomCamilla Blom SystemadministratörSystemadministratör 128128 NTNT

90069006 Camilla BlomCamilla Blom SystemadministratörSystemadministratör 128128 LinuxLinux

Page 21: DATABASHANTERING för programmerare

2121

Andra normalformen (2NF)Andra normalformen (2NF)

Alla attribut som inte är en del av Alla attribut som inte är en del av primärnyckeln är helt funktionellt beroende primärnyckeln är helt funktionellt beroende av primärnyckel.av primärnyckel.

Funktionella beroendenFunktionella beroendenOm det finns ett funktionellt beroende Om det finns ett funktionellt beroende mellan kolumn A och kolumn B i en viss mellan kolumn A och kolumn B i en viss tabell, så bestämmer värdet i kolumn A tabell, så bestämmer värdet i kolumn A värdet i kolumn B.värdet i kolumn B. A A B B

Page 22: DATABASHANTERING för programmerare

2222

2NF - Exempel2NF - Exempel

1NF 1NF personal (personal (personalIDpersonalID, namn, befattning, , namn, befattning, avdelningID, avdelningID, kunskapkunskap))

Funktionella beroendenFunktionella beroendenpersonalIDpersonalID, , kunskap kunskap namn, befattning, namn, befattning, avdelningIDavdelningIDpersonalIDpersonalID namn, befattning, avdelningID namn, befattning, avdelningID

LösningLösningpersonal (personal (personalIDpersonalID, namn, befattning, , namn, befattning, avdelningIDavdelningID))personalKunskap (personalKunskap (personalIDpersonalID, , kunskapkunskap))

Page 23: DATABASHANTERING för programmerare

2323

personalIDpersonalID namnnamn befattningbefattning avdelningIDavdelningID

75137513 Nina LarssonNina Larsson ProgrammerareProgrammerare 128128

98429842 Bengt Bengt SvenssonSvensson

DBADBA 4242

66516651 Arne PerssonArne Persson ProgrammerareProgrammerare 128128

90069006 Camilla BlomCamilla Blom SystemadministratöSystemadministratörr

128128

personalIDpersonalID KunskapKunskap

75137513 CC

75137513 PerlPerl

75137513 JavaJava

98429842 DB2DB2

66516651 VBVB

66516651 JavaJava

90069006 NTNT

90069006 LinuxLinux

personal personalkunskap personal personalkunskap

Page 24: DATABASHANTERING för programmerare

2424

Tredje normalformen (3NF)Tredje normalformen (3NF)

Attributen får inte vara beroende av Attributen får inte vara beroende av någonting annat än nyckeln.någonting annat än nyckeln.

ExempelExempelpersonalAvdelning (personalAvdelning (personalIDpersonalID, namn, , namn, befattning, avdelningID, avdelningNamn)befattning, avdelningID, avdelningNamn)

Page 25: DATABASHANTERING för programmerare

2525

personalAvdelningpersonalAvdelning

personalIDpersonalID namnnamn befattningbefattning avdelningIDavdelningID avdelningNamnavdelningNamn

75137513 Nina LarssonNina Larsson ProgrammerareProgrammerare 128128 FoUFoU

98429842 Bengt SvenssonBengt Svensson DBADBA 4242 EkonomiEkonomi

66516651 Arne PerssonArne Persson ProgrammerareProgrammerare 128128 FoUFoU

90069006 Camilla BlomCamilla Blom SystemadministratörSystemadministratör 128128 FoUFoU

Page 26: DATABASHANTERING för programmerare

2626

Personal AvdelningPersonal Avdelning

personalIDpersonalID namnnamn befattningbefattning avdelningIDavdelningID

75137513 Nina Nina LarssonLarsson

ProgrammerareProgrammerare 128128

98429842 Bengt Bengt SvenssonSvensson

DBADBA 4242

66516651 Arne Arne PerssonPersson

ProgrammerareProgrammerare 128128

90069006 Camilla Camilla BlomBlom

SystemadministSystemadministratörratör

128128

avdelningIDavdelningID avdelningNamnavdelningNamn

4242 EkonomiEkonomi

128128 FoUFoU

Page 27: DATABASHANTERING för programmerare

2727

Boyce-Codds normalform Boyce-Codds normalform (BCNF)(BCNF)

Relationen måsta vara i den tredje Relationen måsta vara i den tredje normalformen normalformen

ochoch

Alla funktionella beroenden måste ha en Alla funktionella beroenden måste ha en supernyckel på den vänstra sidan.supernyckel på den vänstra sidan.

Page 28: DATABASHANTERING för programmerare

2828

Övningar efter rasten Övningar efter rasten

Svara på frågorna på sid. 56-57Svara på frågorna på sid. 56-57 Normalisera följande schema till 3NFNormalisera följande schema till 3NF

Order ( kundNr, kundNamn, Order ( kundNr, kundNamn, kundAdress, orderNr, orderDatum, kundAdress, orderNr, orderDatum, artikelNr, artikelNamn, artikelAntal )artikelNr, artikelNamn, artikelAntal )