DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) -...

Post on 06-Jun-2020

11 views 0 download

Transcript of DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) -...

DD1368 Databasteknik Föreläsning 1: Introduktion

Hedvig Kjellström hedvig@kth.se www.csc.kth.se/DD1368

Kan du SQL?

• Förklara skillnaden mellan: SELECT b FROM R WHERE a<10 OR a>=10; och: SELECT b FROM R;

DD1368 Föreläsning 1, 16 januari 2012

a b 5  20 10  30 20  40 … … R

Attribut (attributes)

Tupler (tuples)

Attributvärden (attribute values)

Relation Diskutera med grannen

Mer om SQL i Föreläsning 2

Och de här?

SELECT a FROM R, S WHERE R.b = S.b; SELECT a FROM R WHERE b IN (SELECT b FROM S);

DD1368 Föreläsning 1, 16 januari 2012

a b 5  20 10  30 20  40 … … R

Diskutera med grannen

c b 1  40 2  30 3  40 … … S

Mer om mängder (sets) och multimängder (bags) i Föreläsning 2

Kursinfo

• Kurshemsida: www.csc.kth.se/DD1368 -  All information om kursen, fungerar som kurs-PM -  Titta regelbundet på listan av nyheter -  Inga mail med information skickas!

• Kursbok: H. Garcia-Molina, J. D. Ullman and J. Widom, Database Systems: The Complete Book, 2:a upplagan, Pearson, 2009. -  Nödvändigt att läsa på egen hand

• Examination (betygskriterier på hemsidan): -  LAB2 Tre datorlaborationer, 3 hp (A-F) -  TEN1 Tentamen med skriftlig och muntlig del, 3 hp (A-F)

DD1368 Föreläsning 1, 16 januari 2012

Nya databaskurser på CSC

• Fel med tidigare DD1368: -  För mycket stoff för 6 hp -  Visst stoff saknades -  För många examinationsmoment för 6 hp - Otransparent och orättvis betygsättning

• Total omorganisation! Följer Stanfords modell med: - Grundkurs DD1368 Obligatorisk för D2

–  För alla dataloger: arbeta med existerande databaser, göra mindre databaser för “husbehov”

–  Början period 3 2011/2012

-  Fortsättningskurs DD2471 Valfri för D3, D4 –  För databasspecialister: designa stora databaser –  Början period 4 2012/2013

DD1368 Föreläsning 1, 16 januari 2012

Kursaktiviteter

• Föreläsningar: - Genomgång av teori (de viktigaste bitarna) -  Nödvändigt att också läsa boken!

• Övningar: -  Tillämpning av det vi lärt oss på föreläsningar -  Välj övningsgrupp a, b, c, d fritt - Övningsuppgifterna kommer från boken och liknar

tentauppgifterna

• Datorsalstider: -  Egen programmering (grupper om 2) -  Välj datorsalstiden som motsvarar er övningsgrupp -  Labbar examineras muntligt på vissa tider (A-E på LAB2)

DD1368 Föreläsning 1, 16 januari 2012

Kursaktiviteter

• Labbar och hederskodex: -  Betyg på labbar -  Transparenta betygskriterier -  Avrundning uppåt i betygssammanvägning -  Välvillig bedömning

–  Inga ”kuggfrågor” –  Fokus på att ni ska klara det betyg ni föresatt er

- Minimera examinationstid – maximera hjälptid -  I gengäld förväntar vi oss att ni följer hederskodex:

–  Kopiera inte kod från andra, utan gör hela uppgiften själva –  Diskutera gärna med andra, men formulera era svar själva –  Båda i gruppen ska kunna förklara alla delar av labben

DD1368 Föreläsning 1, 16 januari 2012

Kursaktiviteter

• Tentamen: -  2h skrivning följt av 1h kamraträttning (C-E på TEN1) -  Inga hjälpmedel – testar centrala kunskaper utan

”kuggfrågor” -  Tentauppgifterna liknar övningsuppgifterna - Om C på tentan, muntlig komplettering (A-C på TEN1)

