Presentation laddar. Vänta.

Presentation laddar. Vänta.

Digitalisering av kulturarvet

Liknande presentationer


En presentation över ämnet: "Digitalisering av kulturarvet"— Presentationens avskrift:

1 Digitalisering av kulturarvet
DATABASER Digitalisering av kulturarvet

2 IDAG Vad är en databas? Begrepp Relationer Datamodeller Tabeller, fält och poster Nycklar Attribut, egenskaper och fält Normalisering SQL

3 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

4 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

5 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

6 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

7 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) }

8 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

9 DATAMODELLER Ett ramverk för hur data ska organiseras i en databas Nätverksdatamodellen Hierarkiska datamodellen Relationsdatamodellen

10 RELATIONSDATAMODELLEN
Baserad på matematiska relationer Data och relationer representeras som tabeller Varje tabell har ett antal kolumner med (för tabellen) unika namn skivnr artist titel pris 1 Chemical Brothers Exit planet dust 149 2 Fat Boy Slim Halfway between the gutter and the stars 159 3 Radiohead Kid A

11 RELATIONSDATAMODELLEN
Attribut skivnr artist titel pris 1 Chemical Brothers Exit planet dust 149 2 Fat Boy Slim Halfway between the gutter and the stars 159 3 Radiohead Kid A Relation Tipel

12 TABELLER, FÄLT OCH POSTER
skivnr artist titel pris 1 Chemical Brothers Exit planet dust 149 2 Fat Boy Slim Halfway between the gutter and the stars 159 3 Radiohead Kid A Tabell Post

13 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

14 NYCKLAR Primärnyckel (surrogatnyckel) skivnr artist titel pris 1
Chemical Brothers Exit planet dust 149 2 Fat Boy Slim Halfway between the gutter and the stars 159 3 Radiohead Kid A

15 NYCKLAR Primärnyckel Främmande nyckel låtnr titel låtlängd skivnr 1 3
National Anthem 352 3 2 Treefingers 223 Optimistic 316 Leave home 333 In dust we trust 317 Chicos groove 287

16 NYCKLAR PK skivnr PK låtnr PK, FK skivnr titel artist titel låtlängd
pris PK låtnr titel låtlängd PK, FK skivnr

17 ATTRIBUT, EGENSKAPER OCH FÄLT
Hur ska du beskriva det du ska beskriva? Egenskaper/Attribut Fält Datatyper Entiteter

18 Vilka egenskaper kan urskiljas?
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

19 EGENSKAPER R = (artist, titel, pris, antal spår, total speltid, låttitel, låtlängd, låneinformation) artist titel pris antalSpår speltid låttitel låtlängd lån Radiohead Kid A 159 10 2999 292 Utlånad National Anthem 352 Treefingers 223 Optimistic 316 Chemical B Exit planet 149 11 2960 Leave home 333 In dust we trust 317 Chicos groove 287 One too many mornings 251 Alive alone 315

20 INGEN LÄMPLIG KONSTRUKTION…
Varje tipel är förvisso unik… …men redundans förekommer Detta resulterar i vissa uppdateringsproblem samt ineffektivitet Lösning: normalisering!

21 Multipla värden i cellerna Kom ihåg:
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

22 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) skivnr artist titel pris antalSpår speltid låttitel låtlängd lån 1 Radiohead Kid A 159 10 2999 285 Utlånad Optimistic 316 2 Chemical B Exit planet 149 11 2960 Alive alone 315

23 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?

24 ANDRA NORMALFORMEN (2NF)
skivor skivnr lån personnr skivnr låtar låtnr skivnr

25 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)

26 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

27 MED DETTA I BAGAGET… …går vi raskt vidare till Johan Eklunds tio steg mot en databas i Access!

28 Vilka objekt/entiteter kan urskiljas?
VAD SKALL INGÅ? Vilka objekt/entiteter kan urskiljas? Skivor Låtar Låntagare Ägare? (Artist) (Vi bortser från postnr och ort här)

29 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

30 VANLIGA DATATYPER BOOLEAN CHAR och VARCHAR DATE och TIME
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

31 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

32 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

33 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

34 RELATIONER ägare skivor låtar låntagare En Flera

35 Functional Requirements for Bibliographic Records (FRBR)
EXEMPLARINFORMATION? Ett verk Ett uttryck av verket En manifestation av uttrycket Ett individuellt ting som representerar manifestationen Functional Requirements for Bibliographic Records (FRBR)

