630 likes | 1.14k Views
DATABASER. Digitalisering av kulturarvet. IDAG. Vad är en databas? Begrepp Relationer Datamodeller Tabeller, fält och poster Nycklar Attribut, egenskaper och fält Normalisering SQL. VAD ÄR EN DATABAS?. En samling av logiskt organiserade data
E N D
DATABASER Digitalisering av kulturarvet
IDAG • Vad är en databas? • Begrepp • Relationer • Datamodeller • Tabeller, fält och poster • Nycklar • Attribut, egenskaper och fält • Normalisering • SQL
VAD ÄR EN DATABAS? • En samling av logiskt organiserade data • I en databas kan dataentiteter effektivt lagras, relateras till varandra och extraheras • Databas är inte detsamma som dokument • Databas är inte heller detsamma som databashanteringssystem • Dokument ~= träd, databas ~= skog
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 • Access, SQL Server, Oracle, MySQL, FileMaker
BEGREPP • Relation – En tabell med rader och kolumner • Attribut – En namngiven kolumn i en relation • Domän – En uppsättning tillåtna värden för ett eller flera attribut • Tipel – En rad i en relation
FLER BEGREPP • Grad (av en relation) – Antalet attribut som relationen innehåller • Kardinalitet – Antalet tipler i en relation • Relationsdatabas – En samling normaliserade relationer med distinkta relationsnamn • Normalisering – En teknik för att producera en uppsättning relationer med önskade egenskaper
MATEMATISKA RELATIONER • Kartesisk produkt – Alla möjliga kombinationer av element hos två eller flera entiteter a {2,4} b {1,3,5} a*b = { (2,1), (2,3), (2,5), (4,1), (4,3), (4,5) } a {1,3} b {2,4} c {5,6} a*b*c = { (1,2,5), (1,2,6), (1,4,5), (1,4,6), (3,2,5), (3,2,6), (3,4,5), (3,4,6) }
EGENSKAPER HOS RELATIONER • En relation har ett namn som är distinkt från alla andra relationsnamn i relationsschemat • Varje cell i relationen innehåller exakt ett värde • Varje attribut har ett distinkt namn • Det finns inga dubblett-tipler (varje tipel är unik) • Ordningen av attribut är oväsentlig • Ordningen av tipler är (teoretiskt) oväsentlig
DATAMODELLER • Ett ramverk för hur data ska organiseras i en databas • Nätverksdatamodellen • Hierarkiska datamodellen • Relationsdatamodellen
RELATIONSDATAMODELLEN • Baserad på matematiska relationer • Data och relationer representeras som tabeller • Varje tabell har ett antal kolumner med (för tabellen) unika namn
RELATIONSDATAMODELLEN Attribut Relation Tipel
TABELLER, FÄLT OCH POSTER Fält Tabell Post
NYCKLAR • Primärnyckel – ett fält, eller en kombination av fält, som unikt identifierar en tipel (post) • Naturlig primärnyckel • Surrogatnyckel • Främmande nyckel – ett fält, eller en kombination av fält, som är primärnyckel i en annan relation och samtidigt existerar i aktuell relation
NYCKLAR Primärnyckel (surrogatnyckel)
NYCKLAR Primärnyckel Främmande nyckel
ATTRIBUT, EGENSKAPER OCH FÄLT • Hur ska du beskriva det du ska beskriva? • Egenskaper/Attribut • Fält • Datatyper • Entiteter
EGENSKAPER • Vi ska skapa en förteckning över en skivsamling där vi vill spara information om en skiva är utlånad eller inte • Vilka egenskaper kan urskiljas? • Artist, titel, pris, antal spår, total speltid • Låttitel, låtlängd • Låneinformation • Med mera… Eklund: Tio steg mot en databas i MS Access
EGENSKAPER • R = (artist, titel, pris, antal spår, total speltid, låttitel, låtlängd, låneinformation)
INGEN LÄMPLIG KONSTRUKTION… • Varje tipel är förvisso unik… • …men redundans förekommer • Detta resulterar i vissa uppdateringsproblem samt ineffektivitet • Lösning: normalisering!
ONORMALISERAD FORM • Multipla värden i cellerna • Kom ihåg: • Varje cell i relationen innehåller exakt ett värde • Vår relation är i 1NF
FÖRSTA NORMALFORMEN (1NF) • Data med multipla värden per objekt tilldelas egen tabell • R = (skivnr, artist, titel, pris, antal spår, total speltid, låttitel, låtlängd, låneinformation)
ANDRA NORMALFORMEN (2NF) • Attribut som inte är funktionellt beroende av hela primärnyckeln placeras i egen tabell • R1 = (skivnr, artist, titel, pris, antal spår, total speltid) • R2 = (låtnr, låttitel, låtlängd, skivnr) • R3 = (personnr, namn, postnr, ort, skivnr, låndatum) Förklaring till denna PK?
ANDRA NORMALFORMEN (2NF) skivor skivnr lån personnr skivnr låtar låtnr skivnr
TREDJE NORMALFORMEN (3NF) • Attribut som är funktionellt beroende av andra attribut, vilka inte är nycklar, placeras i en egen tabell • R3 = (personnr, namn, postnr, ort, skivnr, låndatum) • R3 = (personnr, namn, postnr, skivnr, låndatum) • R4 = (postnr, ort)
FLER NORMALFORMER FINNS… • BCNF – En relation är i BCNF (Boyce-Codd Normal Form) om och endast om varje determinant är en kandidatnyckel • En determinant är något som något annat är beroende av • 4NF • 5NF • 3NF eller BCNF brukar funka utmärkt
MED DETTA I BAGAGET… • …går vi raskt vidare till Johan Eklunds tio steg mot en databas i Access!
VAD SKALL INGÅ? • Vilka objekt/entiteter kan urskiljas? • Skivor • Låtar • Låntagare • Ägare? • (Artist) • (Vi bortser från postnr och ort här)
HUR SKA VI BESKRIVA DET SOM SKA INGÅ? • Attribut • Skivor: skivnr, artist, titel, pris, antal spår, total speltid • Låtar: låtnr, låttitel, låtlängd, skivnr • Låntagare: namn, skivnr, låndatum • Ägare: namn, skivnr
VANLIGA DATATYPER • BOOLEAN • Kan anta värdena TRUE, FALSE och ibland även UNKNOWN • CHAR och VARCHAR • Fast respektive varierande längd • CHAR(4) innebär att fältet rymmer 4 tecken • VARCHAR(30) innebär att fältet anpassar sig efter innehållet men aldrig tillåter fler än 30 tecken • DATE och TIME • DATE: år, månad, dag • TIME: timme, minut, sekund
DATATYPER • NUMERIC, DECIMAL, INTEGER och SMALLINT • NUMERIC och DECIMAL för decimaltal • Antal siffror och decimaler måste anges • INTEGER och SMALLINT för heltal • Stora respektive små heltal • FLOAT, REAL och DOUBLE PRECISION • Används för reella tal, dvs tal som kan skrivas med en ändlig eller oändlig följd av siffror • BINARY LARGE OBJECTS • Används för bildfiler, videofiler, ljudfiler och liknande
DATATYPER I ACCESS • Text – textsträngar som kan innehålla alla tecken (maxlängden är 255 tecken i Access) • Number (några exempel) • Integer – heltal, mindre domän • Double – stort heltal, större domän • Decimal - decimaltal • Date/Time – datum och tid • Currency – valutor • Autonumber – ökar automatiskt med 1 när en ny post läggs till, används för surrogatnycklar • Yes/No – kan anta något av två värden
VAD FINNS DET FÖR RELATIONER? • Analys av multipliciteten mellan objekten • Dvs hur relationerna dem emellan ser ut • En skiva kan lånas ut till flera personer (dock ej samtidigt) • En person kan låna flera skivor • En låt tillhör exakt en skiva • En skiva kan innehålla flera låtar • En person kan äga flera skivor • En skiva ägs av exakt en person
RELATIONER ägare skivor låtar låntagare En Flera
EXEMPLARINFORMATION? • Ett verk • Ett uttryck av verket • En manifestation av uttrycket • Ett individuellt ting som representerar manifestationen • Functional Requirements for Bibliographic Records (FRBR)
FRBR - Exempel • Verk: The Wild Rover • Uttryck: The Wild Rover framförd av Dropkick Murphys på Berns • Manifestation: En ljudupptagning av låten från spelningen • Ting: Ett exemplar av en cd innehållande ljudupptagningen av låten från spelningen • Hur gör vi med en skivsamling där vi har flera exemplar av samma manifestation?
VERK & EXEMPLAR • I en skivsamling av den här typen dyker det gärna upp flera exemplar av samma skiva • Det är exemplaret vi lånar ut och inte verket • För att hålla reda på vilket exemplar som lånas ut skapar vi en extra tabell
LÖSNINGEN… skivor_verk låtar ägare skivor_exemplar låntagare
INTE HELT OPTIMALT DOCK… • Vore det inte bättre att registrera lån i en egen tabell?
NY LÖSNING… skivor_verk låtar ägare skivor_exemplar lån låntagare
DAGS ATT FUNDERA PÅ TABELLERNA • En tabell per objekttyp • Mellantabeller för många till många-relationer • låtar (huvudtabell för låtar) • skivor_verk (huvudtabell för verk) • skivor_exemplar (huvudtabell för exemplar) • ägare (huvudtabell för ägare) • låntagare (huvudtabell för låntagare) • lån_exemplar (mellantabell mellan lån och exemplar) • lån (huvudtabell för lån)
UTSE NYCKLAR • Primärnycklar och främmande nycklar • En primärnyckel är ett eller flera fält som unikt identifierar en post • En främmande nyckel är ett eller flera fält som refererar till en primärnyckel i en annan tabell för att möjliggöra relationer mellan tabeller • Vi börjar med huvudtabellerna • Princip: följ gaffeln
FÖLJ GAFFELN • Primärnyckeln från Ägare följer gaffeln till Skivor_exemplar där den utgör en främmande nyckel ägare ägarnr skivor_exemplar exemplarnr ägarnr
NYCKLAR - Huvudtabeller skivor_verk (skivnr, artist, titel, antalSpår, totalSpeltid) skivor_exemplar (exemplarnr, skivnr, ägarnr, beskrivning) låtar (låtnr, låttitel, låtlängd, skivnr) lån (lånnr, låntagarnr, exemplarnr, låndatum, tillbakadatum) låntagare (låntagarnr, namn) ägare (ägarnr, namn) Vi utgår ifrån att låntagaren alltid returnerar skivan på utsatt datum
NYCKLAR – Komplett uppsättning skivor_verk (skivnr, artist, titel, antalSpår, totalSpeltid) skivor_exemplar (exemplarnr, skivnr, ägarnr, beskrivning) låtar (låtnr, låttitel, låtlängd, skivnr) lån (lånnr, låntagarnr, exemplarnr, låndatum, tillbakadatum) lån_exemplar (lånnr, exemplarnr) låntagare (låntagarnr, namn) ägare (ägarnr, namn)
SKAPA DATABASEN I ACCESS • Detta sparar vi till senare
STRUCTURED QUERY LANGUAGE • Generellt databasspråk • SQL är både ett datadefinitionsspråk och ett datamanipulationsspråk • Detta innebär att vi kan dels definiera restriktioner och villkor hos datan och dels hämta, uppdatera, sätta in och ta bort fält och poster i databasen • I SQL anger man vad som ska utföras och inte hur
KOMMANDON • Varje sats i SQL innehåller ett kommando som anger vilken operation som ska utföras • SELECT – hämta från databasen • INSERT – sätt in data i databasen • UPDATE – uppdatera data i databasen • DELETE – ta bort data från databasen • SQL kan också användas för att skapa, redigera och ta bort tabeller
EXEMPEL: SELECT-sats • Hämta data från alla skivor med 11 spår
EXEMPEL: SELECT-sats • SELECT artist, titel FROM skivor_verk WHERE antalSpår = 11 ORDER BY artist ASC • Hämtar fältvärden för artist och titel i tabellen skivor_verk och sorterar resultatet efter artist i stigande ordning (fallande ordning – DESC) • Tips: använd VERSALER för reserverade ord och gemener för egendefinierade ord