• Alltså: -  Viktigt att läsa i boken och göra uppgifterna i boken! -  Antingen på egen hand eller med hjälp av föreläsningar

och övningar

DD1368 Föreläsning 1, 16 januari 2012

Hedvig Kjellström

• Universitetslektor i datalogi vid CSC • Forskar i datorseende vid CVAP, CSC

DD1368 Föreläsning 1, 16 januari 2012

Exempelbaserad handpose-rekonstruktion

DD1368 Föreläsning 1, 16 januari 2012

p(xt|xt−1)

p(xt|yt, xt−1)

POSE DB HOG space

JOINT space

HOGIMAGE

JOINT space

RESULT

WeightedNN

{xit, w

∗it }

{xit−1, w

∗it−1}

×

Appearance Likelihood

Temporal Likelihood

Konventioner i föreläsningsanteckningar

• Viktiga saker = grön text eller

• Nya begrepp = blå text (med engelsk översättning i parentes)

• Saker som kommer senare = lila text eller

• Plats för studentinput = röd text eller

DD1368 Föreläsning 1, 16 januari 2012

Ruta med grön bakgrund

Ruta med lila bakgrund

Ruta med röd bakgrund

Idag

• Bakgrund (kapitel 1) -  Vad är databaser? -  Databasteknologins utveckling

• Relationsmodellen (avsnitt 2.2–2.3)

• Semistrukturerade modeller (avsnitt 2.1.4)

DD1368 Föreläsning 1, 16 januari 2012

Bakgrund (kapitel 1)

Databaser är kul! !

• Historiskt: Tråkiga grejer som bankregister, register över anställda etc.

• Idag: En central del av alla datateknikområden - Websökning -  Data mining -  Vetenskapliga och medicinska databaser -  Integrering av information, data warehousing

DD1368 Föreläsning 1, 16 januari 2012

Lite om databaser

• Begränsade programmeringsspråk -  Specialiserade på att hitta och representera information

lagrade i databassystem -  Väldigt effektiv och kortfattad kod

• Databaser finns överallt på Internet - Google, Amazon, Blocket, eBay, etc.

• Måste kunna hantera många samtidiga aktiviteter (transaktioner) på databasen -  Tex, två personer ändrar saldot på samma bankkonto

DD1368 Föreläsning 1, 16 januari 2012

Mer om transaktioner i Föreläsning 4

60-talet: Databasernas gryning

• Tidig databas ! katalogträd

• Problem? (diskutera) -  Samma data på flera ställen -  Svårt att hitta data -  Säkerhet, integritet -  Parallellitet

DD1368 Föreläsning 1, 16 januari 2012

70-talet: Relationsdatabaser, SQL

• Relationsdatabaser (Relational Databases) (Codd, 1970) -  Fokus i denna kurs -  Löser problemen ovan -  Nytt: logisk datamodell som är

oberoende av fysisk strukturen

• SQL (Oracle 1978, IBM 1979) -  Språk för att hantera frågor till

relationsdatabaser -  Används i denna kurs

DD1368 Föreläsning 1, 16 januari 2012

80-talet: Fler, andra användare

• Datorer billigare

• Datorer för småföretag -  Även privatpersoner

• Relationsdatabaser, SQL standard

IBM-PC från 1981

DD1368 Föreläsning 1, 16 januari 2012

90-talet: Internet

• Mer mjukvara -  Tex MS Excel/Access

• Datornätverk - Mer komplicerade

databassystem -  DD2471 Modern Database

Systems and Their Applications

• Internet - Många fler användare, nya

krav på användarvänlighet

DD1368 Föreläsning 1, 16 januari 2012

00-talet: Multimedia

• Data med varierande struktur (textdokument mm)

• Lösning: Semistrukturerade databasmodeller (tex XML) -  Senare idag, och i Föreläsning 6

• Mer och mer, ”ostrukturerad” data (fritext, video mm)

• Lösning: Metoder för sökning i stora datamängder -  DD2447 Statistical Methods in Applied Computer Science -  DD2475 Information Retrieval

DD1368 Föreläsning 1, 16 januari 2012

