Introduktion til programmering



Relaterede dokumenter
Introduktion til programmering

Introduktion til programmering

Hvad er en relationsdatabase? Odense, den 19. januar Version 1.0

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Introduktion til programmering

PRÆSENTATION AF ER-DIAGRAMMER OG NORMALISERING

Statistikkompendium. Statistik

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Databaser. 3. Normalform. Mette Frost Nielsen

Grafteori, Kirsten Rosenkilde, september Grafteori

Data lagring. 2. iteration (implement backend)

Få helt styr på NemID

Datamodeller. 1. Elementerne. Vi betragter E/R-diagrammet, som et diagram over entiteter og relationer Tegneregler: Entitet

Secret Sharing. Olav Geil Institut for Matematiske Fag Aalborg Universitet URL: olav.

Variabel- sammenhænge

Opgave 1 Alle tallene er reelle tal, så opgaven er at finde den mindste talmængde, som resultaterne tilhører.

Rediger eller opret institutionsmedarbejder på en ungdomsuddannelse

Kort og godt om NemID. En ny og sikker adgang til det digitale Danmark

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

Skriftlig eksamen i kurset. Informationssystemer

Forslag til løsning af Opgaver til ligningsløsning (side172)

GODE RÅD. Vild med dansk 8 - Sprog der handler. Hvad skal stå hvor i sætningsskemaet? Biled 1 eller biled 2? Hvilke ord hører til samme led?

Database. lv/

Dataanalyse og databaser

1. Send Digitalt knappen anvendes til at afsende meddelelsen til de valgte modtagere. (Alt- S)

Programmeringscamp Opbygning og specialisering af klassehierarki. Simulering af en kasselinje

Tema Titel Materiale 1 IS i sundheds-sektoren Patientdatas anvendelighed Lynge et al.

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE

Databaser. Område / Specialefag nr Database, design og programmering Datatekniker Infra & Prog IT-Supporter AMU Kursister

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar Forelæser: Rasmus Pagh

Induktion: fra naturlige tal til generaliseret skønhed Dan Saattrup Nielsen

Forståelse af sig selv og andre

Funktionalligninger - løsningsstrategier og opgaver

Excel formler og funktioner. Underviser: Nina Kirkegaard Schou Mobil:

Vejledning om dybe links i Digital Post. Februar 2016

Brugervejledning. til. Landsforeningen Danske Folkedanseres. Medlemssystem (For dansere)

Hypotese test. Repetition fra sidst Hypoteser Test af middelværdi Test af andel Test af varians Type 1 og type 2 fejl Signifikansniveau

Indholdsfortegnelse. Systembeskrivelse kapitel 3 Forretningslogik

Karen elsker sommer. Lørdag morgen Det er lørdag morgen. Klokken er 7. Karens mobiltelefon ringer. Det er vækkeuret. Karen slår det hurtigt fra.

Vejledning i opdatering af vandindvindingsanlægsoplysninger

Introduktion til forældre og andre voksne, der gerne vil være en del af vores verden

Inverse funktioner. John V Petersen

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar Forelæser: Rasmus Pagh

Renteregning.notebook Hjemly 09/10. Rentesregning. Bank og sparekasse

Ansøgervejledning for elever i 9. kl. Brugervejledning til Optagelse.dk

I dette forløb arbejder eleverne med de forskellige led, der kan være i en sætning. De faglige mål med forløbet er, at eleverne skal:

UNI Login brugeradministration. - fra Lectio til UNI Login

Økonomistyrelsen. 27. febr. 2007

Reelle tal. Symbolbehandlingskompetencen er central gennem arbejdet med hele kapitlet i elevernes arbejde med tal og regneregler.

FÅ OVERBLIK OVER LØNNEN EXCEL FOR TILLIDSREPRÆSENTANTER DEL 4: FORMATERING AF REGNEARKET INFORMATIONSBOKS

Brøkregning. Navn: Klasse: Matematik Opgave Kompendium. Opgaver: 24 Ekstra: 5 Point:

Vejledning til AT-eksamen 2016

Brugerguide til Wuxus - For dig som er transportkøber.

Arbejdsmiljøgruppens problemløsning

VEJLEDNING SPAMFILTERET. 1. Udgave, august 2015 Tilpasset FirstClass version 12.1, Dansk

Villys Studiekreds Præsentation af slægten på en hjemmeside.

