databashantering för programmerare
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 PresentationTRANSCRIPT
DATABASHANTERINGDATABASHANTERINGför programmerareför programmerare
Lektion 2Lektion 2Mahmud Al HakimMahmud Al Hakim
22
Idag Idag Databasdesign Databasdesign
Databasbegrepp och terminologiDatabasbegrepp och terminologi Principer för databasdesignPrinciper för databasdesign NormaliseringNormalisering ÖvningarÖvningar
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?
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.
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
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
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
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.
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..
1010
SchemanScheman
Schema eller databasschemaSchema eller databasschemaDatabasens struktur eller utformningDatabasens struktur eller utformning
Ex.Ex.personal (personal (personalIDpersonalID, namn, befattning, , namn, befattning, avdelningIDavdelningID))
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.
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.
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
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
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
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.
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
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.
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
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
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
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))
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
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)
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
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
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.
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 )