Google-paradigmet

Vad är en datamodell?

1.  Matematisk representation av data relationsmodell = tabeller semistrukturerad modell = träd/grafer

2.  Operationer på data 3.  Begränsningar på vilka värden data kan anta

DD1368 Föreläsning 1, 16 januari 2012

Relationsmodellen (avsnitt 2.2-2.3)

En relation är en tabell

name manf

Winterbrew Pete’s Bud Lite Anheuser-Busch

Beers

DD1368 Föreläsning 1, 16 januari 2012

Attribut (kolumnnamn)

Tupler (rader)

Relationens namn

En relation definieras av sitt schema

DD1368 Föreläsning 1, 16 januari 2012

• Relationsschema (relation schema) = namn och lista av attribut -  Valfritt: attributens typer -  Beers(name, manf) eller Beers(name: string, manf: string)

• Databas (database) = samling relationer

• Databasschema (database schema) = mängd relationsscheman

Varför är relationsmodellen bra?

DD1368 Föreläsning 1, 16 januari 2012

• Enkel modell, effektiv att använda

• Motsvarar ofta hur vi tänker på data - Mer om undantag senare idag

• Matematisk representation för SQL

Exempel på databasschema

Beers(name, manf) Bars(name, addr, license) Drinkers(name, addr, phone) Likes(drinker, beer) Sells(bar, beer, price) Frequents(drinker, bar)

• Understrukna attribut = nyckel/kandidatnyckel (key) -  Definierar tupel unikt: alla attribut i nyckeln kan inte ha

samma värde i två tupler -  Exempel på en begränsning!

DD1368 Föreläsning 1, 16 januari 2012

Mer om modellering i Föreläsning 7, 8

Databasscheman i SQL

• SQL främst frågespråk (DML, data manipulation language)

• Men inkluderar också en datadefinitionsdel (DDL, data definition language)

• Se exempel på definition av databasschema i Laboration 1

DD1368 Föreläsning 1, 16 januari 2012

Skapa (radera) en relation

• Grundform för att skapa: CREATE TABLE <name> ( <list of elements> );

• Grundform för att radera: DROP TABLE <name>;

DD1368 Föreläsning 1, 16 januari 2012

<list of elements>

• Element: ett attribut med typ

• Vanligaste typerna: -  INT eller INTEGER (synonymer) -  REAL eller FLOAT (synonymer) -  CHAR(n) = sträng med fast längd n -  VARCHAR(n) = sträng med variabel längd "n

DD1368 Föreläsning 1, 16 januari 2012

Exempel: skapa tabell

Sells(bar, beer, price) CREATE TABLE Sells ( bar CHAR(20), beer VARCHAR(20), price REAL );

DD1368 Föreläsning 1, 16 januari 2012

Attributvärden i SQL

• Hel- och flyttal är definierade som vanligt

• Strängar noteras med enkel-apostrof, tex ’Joe’ -  Riktiga apostrofer noteras med två, tex ’Joe’’s Bar’

• Alla typer kan anta värdet NULL

DD1368 Föreläsning 1, 16 januari 2012

Datum och tider

• DATE och TIME är typer i SQL

• Datumvärden har formen: DATE ’yyyy-mm-dd’

-  Tex DATE ’2007-09-30’

• Tidsvärden har formen: TIME ’hh:mm:ss’

(och eventuellt decimaler på sekunderna) -  Tex TIME ’15:30:02.5’

DD1368 Föreläsning 1, 16 januari 2012

Ange nycklar

Sells(bar, beer, price)

• Ett attribut eller en lista av attribut kan anges som PRIMARY KEY eller UNIQUE

• Definierar tupel unikt: alla attribut i nyckeln kan inte ha samma värde i två tupler

• Skillnader – diskuteras snart

DD1368 Föreläsning 1, 16 januari 2012

Mer om nycklar i Föreläsning 7

Ange nycklar med enkla attribut

• Placera PRIMARY KEY eller UNIQUE efter typen

