Digitalisering av kulturarvet

Slides:



Advertisements
Liknande presentationer
Formulär Tänkte nu gå igenom vad ett formulär är och hur man kan skapa dem i Access.
Advertisements

Databaser & databasdesign
Vad är en databas? “En databas är en delad samling logiskt relaterade data som designats för att möta informationsbehovet i en organisation eller för.
Relationsdatabasdesign
Databasadministration
Access med Sebastian och Robert
Informationshantering
B2KUNO Johan Eklund.
Från verksamhet till databas
De fundamentala datatyperna
Datamodellering med E/R-diagram
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Databasteknik 2.
Grundläggande programmering
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
WEBMASTER DAG 13 Mahmud Al Hakim
DAV B04 - Databasteknik Indexering (kap 14).
Datamodellering med E/R-diagram
XSLT – en introduktion Digitalisering av kulturarvet.
Programmering B PHP Lektion 2
Föreläsning 11 Arrayer.
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Tabeller.
Vektorer (klassen Vector) Sortering
DATABASHANTERING för programmerare
DATABASHANTERING för programmerare Lektion 3 Mahmud Al Hakim
DATABASHANTERING för programmerare Lektion 4 Mahmud Al Hakim
Online all the time, anywhere with anything Ytterligare ett alternativ är att gå via Inställningar för bibliotek. © NetIntegrate Sweden AB 1.Gå till bibliotek.
SQL nikos dimitrakas rum 6626
Grundläggande programmering
Databashantering Do it Max-style!. SELECT SELECT vad FROM tabellnamn Exempel: ◦ SELECT * FROM stralin_max  * = Välj allt som finns i tabellen ◦ SELECT.
FRÅGEUTVECKLING INOM MSSQL Marcus Medina. Dagens visdomsord ” Det är inte vad som händer dig som räknas – utan hur du reagerar på det. ” - Epiktetos.
Databashantering MS Access 2003 Lektion 2
Flexicon – Din systempartner
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord “Det verkar alltid omöjligt tills dess att det är gjort” Nelson Mandela.
Frågor. Vad är en Fråga? -En fråga är ett urval av information från ett eller flera fält i en eller flera tabeller. - Du använder frågor för att selektera.
Mahmud Al Hakim 2  Mål för kursen  Kursplanering  Kurslitteratur  Betygsättning  Grunder om databaser  Tabeller.
Databaser och databassystem
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Tabellrelationer Innan ni får göra lite övningar tänkte jag att jag skulle gå igenom lite om tabellrelationer.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Digitalitet.
DATABASHANTERING för programmerare Lektion 6 Mahmud Al Hakim
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Delarna i en Access-databas
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
DA7351 Programmering 1 Databas SQL Föreläsning 24.
Databaser, avancerade frågor
IT Databas Göran Wiréen
IT Databas Göran Wiréen
IT Databas Göran Wiréen
IT Databas Göran Wiréen
Repetition Del 1.
Mer om repetionssatser och arrayer
IT Databas Göran Wiréen
Operativ informationshantering, databaser
KaU - Datavetenskap - DAV B04 - MGö
SQL Structured Query Language Frågespråk för att används för Kommandon
SQL Structured Query Language Frågespråk för att används för Kommandon
Presentationens avskrift:

Digitalisering av kulturarvet 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 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

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

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

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

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

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

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

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

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

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

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

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

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!

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)

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

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

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)

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

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

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

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

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

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'

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

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

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)

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

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

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

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

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

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