Introduktion til programmering Databaser Uge 45 Computer Science, kap 9. Hugh Darwen: what a database really is, G. Riccardi: Princples of database systems, kap 2., kompendium.
Eksamen Eksamensfordringer Den studerende skal demonstrere viden om centrale begreber i forhold til IT, samt færdigheder i programmering og datamodellering, i forhold til konstruktion af IT-systemer. Eksamensbestemmelser: Under forudsætning af aktiv, regelmæssig og tilfredsstillende deltagelse i undervisningen, samt tilfredsstillende besvarelse af et antal obligatoriske opgaver, består prøven i en mundtlig eksamen, hvori der indgår en praktisk del relateret til programmering Forslag til eksamensform: Der opgives en halv snes emner som f,.eks. funktioner, variable, algoritmer, datatyper, netværk, iteration, rekursion, AI, programmeringsparadigmer, dynamiske hjemmesider, relationelle databaser, SQL, Entity-Relation. Man trækker et emne og bliver bedt om at fortælle om det og illustrere det med eksempler fra en af de opgaver man har lavet. Tid: 15 min.
Sidste gang AI klassisk Problemløsning og planlægning Vidensrepræsentation AI moderne Agenter Biologisk inspirerede tiltag Emergens Konnektionisme Genetiske algoritmer Turingmaskiner
Plan Databaser Relationelle databaser Modellering ER-diagrammer Normalisering
Databaser Hvad er en database? En samling af relaterede data DBMS Der beskriver 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)
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
Views: https://ishtar.imv.au.dk
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 Fortolkning: verden består af entiteter imellem hvilke der hersker relationer
Relationelle databaser Består af Tabeller, der indeholder data Relationer, der beskriver sammenhænge mellem tabeller Alt er tabeller
Relationstabeller
Sproglig analogi 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...
Eksempel fra sidste uge Kolonne [['2', 'Anders', '8000', 'atl@gadgate.dk'], ['4', 'Anders', '8260', 'andershylle@hotmail.com'], ['5', 'Anne', '8200', '20031504@post.au.dk'], ['6', 'Gustav', '8200', 'gustavberner@gmail.com'], ['7', 'Hanne', '8200', '20033160@post.au.dk'], ['8', 'Jakob', '8000', 'jm2@stofanet.dk'], ['10', 'Liv', '8000', '20020808@post.au.dk'], ['11', 'Louise', '8000', '20020329@post.au.dk'], ['12', 'Martin', '8000', 'moelgaard81@stofanet.dk'], ['14', 'Nicolai', '8000', 'nicolai@sonder.dk'], ['15', 'Rune', '8200', 'runelippert@laiv.dk'], ['16', 'Sigrid', '8000', 'sigrid@pc.dk'], ['17', 'Sofie', '8000', '20022613@post.au.dk'], ['18', 'Torbj\xf8rn', '8000', 'torbjoern.secher.stridbaek@post.au.dk'], ['19', 'Vinca', '8200', '20031271@post.au.dk'], ['23', 'Morten', '8000', 'mortenk@imv.au.dk']] Række
ER-diagrammer Modelleringsform til dataanalyse Entiteter - ting i verden 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
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) data 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 Felis, 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 1-m 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
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 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 han lånte den den 5-3-2005 Tema Rhema
Generelt En række skal kunne identificeres ved én eller flere nøgler Der skal være en kendt 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)
Anden obligatoriske opgave Rejsehjemmel: Type: enkelt, standard, Antal passagerer: 1 voksen, Udrejsedata: 23.okt.2005, Normaldag, Afrejsested: Århus H (01-04), Destination: Vejle (20), Via: ikke oplyst, Solgt: 23. okt. 2005 11:11., Pris: 85,00 DKK Reservation Type: standard, Antal passagerer: 1, Kupetype: ikke ryger, Afrejsedato: 23.okt.2005, Afrejsested: Århus H, Destination: Vejle, Afrejsetidspunkt: 11:30, Ankomsttidspunkt: 12:14, Vogn: 12, Plads: vinduesplads, 25, Solgt: 23. okt. 2005 11:11., Pris: 20,00 DKK Emne: relationelle databaser og entity-relation diagrammer Lav et entity-relation diagram der beskriver en database hvorfra disse informationer kan være udtrukket. I skal bruge Hugh Darwen: what a database really is samt notationen i G. Riccardi: Princples of database systems, kap 2, fig. 2.7 (begge i kompendiet). Diskuter forholdet mellem databasen og virkeligheden. Afleveres d. 15-11.