dd1368 databasteknik föreläsning 1: introduktion from r · • sql (oracle 1978, ibm 1979) -...
TRANSCRIPT
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
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