Introduktion til programmering



Relaterede dokumenter
Introduktion til programmering

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

Data lagring. 2. iteration (implement backend)

PRÆSENTATION AF ER-DIAGRAMMER OG NORMALISERING

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

Databaser. 3. Normalform. Mette Frost Nielsen

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

Skriftlig eksamen i. Databaser. Vinter 2002/2003. Vejledende løsninger

Skriftlig eksamen i kurset. Informationssystemer

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Skriftlig eksamen i. Databaser. Vinter 2002/2003

Database. lv/

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

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

Karens lille vejledning til Access

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

DATABASE - MIN MUSIKSAMLING

DB undervisning 01-01

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Undervisningsbeskrivelse

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

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

Introduktion til SQL

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

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

CFunding-IT. Web DB Multimediedesigner 3. Semester Gruppe 15

Software Projekt NoSQL vs RMDB

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4

Dataanalyse og databaser

Programmeringscamp Opbygning og specialisering af klassehierarki. Simulering af en kasselinje

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Jørgen Koch. Access. Opgavehæfte

Database kursus Forår 2013

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Informations- og datamodellering

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

DEN GODE MODEL: OPSAMLING PÅ MODELLERINGSOPGAVER OG INTRO TIL MODELLERINGSALTERNATIVER

Smagsprøve. Databasedesign med Access 2000

Projekt database. 3 Semester - Mul a Projekt 1. Yaser Osman cph-mo102@cphbusiness.dk. Dan Eskildsen cph-de32@cphbusiness.dk

Introduktion til SQL queries

Database design for begyndere

SQL Server 2016 Data Adgang

En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin

Anvisning i aflevering af bitemporale data

Databasesystemer. IT Universitetet i København 8. juni 2006

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

Databaseteori. 19. Databaser. 20. Kartotek eller database. 21. Database

Anne Randorff Højen

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

Personnummerregister / CPR Importer

Database for udviklere. Jan Lund Madsen PBS10107

Database. Pr jekt. Hold CLmul-a14e Gruppe 3 3. semester Vejledere: Tue Becher Ivan R. Frederiksen

1. Opret følgende flade database, find selv passende datatyper. 2. Opret begrænsningerne på datatyperne, du ser fx fornavn maks 25 tegn

Eksamen, DSDS, efterår 2007

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

Sammenknytning af listedata fra MUD til tabel i MapInfo (SVM-eksempel)

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Brugervejledning til databrowseren

Manglende konsistens i datamodellen og upræcise SQLsætninger er årsagen til, at mange IT-systemer fejler.

3. semester, 2. projekt: Database

Integrationer. Praktikportal projektet Oktober 2014 Version 1.1

Jayne Alice Jensen [Link til portfolio]

DATABASE Projekt 1-3. semester

Skriftlig opgave. Designtanker i database-nære systemer

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Relationel Algebra og SQL

Indholdsfortegnelse for kapitel 3

Septimas høringssvar vedrørende dokumenteterne FKG datamodellen - Version Fysisk implementering.pdf og FKG_2_3_1_mssql.sql

Kender jeg Kim Fupz Aakeson? Se på billederne side 21, 23, 25 og 27. Her er billeder af 4 bøger:

Vejledning i opdatering af vandindvindingsanlægsoplysninger

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Logning. V/ Hans Kennet Larsen

Casper Fabricius ActiveRecord. O/RM i Ruby on Rails

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Indholdsfortegnelse. Systembeskrivelse kapitel 8 Administrationsdatabase

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.

Plan Oprette jer på IMV s server (øvelse uge 36) og prøve lidt SQL hvis der er tid. Frokost Databaser Relationelle databaser Modellering ER-diagrammer Øvelse (Lav et ER-diagram) (øvelse uge 37) Normalisering Øvelse (normalisering) (øvelse uge 37)

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

Entity-Relation Tre grundelementer

Database system Brugere Forespørgsler Select, Insert, Delete Software der behandler forespørgsler Implementering af Select, Insert, Delete DBMS Software der tilgår data Databasedefinitions (metadata) Overskriften Databasens indhold (listen af lister)

Lag Bruger Bruger Arbejdsopgaver Eksternt view Eksternt view Præsentation af info (tabeller, diagrammer) Konceptuelt skema Begreber der undstøtter præsentationen Internt skema

Eksterne views

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

Relationstabeller felt Række/ Post

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 Navn Art Ejer Kæledyr Fødselsdag Dødsdag

ERnotation 1

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

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

Hvad kan siges om verden? 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) (fixed length, right padded) date int Serial (auto increment) Varchar(n), text, mediumtext, longtext 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 Mulighed for at definere not NULL, resulterer i fejlmeddelelse hvis intet bliver indsat

Kæledyrene igen Kæledyr Navn : tekst Art: tekst Fødsel, Død : dato Person Navn : tekst Typisk skematisk opbygning se side 29 i principles of DB systems

Kæledyr igen Navn (varchar(15) Art (varchar(10) Fødsel (Dato) Død (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 unik 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: serial

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) Navn Varchar(20) 1 Peter 2 Peter 3 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 (Int) 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 Ejet af

Relation entitet 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 ID Navn 1 Peter 2 Alexander Ejerskab Subj Obj 1 1 2 1 1 2 2 2 Kæledyr ID Navn 1 Mette 2 Pasmus

Øvelse lav et ER-diagram Vi laver først et ER-diagram sammen på tavlen Dernæst går I ud i grupper og laver et ER-diagram, enten over den billet og reservation der findes i øvelsen for uge 37 eller også over noget i selv synes er spændende

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.

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) 1 Mette Perser, Felix 2 Rasmus Perser, Felix Fødsel (Dato) Død (dato) 2005-01-07 NULL 1 2005-01-03 NULL 1 Owne d by Int4

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) 1 Mette 1 2005-01-07 NULL 1 2 Rasmus 1 2005-01-03 NULL 1 Owned by Int4 Art ID Navn Species 1 Perser Felix 2 Grand Danois Canis

Egenskab Entitet Navn Navn ErEn 1 Art Kæledyr M M Species Fødselsdag Dødsdag Ejet af 1 Person Navn

Normalisering Trinvis metode til at forbedre et databasedesign 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

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

Bor i Summa summarum Svag enhed: kan ikke identificeres ved sine egne attributter Afledt attribut Diskriminator Postnr Bynavn By 1 Deltagerkrav: skal have disse deltagere LånerId M Navn Vej dato Forlag År Låner 1 M 1 Udlån Subj Obj M Bøger UdlånsAnt UdlånsAnt UdlånsAnt BogId Forfatter

Øvelse - normalisering Gennemgå jeres ER-diagram fra før og se om det stemmer overens med de tre normalformer. Hvis ikke, så ret det til så det overholder reglerne.