dd1368 databasteknik föreläsning 1: introduktion from r · • sql (oracle 1978, ibm 1979) -...

11
DD1368 Databasteknik Föreläsning 1: Introduktion Hedvig Kjellström [email protected] 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

Upload: others

Post on 06-Jun-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

DD1368 Databasteknik Föreläsning 1: Introduktion

Hedvig Kjellström [email protected] 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

Page 2: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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

Page 3: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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

Page 4: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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

Page 5: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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

Page 6: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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

Page 7: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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

Page 8: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

<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

Page 9: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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

Page 10: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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

Page 11: DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) - Språk för att hantera frågor till relationsdatabaser - Används i denna kurs DD1368

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