Virksomhedens informationssystem. Det elektroniske kontor. Elektronisk dokumenthåndtering Samfundet. Systembeskrivelse II IT og økonomi

Projekt 10.1 Er der huller i Euklids argumentation? Et moderne aksiomsystem (især for A)

Opgaveproduktion og kvalitetssikring af opgaver til de nationale test

Datastruktur vedr. afsendelsesformat til Overførselsservice ved informationsoverførsel til DA- Barsel

Opgaver til skattejagt, kapitel 13, forløb om trylleord.

Årsafslutning i SummaSummarum 4

Guide: Sådan søger du om folkepension

Fakturering kan foretages som en massefakturering eller for en enkelt ordre.

Tilbudsportalen REST testklient

DATABASE - MIN MUSIKSAMLING

Den bedste dåse, en optimeringsopgave

Polynomier et introforløb til TII

Lærereksemplar. Kun til lærerbrug. Arbejdsbogen 1. Ny udgave. Gerner Birk Kristiansen. Tekst og tegninger DATO:

Ida har en kanin på fritidshjemmet. Den hedder Nuser. Carlo har et marsvin. Det hedder Sjove. De har ingen dyr derhjemme. Deres mor kan nemlig ikke tå

Bilag 14: Transskribering af interview med Anna. Interview foretaget d. 20. marts 2014.

Smagsprøve. Databasedesign med Access 2000

Førstehjælp til opgaver

Karens lille vejledning til Access

Ordbogsværktøjet mikrov.dk

SANDSYNLIGHED FACIT SIDE

Målstyret undervisning og tegn på læring

penge, rente og valuta

Dokumentation af programmering i Python 2.75

BILAG A SPØRGESKEMA. I denne At-vejledning præsenteres et kort spørgeskema med i alt 44 spørgsmål fordelt på otte skalaer.

Rigsrevisionen hvad er det? Rigsrevisionen. Landgreven 4 Postboks København K. Tlf Fax

Feriepengeforpligtigelse Manuel beregning på ferietotaler (Rapport-ID: 57)

Jørgen Koch. och. Access. Normalisering m.v.

Transkript:

Introduktion til programmering Databaser Uge 37 Computer Science, kap 9. Hugh Darwen: what a database really is, G. Riccardi: Princples of database systems, kap 2., kompendium.

Sidste gang Computerens historie Skift fra selv-reference (celler, registre, og kodelinjer) til fremmed-reference (problemområdet) Talknuser værktøj medium omgivelse Computeren som tegnbærer. Programmer skal understøtte flere fortolkninger Maskinarkitektur

Plan Databaser Relationelle databaser Modellering ER-diagrammer Øvelse Normalisering

Databaser Hvad er en database? En samling af relaterede data DBMS Der repræsenterer et defineret udsnit af verden Der har en intern sammenhæng Der henvender sig til en defineret gruppe brugere Database Management System En samling programmer der kan skabe, manipulere og vedligeholde en database Definere, konstruere, manipulere, dele Beskyttelse Fysisk, mod misbrug

Databaser formidler en bestemt fortolkning Verden består af enheder og relationer It s useful to view a database as a set of propositions concerning some enterprise of which the database is supposed to provide some kind of record (Hugh Darwen)

Entity-Relation Tre grundelementer

Andre fortolkninger Procedurale: Verden består af aktive processer og passive ting Tingene flyder mellem processerne og skifter tilstand Objektorienterede Verden består af aktive objekter samt af kommunikation mellem disse objekter Objekterne har metoder tilknyttet Funktionelle Logiske Verden består af afhængigheder Inspireret af matematikken Verden består af sande eller falske sætninger samt af logiske slutningsprocesser

Database system!"

dataabstraktion Uafhængighed af implementering Logisk datauafhængighed Ændringer i datastrukturen Fysisk datauafhængighed Ændring i lagringsstruktur

Lag

Eksterne views

Den relationelle model Relationer (sammenhænge) mellem data Eks. i et ordresystem, hvor kunden er relateret til en ordre Ingen direkte fysisk sammenhæng mellem data Selv om to poster står ved siden af hinanden i en tabel, står de ikke nødvendigvis fysisk ved siden af hinanden på disken. Fortolkning: verden består af entiteter med egenskaber. Mellem entiteterne hersker relationer

Relationelle databaser Består af Tabeller, der indeholder data Relationer, der beskriver sammenhænge mellem tabeller Alt er tabeller

Relationstabeller

