Database kursus Forår 2013 Jacob Aae Mikkelsen Database design og programmering/databaser fra Organisationsorienteret softwareudvikling 1
Praktisk info Lærebog Database Systems: The Complete Book Skema 2 timers eksaminatorier og 2 timers forelæsning om ugen i 12 uger (dog ingen eksaminatorier i uge 1) Eksaminatorier 1: Tirsdag 12.15-14.00 Eksaminatorier 2: Tirsdag 14.15-16.00 Forelæsning: Tirsdag 16.15-18.00 Alle timer i AUD1 2
Evaluering: DM505 a) Projekt b) 24 timers take-home eksamen Hver bidrager med halvdelen af det samlede pointtal Hvornår: Det skal vi I fællesskab finde ud af, da kurset ikke er færdig i 3. kvartal. 3
Evaluering: Ingeniører 2 Obligatoriske opgaver Midtvejs eksamen: Multiple choice 3 timers multiple choice fælles (med 2 andre fag) Mundtlig eksamen (med 2 andre fag) 4
Hvor bruges databaser? Tidligere, en masse kedelige steder: Corporate data Løn, lagerstatus, salg, kunder... Bank systemer Aktiehandel Airline systems... 6
Hvor bruges Databaser? I dag, bruges databaser I en lang række områder: Web: Web søgning (Google, Live, Yahoo,...) Sociale netværk (Facebook,...) Blogs, forums... Integreret data (data warehouse) Scientific and medical databases... 7
Hvorfor bruge Databaser? Nemme at bruge Fleksibel søgning Effektive Central storage, multi-bruger adgang Skalerbarhed (store mængder data) Sikkerhed og konsistent data Skjuler detaljer om opbevaringsmåde God data modellering 8
Hvorfor lære om databaser? Bruges alle steder En del af næsten alle software løsninger DB ekspertise er en efterspurgt egenskab Interessant: Mix af forskellige krav Mix af forskellige metoder Integreret del af data driven development Interessante 'rigtige' eksempler 9
Kort historie om Databaser Tidlige 60ere: Integrated Data Store, General Electric, første DBMS, network data model Sene 60ere: Information Management System, IBM, hierarchical data model 1970: E. Codd: Relational data model, relational query languages, Turing prize Midt 70erne: Første relational DBMSs (IBM System R, UC Berkeley Ingres,...) 80erne: Relationelle model de facto standard 10
Historie, fortsat 1986: SQL standardiseret 90erne: Object-relational databaser, object-oriented databaser Sene 90ere: XML databases 1999: SQL indarbejder nogle OO features 2003, 2006: SQL indarbejder support for XML data... 11
Nuværende Database Systemer DBMS = Database Management System Many producenter (Oracle, IBM DB2, MS SQL Server, MySQL, PostgreSQL,... ) Alle ret ens Meget store systemer, men lette at bruge Fælles egenskaber: Relationelle model SQL som query language Server-client arkitektur 12
Transaktioner Samling af statements der skal udførs samlet Eksempel: Overføre penge mellem kontoer Trække penge fra den 1. Lægge til den anden Penge må ikke gå tabt! Penge må ikke opstå ud af det blå! 13
ACID Egenskaber for transaktioner A for atomicity Alle eller ingen C for consistency constraints er gyldige både før og efter transactionen I for isolation illusion af sekventiel udførsel af hver transaktion D for durability Påvirkningen af en færdig transaktion må ikke gå tabt 14
Database udvikling Krav specifikation (ikke her) Data modellering Database modellering Applikations programmering Database optimering 15
Database Course Contents E/R-model for data modeling Relationelle data model SQL sproget Adgang via JAVA (JDBC) Basale udviklings principper DB tuning Bem: Dette kursus SQL kursus Dette kursusu PostgreSQL kursus 16
Data Model 17
Hvad er en Data Model? Matematisk representation af data relational model = tabeller semistruktureret model = træer/grafer... Operationer på data Restriktioner 18
En relation er en tabel Attributter (Kolonne navne) Tupler (rækker) name Odense Classic manf Albani Erdinger Weißbier Erdinger Relationens navn Beers Bem: Rækkefølgen af attributter og tupler er irrelevant 19
Schemas Relation schema = relationens navn og listen af attributter Anbefalet: typen på attributter Eksempel: Beers(name, manf) eller Beers(name: string, manf: string) Database = Samling of relationer Database schema = alle relation schemas i databasen 20
Hvorfor Relationer? Yderst simpel model Ofte matcher måden vi tænker på data Abstrakte model der ligger basis for SQL, det mest brugte forespørgsels sprog. 21
Løbende eksempel Beers(name, manf) Bars(name, addr, license) Drinkers(name, addr, phone) Likes(drinker, beer) Sells(bar, beer, price) Frequents(drinker, bar) Understreget = key (tupler kan ikke have den samme værdi I alle key attributerne) Godt eksempel på en begræsning 22
Database Schemas i SQL SQL is primært et forespørgsels sprog, for at hente information fra databasen Men SQL inkluderer også et data-definition element for at beskrive database schemas 23
Oprette en Relation Simpleste form er: CREATE TABLE <name> ( <list of elements> ); For at slette en relation: DROP TABLE <name>; 24
Tabel Oprettelse Mest basale element: en attribut og dens type Mest almindelige typer er: INT / INTEGER (synonymer) REAL / FLOAT (synonymer) CHAR(n ) = fast-længde string på n bogstaver VARCHAR(n ) = variabel-længde string på op til n bogstaver 25
Eksempler: Create Table CREATE TABLE Sells ( bar CHAR(20), beer VARCHAR(20), price REAL ); 26
SQL Værdier Integer og real er representeret som du ville forvente Strings er også, men de kræver enkelt ping'er Two pinger = en rigtig, dvs., Trader Joe s Hofbrau Bock Enhver værdi kan være NULL (ligesom Objekter i Java) 27
Dato og Tid DATE og TIME er typer i SQL Formatet for date er: DATE yyyy-mm-dd Eksempel: DATE 2009-02-04 for 4. februar, 2009 28
Time som værdi Formatet for time er: TIME hh:mm:ss med valgfri decimaler for sekunder efterfølgende Eksempel: TIME 15:30:02.5 = to og et halvt sekunder efter 15:30 29
Erklæring af Keys En attribut eller en lise af attributter kan erklæres PRIMARY KEY eller UNIQUE Begge siger at to tupler i relationen ikke må have de samme værdier i disse attributter Der er et par forskelle vi kommer til senere. 30
Erklæring af 1 Attribut som Key Placer PRIMARY KEY eller UNIQUE efter typen i erklæringen af attributten Eksempel: CREATE TABLE Beers ( ); name manf CHAR(20) UNIQUE, CHAR(20) 31
Erklæring af fler-attribut Keys EN key erklæring kan også være sin egen linie i CREATE TABLE Det er essentielt hvis key består af mere end 1 attribut Kan bruges for 1-attribut også 32
Eksempel Bar og beer sammen er key for Sells: CREATE TABLE Sells ( bar CHAR(20), beer VARCHAR(20), price REAL, PRIMARY KEY (bar, beer) ); 33
PRIMARY KEY vs. UNIQUE 1. Der kan kun være én PRIMARY KEY for en relation, men flere UNIQUE attributter 2. Ingen attribut I en PRIMARY KEY kan være NULL i nogen række. Men attributter erklæret UNIQUE kan have NULL, og der kan være flere af dem med NULL 34
Andre betingelser Overvej hvilke betingelser der gælder for relationen: Person( foedselsdato:int, cpr:int, fornavn: varchar(30), mellemnavn: varchar(30), efternavn: varchar(30), maanedsloen: int, parkeringsplads: int)
Andre betingelser: Check Det er muligt at opsætte betingelser på data med CHECK, Eksempel: create table checktest ( cpr int check( cpr >= 0 && ); cpr < 10000)