36 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?

37 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

38 LÖSNINGEN… skivor_verk låtar ägare skivor_exemplar låntagare

39 INTE HELT OPTIMALT DOCK…
Vore det inte bättre att registrera lån i en egen tabell?

40 NY LÖSNING… skivor_verk låtar ägare skivor_exemplar lån låntagare

41 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)

42 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

43 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

44 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

45 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)

46 SKAPA DATABASEN I ACCESS
Detta sparar vi till senare

47 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

48 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

49 Hämta data från alla skivor med 11 spår
EXEMPEL: SELECT-sats Hämta data från alla skivor med 11 spår skivnr artist titel antalSpår totalSpeltid 1 Chemical Brothers Exit Planet Dust 11 2960 2 Radiohead Kid A 10 2999 3 Fat Boy Slim Halfway between the gutter and the stars 4102

50 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

51 SELECT-SATSENS STRUKTUR
Vilka fält som ska visas i resultatet FROM Vilken eller vilka tabeller WHERE Villkor för poster som ska returneras ORDER BY Fält på vilka sortering ska ske

52 Fältvärden av typen text omsluts av 'apostrofer'
VILLKOR Tredelat: Fältnamn – jämförelse – fältvärde Operand – operator – operand namn = 'David' antalSpår > 10 Fältvärden av typen text omsluts av 'apostrofer' Villkor kan kombineras med booleska operatorer (AND, OR, NOT IN, <>)

53 SELECT * FROM ägare WHERE namn LIKE 'Da%'
TRUNKERING Görs med ordet LIKE (istället för likhetstecknet) och % som trunkeringsoperator SELECT * FROM ägare WHERE namn LIKE 'Da%' Returnerar alla ägare som börjar på 'Da' Maskering (ett tecken) sker med _ 'T_m' returnerar 'Tom' och 'Tim'

54 AVG – beräknar medelvärde
AGGREGATFUNKTIONER COUNT – räknar poster SELECT COUNT(*) AS antalExemplar FROM skivor_exemplar SUM – summerar värden SELECT SUM(totalSpeltid) AS antalSekunder FROM skivor_verk AVG – beräknar medelvärde SELECT AVG(antalSpår) AS genomsnittSpår FROM skivor_verk MIN, MAX – minsta resp högsta värde

55 KARTESISK PRODUKT OCH JOIN
SELECT * FROM skivor_verk, låtar Returnerar samtliga kombinationer av posterna i skivor_verk och låtar Restriktioner måste läggas till Rätt låtar ska paras ihop med rätt skivor Detta kan göras på två sätt

56 UTAN JOIN SELECT * FROM skivor_verk, låtar WHERE skivor_verk.skivnr=låtar.skivnr Då skivnr är främmande nyckel i låtar kan vi para ihop låtar med rätt skivor Tabellnamn anges i villkoret för att disambiguera skivnr (som återfinns i bägge tabellerna)

57 MED JOIN SELECT * FROM skivor_verk INNER JOIN låtar ON skivor_verk.skivnr=låtar.skivnr

58 INNER JOIN ELLER OUTER JOIN?
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

59 INNER VS OUTER JOIN SELECT * FROM skivor_verk INNER JOIN låtar ON skivor_verk.skivnr=låtar.skivnr Enbart verk som har låtar i db returneras SELECT * FROM skivor_verk LEFT JOIN låtar ON skivor_verk.skivnr=låtar.skivnr Även verk utan låtar i db returneras

60 TRE TABELLER lån (lånnr, låntagarnr, exemplarnr, låndatum, tillbakadatum) lån_exemplar (lånnr, exemplarnr) skivor_exemplar (exemplarnr, skivnr, ägarnr, beskrivning)

61 UTAN JOIN SELECT * FROM lån, lån_exemplar, skivor_exemplar WHERE lån.lånnr=lån_exemplar.lånnr AND lån_exemplar.exemplarnr= skivor_exemplar.exemplarnr

62 MED JOIN SELECT * FROM lån INNER JOIN lån_exemplar ON lån.lånnr=lån_exemplar.lånnr INNER JOIN skivor_exemplar ON lån_exemplar.exemplarnr= skivor_exemplar.exemplarnr


Ladda ner ppt "Digitalisering av kulturarvet"

Liknande presentationer


Google-annonser