Sproglig analogi. Databasen er en samling af sætninger der påstår noget om virkeligheden Syntagmer og paradigmer Syntagme det mønster af pladser man opbygger sætninger efter: række Paradigme alle de ord der kan stå på en given plads: kolonne Subjekt Verbum Lokativ Syntagme Ole bor i Århus Paradigme Kristian Odense Karen København...

Python udtræk fra database ['cpr', 'firstname', 'lastname', 'address', 'city', 'gender', 'phone', 'insurance','] [['1', 'Jeppe Boegh', 'Andersen', 'Thorsgade 20', '8410', 'dreng', '86379790', 'Baltica '], ['4', 'Lotte Boegh', 'Andersen', 'Thorsgade 20', '8410', 'pige', '86379790', 'Baltica ] ['5', 'Stine', 'Jacobsen ', Thorsgade 20', '8410', 'pige', '86379790', 'baltica ] Den enkelte række kan opfattelse som en række udsagn om den entitet der repræsenteres med primærnøglen, her cpr-nummeret. Person nr. 5 hedder Stine Jacobsen, bor Thorsgade 20, 8410 Rønde, er en pige, har telefon 86379790, og er forsikret i Baltica

ER-diagrammer Modelleringsform til dataanalyse Entiteter - ting i problemområdet Det emne vi siger noget om Attributter - oplysning om tingen Det vi siger om emnet Relationer mellem entiteter Det vi siger om emnets forhold til andre emner

Eks: Kæledyr Simpel analyse af kæledyr

Kæledyr Entiteter og attributter

ERnotation 1

Kæledyr En person kan eje mange kæledyr Et kæledyr kan ejes af eksakt én person Multiplicitet

ERnotation 2 1-1: én til én (person CPR-nummer) 1 M: én til mange (mor børn) M N: mange til mange (person venner)

ERnotation2 Databaser bestemmer hvilke ting der kan siges om verden Eksempel: ægteskab Er ægteskab en én-til-én relation mellem to mands- og kvinde-entiteter? (monogami) Eller kan det være en mange-til-én? (polygami) Skal det være en relation mellem en kvinde- og mands-entitet eller kan det være en relation mellem to vilkårlige person-entiteter? (homoseksuelle ægteskaber?)

Attributters værdi Simple værdier Angiv typen Type Char(n) date int4 serial Varchar(n) Værdi N bogstaver dato -2.147.483.648 til 2.147.483.648 Unikt ID Variabel tekst

NULL Alle typer kan indeholde værdien NULL NULL betyder ikke ingen eller 0 NULL betyder udefineret

Kæledyrene igen Kæledyr Navn : tekst Art: tekst Fødsel, Død : dato Person Navn : tekst