• Exempel: Beers(name, manf) CREATE TABLE Beers ( name CHAR(20) UNIQUE, manf CHAR(20) );

DD1368 Föreläsning 1, 16 januari 2012

Ange nycklar med multipla attribut

• Nyckeldeklaration ett eget element i CREATE-satsen

• Exempel: Sells(bar, beer, price) CREATE TABLE Sells ( bar CHAR(20), beer VARCHAR(20), price REAL, PRIMARY KEY (bar, beer) ); • Kan användas för nycklar med enkla attribut också

DD1368 Föreläsning 1, 16 januari 2012

Skillnad PRIMARY KEY – UNIQUE

1.  En relation kan ha endast en PRIMARY KEY men flera UNIQUE-attribut

2.  Ingen del av PRIMARY KEY kan vara NULL i någon tupel, men UNIQUE-attribut kan ha värdet NULL

DD1368 Föreläsning 1, 16 januari 2012

Mer om nycklar i Föreläsning 7

Diskutera med grannen i 5 min

• Datamängd där dataexempel har varierande innehåll -  Vissa attribut stämmer in på vissa exempel, andra på

andra exempel

• Det kommer också nya dataexempel hela tiden, med nya typer av attribut

1.  Vilka problem kan uppstå när man försöker lagra denna data i en relationsdatabas?

2.  Hur skulle en alternativ datamodell kunna se ut?

DD1368 Föreläsning 1, 16 januari 2012

Semistrukturerade modeller (avsnitt 2.1)

Semistrukturerad data

• Alternativ datamodell – träd istället för matriser/tabeller -  Analogi: Länkade listor istället för vektorer

• Motivering 1: flexibel datarepresentation, passar dokument

• Motivering 2: representation av data för överföring mellan olika datamodeller

DD1368 Föreläsning 1, 16 januari 2012

Graphs of Semistructured Data

• Noder = objektinstanser • Lövnoder (noder utan barn) = attributvärden • Namn på kanter = attribut

• Flexibelt – inga begränsningar på: -  Antal kanter ut från en nod -  Typer av kanter ut från en nod

DD1368 Föreläsning 1, 16 januari 2012

Exempel

DD1368 Föreläsning 1, 16 januari 2012

Bud!

A.B.!

Gold!1995!

Maple!Joe’s!

M’lob!

beer! beer!bar!

manf!manf!

servedAt!

name!

name!name!

addr!

prize!

year! award!

root!

Bar-objektet för Joe’s Bar

Beer-objektet för Bud

Ny sorts data! !

XML (Extensible Markup Language)

• HTML: tags för formatering (tex “italic”), • XML: tags för semantik (tex “det här är en adress”)

• Grundidé: Skapa en mängd tags för en domän (tex astronomi), och “tagga upp” all data så att varje datapunkt är (del av) ett XML-dokument (delträd i det stora trädet)

DD1368 Föreläsning 1, 16 januari 2012

Mer om semistrukturerade datamodeller och XML i Föreläsning 6

Exempel

<?xml version = “1.0” encoding = “utf-8” ?> <BARS> <BAR><NAME>Joe’s Bar</NAME> <BEER><NAME>Bud</NAME> <PRICE>2.50</PRICE></BEER> <BEER><NAME>Miller</NAME> <PRICE>3.00</PRICE></BEER> </BAR> <BAR>

… </BARS>

DD1368 Föreläsning 1, 16 januari 2012

Härnäst

• 18/1: Föreläsning 2 (Relationsalgebra, SQL) -  Läs avsnitt 2.4, 5.1, 6.1-6.3 i boken

• Nu-15,16/2: Laboration 1 (Databasprogrammering) -  Registrera dig som aktiv på kursen i Rapp -  Välj labpartner (grupper om 2)

–  Ingen labpartner? Kom fram i pausen på Föreläsning 2 –  Ej större grupper än 2 –  Ensamlabbande i undantagsfall

-  Välj övningsgrupp (a, b, c, d) –  Samma grupp som din labpartner

• Kurshemsida: www.csc.kth.se/DD1368

DD1368 Föreläsning 1, 16 januari 2012