DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) -...
Transcript of DD1368 Databasteknik Föreläsning 1: Introduktion FROM R · • SQL (Oracle 1978, IBM 1979) -...
![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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/1.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/8.jpg)
<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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/9.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062921/5f0325057e708231d407c24e/html5/thumbnails/11.jpg)
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