Kæledyr igen Navn Art Fødsel Død (varchar(15) (varchar(10) (Dato) (dato) Mette Kat 2005-01-07 NULL Rasmus Kat 2005-01-03 NULL

Personer Navn Varchar(20) Peter Alexander

Men vil det fungere? Hvad hvis der er to ejere med samme fornavn? Hvilke kæledyr ejer Peter? Mener du Peter Andersen eller Peter Jensen? Hvem ejer Mette? Svar Peter : men er det Peter Andersen eller Peter Jensen? Det skal være muligt at udpege en post entydigt Til det bruges nøgler

Nøgler En tabel skal have en primærnøgle CPR er en primærnøgle til mængden af danske personer Nøglen kan være simpel eller sammensat Simpel: fortløbende nummer (CPR) Sammensat: et bibliotekslån kan identificeres ved et lånernummer plus et bognummer plus en dato Datatypen: seriel

Kæledyr med nøgler ID Navn Art Fødsel Død (serial) (varchar(15) (varchar(10) (Dato) (dato) 1 Mette Kat 2005-01-07 NULL 2 Rasmus Kat 2005-01-03 NULL

Personer med nøgler ID (serial) 1 2 3 Navn Varchar(20) Peter Peter Alexander

Relationen 1-1 og M-1 Modelleres på samme måde En kolonne i en tabel (fremmednøglen) henviser til en primærnøgle i en anden tabel Fremmednøglen placeres i mange tabellen Kæledyr 1 ejes af person 1 Kæledyr 2 ejes af person 1 Primærnøgle Fremmednøgle

Kæledyr Primærnøgle Fremmednøgle ID (serial) Navn (varchar(15) Art (varchar(1 0) Fødsel (Dato) Død (dato) Owned by Int4 1 Mette Kat 2005-01-07 NULL 1 2 Rasmus Kat 2005-01-03 NULL 1

Mange-mange relationer Et kæledyr kan ejes af flere personer En person kan eje flere kæledyr

Relation entitet: reifikation Gør verbet til et substantiv: ejer ejerskab. Peter ejer Mette Peters ejerskab af Mette Modeller det substantiverede verbum som en entitet. Brug evt grammatiske betegnelser som kolonnenavne Den der ejer = Subjekt Den der ejes = Objekt Person Ejerskab Kæledyr ID Navn Subj Obj ID Navn 1 2 Peter Alexander 1 2 1 1 1 2 1 2 Mette Pasmus 2 2

Redundante data Redundante data: Data der er gentaget Fysisk redundans Data gentaget Infologisk redundans Afledte værdier: værdier der kan beregnes Antallet af kæledyr ejet af en person Kan registreres i persontabellen. Peter ejer to katte. Men kan også beregnes ud fra de øvrige tabeller. Nyttig redundans Muliggør datarekonstruktion, hurtigere, søgninger, konsistenskontrol

Infologisk redundans Antag at vi vil registrere egenskaber ved arten af kæledyr. Et kæledyr af typen Perser tilhører arten Felix, Overflødigt en Grand Danois tilhører arten Canis ID (serial) Navn (varchar(15) Art(varcha r (30) Fødsel (Dato) Død (dato) Owne d by Int4 1 Mette Perser, Felix 2005-01-07 NULL 1 2 Rasmus Perser, Felix 2005-01-03 NULL 1

Løsning Redundante data placeres i en selvstændig tabel, en M-1 relation En værdi der bruges mange steder

Alt der kan tales om er en entitet ID (serial) Navn (varchar(15) Art Int4 Fødsel (Dato) Død (dato) Owned by Int4 1 Mette 1 2005-01-07 NULL 1 2 Rasmus 1 2005-01-03 NULL 1 Art ID Navn Species 1 Perser Felix 2 Grand Danois Canis

Egenskab Entitet

Amazon.com

Normalisering Trinvis metode til at forbedre et databasedesign Ofte præsenteret som totalt uforståeligt I bund og grund sund fornuft Formål: Minimere redundans 1-12 NF (NormalFormer) Tommelfingerregel: 3NF er godt nok

Eksempel Peter Jensen, Birkevænget 6, 8410 Rønde lånte den 5-3-2005 Tolkien s Ringene Herre, udgivet af Gyldendal i 2003 Hakkes i stykker til så hver bid handler om sit eget tema Der er en person ved navn Peter Jensen der bor Birkevænget 6 postnummer 8410 Postnummeret står for Rønde Der er en bog skrevet af Tolkien og udgivet af Gyldendal i 2003 Personen lånte bogen den 5-3-2005

Sproglig analogi Sætninger kan deles i et tema (det kendte man meddeler ny information om) og et rhema (den nye information) Lav den oprindelige meddelelse om så den opsplittes i delmeddelelser med eet tema og eet rhema. Hvis pronominerne han, hun og det står for nøglen der identificerer en entitet så går det ud på at lave en række delsætninger hvor han/hun/det er grundled og resten af attributterne udgør eet rhema han lånte den den 5-3-2005 Han hedder Peter Jensen Han bor Birkevænget 6 med postnummer 8410 Det står for Rønde Den er skrevet af Tolkien og udgivet af Gyldendal i 2003 Tema Rhema

Generelt En række skal kunne identificeres ved én eller flere nøgler Vi skal kunne identificere den ting vi taler om (temaet) Resten af felterne i række skal kunne kombineres frit (være uafhængige) Vi skal kunne variere de øvrige felter Giver mest information iflg. Informationsteorien (information er proportional med antallet af valgmuligheder) Et felt må kun vedrøre eet emne Emner må ikke gentages i en række Hvert emne skal repræsenteres i sin egen række

Første normalform Én nøgle identificerer entydigt den enkelte række OBS: en nøgle kan godt være sammensat af to kolonner Hvis en række ikke kan identificeres, kan den ikke fremfindes og opdateres. De enkelte felter må kun vedrøre eet emne Ikke til at søge hvis et felt indeholder flere emner Kolonner må ikke gentages Ellers vil vi være nødt til at sætte en vilkårlig grænse

Eksempel før Låner og udlån Flere værdier i samme felt Der kan være flere eksemplarer af samme bog ingen unik identifikation Peter Jensen / Ringgaden 10, 7500, Holstebro / Karen Blixen / Vintereventyr / Gyldenldal / 1964 / Johannes V Jensen / Den lange rejse / Gyldendal / 1977 / 24-12-2000 Der kan være vilkårligt mange bøger

Eksempel efter Lånertabel LånerId Navn Vej Postnummer Bynavn 1001 / Peter Jensen / Ringgaden 10 / 7500 / Holstebro Udlånstabel 1001/ 2001/ Karen Blixen / Vintereventyr / Gyldenldal / 1964 / 24-12-2000 1001/ 2002/ Johannes V Jensen / Den lange rejse / Gyldendal / 1977 / 24-12-2000 Nøgle Kolonner Rækker

Anden normal form Første normal form plus Ingen attributter der ikke selv tilhører nøglen må afhænge af en del af nøglen Fordi vi sandsynligvis vil skulle give samme information flere steder problemer med at opdatere

Eksempel før Udlånstabel LånerId BogId 1001 / 2001/ Karen Blixen / Vintereventyr / Gyldenldal / 1964 / 24-12-2000 1001 / 2002/ Johannes V Jensen / Den lange rejse / Gyldendal / 1977 / 24-12-2000 Information om bogtypen afhænger af information om bogeksemplaret. Rettelser af typen skal foretages alle steder hvor eksemplaret forekommer

Eksempel efter Udlånstabel LånerId BogId 1001 / 2001/ 24-12-2000 1001 / 2002/ 24-12-2000 Ingen attributter der ikke selv tilhører nøglen må afhænge af en del af nøglen Bogtabel BogId 2001/ Karen Blixen / Vintereventyr / Gyldenldal / 1964 2002/ Johannes V Jensen / Den lange rejse / Gyldendal / 1977 2003/ Karen Blixen / Vintereventyr / Gyldenldal / 1964 Men her er stadig redundans

Forbedring Hvis vi laver en tabel over typer af bøger (værktabel) kan vi yderligere reducere redundansen. Eksemplar 2001 og 2003 tilhører da samme værk fx nr 4001 Værktabel VrkId 4001/ Karen Blixen / Vintereventyr / Gyldenldal / 1964 4002/ Johannes V Jensen / Den lange rejse / Gyldendal / 1977 Eksemplartabel EksId VrkId 2001/ 4001 2002/ 4002 2003/ 4001

Tredje normalform Anden normalform plus Ingen attributter må afhænge af andre attributter der ikke selv er nøgler. Igen: hvis vi kan regne attribut X ud ved at kigge på attribut Y, er X redundant information.

Eksempel før Lånertabel LånerId Navn Vej Postnummer Bynavn 1001 / Peter Jensen / Ringgaden 10 / 7500 / Holstebro Bynavn afhænger af postnummer

Eksempel efter Lånertabel LånerId Navn Vej Postnummer 1001 / Peter Jensen / Ringgaden 10 / 7500 Postnummertabel Postnummer Bynavn 7500 / Holstebro

Summa summarum Svag enhed: kan ikke identificeres ved sine egne attributter Afledt attribut Diskriminator Deltagerkrav: skal have disse deltagere

Sproglig analogi Alle verber har en valens, dvs. stiller krav til antallet og arten af deltagere i aktiviteten Sove: monovalent (Peter Sover) Se: divalent (Peter så Karen) Give: trivalent (Peter gav Karen en cykel)

Øvelse 1. Gruppeopgave Emne: relationelle databaser og entity-relation diagrammer Find et dokument, f.eks. en faktura, billet, en opgørelse fra banken, eller jeres selvangivelse. Rekonstruer dele af den database der ligger bag dokumentet. Brug evt den billet der er vedlagt opgaven Lav et ER-diagram over databasen. ER-diagrammet skal være formelt korrekt. Bestem jer til hvilke elementer der skal være entities, egenskaber ved entities, og relations. Diskuter forholdet mellem databasen og virkeligheden. I hvilket omfang repræsenterer databasen allerede eksisterende entiteter og i hvilket omfang skaber databasen de entiteter den repræsenterer? Hvilke dele af databasen repræsenterer faktuelle påstande om virkeligheden og hvilke udtrykker rettigheder, pligter og forbud? Afleveres næste torsdag via mail til mig.