Relationsalgebra. Varför behöver jag lära mig relationsalgebra?!

Storlek: px
Starta visningen från sidan:

Download "Relationsalgebra. Varför behöver jag lära mig relationsalgebra?!"

Transkript

1 Relationsalgebra 1 Varför behöver jag lära mig relationsalgebra?! Relationsmodellen är den datamodell som används i de flesta moderna databassystemen Data beskrivs och lagras som relationer, dvs. som ett antal tabeller. För att accessera data gör man operationer på tabellerna. Operationerna uttrycks med användning av relationsalgebra. T.ex. för att göra sökningar av olika slag i en databas, eller för att sätta in ny information i en databas. Frågespråket SQL grundar sig på relationsalgebra. Kan man relationsalgebra så är det lätt att lära sig SQL. 2

2 Frågespråk! Frågespråk används för att hämta information från en databas. Användaren formulerar frågor mot databasen med användande av ett formellt språk. Språkkategorier: Procedurella språk.! Programmet beskriver exakt den behandling som skall utföras för att få fram det önskade resultatet. Icke-procedurella språk, också kallade deklarativa språk! Programmet beskriver vad man vill få som resultat, utan att exakt behöva beskriva hur det skall beräknas. Det finns flera olika rena frågespråk, eller teoretiska frågespråk: Relationsalgebra Tupelrelationskalkyl Domänrelationskalkyl De rena språken utgör grunden till de frågespråk som används i praktiken, t.ex. i SQL. 3 Relationsalgebra! Relationsalgebran har sex grundläggande operationer: select: σ (sigma) project: (pi) union: (mängdunion) mängddifferens: Kartesisk produkt: x rename: ρ! (rho) (minustecken) (krysstecken) Operatorerna tar en eller två relationer som input och producerar en ny relation som resultat. Dvs. de tar som input en eller två tabeller och producerar som resultat en ny tabell. Operatorerna select, project och rename är unära operatorer De tar en enda relation som argument. Operatorerna union, differens och kartesisk produkt är binära operatorer De tar två relationer som argument. 4

3 Select-operationen σ! Select-operationen väljer ut de tupler som uppfyller ett visst villkor i en tabell Resultatet returneras som en ny tabell Exempel: finn alla föreläsare som har en lön över σ salary > (instructor) instructor! resultat av select-satsen 5 Select-operationen Exempel! Antag att vi har en relation r med fyra attribut A, B, C och D Välj de tupler i r där A=B och D>5! σ A=B D > 5 (r) Resultatet blir en tabell med de rader ur tabellen r där attributet A har samma värde som B, och attributet D är större än 5. r! A! B! C! D! 5! 1 23! 7! 7! 3! A! B! C! D! 7! 23! 6 3!

4 Definition av select-operationen! Notation: σ p (r) där p kallas selektionspredikatet! Väljer ut ur relationen r de tupler som uppfyller predikatet p Definieras som: σ p (r) = { t t r and p(t) }! Dvs. mängden av de tupler t sådana att t hör till relationen r och predikatet p gäller för t! Ger de rader i tabellen r sådana att selektionspredikatet p gäller för dem p är en formel i propositionskalkylen som består av termer förenade med (and), (or), (not) Varje term är en jämförelse mellan två attribut, som t.ex. salary < budget eller ett attribut och en konstant, som t.ex. salary > där jämförelseoperatorn kan vara en av: =,, >,, <, 7 Exempel på select! Finn alla föreläsare som hör till fysik-institutionen σ dept_name = Physics (instructor) väljer ur tabellen instructor de tupler för vilka attributet dept_name har värdet Physics instructor! resultat av select-satsen 8 4!

5 Projekt-operationen! Project-operationen ger som resultat en tabell som bara innehåller de specificerade attributen, och lämnar bort alla andra attribut Antag att vi vill lista ID, namn och lön för alla föreläsare, men inte vill ha med namnet på institutionen: ID, name, salary (instructor) instructor! resultat av project-satsen 9 Projekt-operation Exempel! Resultatet av en project-operation är en mängd av tupler Mängder innehåller inga duplikat, så identiska tupler elimineras ur resultatet Antag att vi har en tabell r med tre kolumner A, B och C och skapar en ny tabell som bara innehåller kolumnerna A och C A,C (r)! Identiska tupler tas bort ur resultatet, som bara kommer att ha 3 rader r! resultat av project-satsen A! B! C! A! C! A! C! 20! = 30! 40! 10 5!

6 Projekt-operation! Notation: A,, ( ) 1 A r 2, A k där A 1, A 2,..., A k är namn på attribut i r och r är ett namn på en relation. Endast de listade attributen i relationen r tas med i resultatet Alla övriga attribut lämnas bort Resultatet är den relation med k kolumner som man får genom att bara ta med kolumnerna A 1, A 2,, A k från tabellen r Duplikatrader tas bort från resultatet, eftersom relationer är mängder och inte kan innehålla duplikat. 11 Sammansatta frågor! Resultatet av en operation i relationsalgebran är en tabell Man kan göra vidare operationer på dessa tabeller Kan kombinera flera operationer till godtyckligt komplexa uttryck Exempel: Finn namnet på alla föreläsare i fysik-institutionen name (σ dept_name = Physics (instructor) )! Resultatet av operationen σ dept_name = Physics (instructor) är en tabell med alla föreläsare som hör till institutionen med namn Physics. resultat På den tabellen utför vi en project-operation och lämnar bara kvar attributet name 12 6!

7 Union-operationen! Union-operationen kombinerar tuplerna från två tabeller. Inga duplikat-tupler tas med i resultatet. Exempel: Vilka kurser förläses under höstterminen 2009 eller under vårterminen 2010, eller båda De kurser som föreläses under höstterminen 2009 får vi med course_id (σ semester= Fall year = 2009 (section)) De kurser som föreläses under vårterminen 2010 får vi med course_id (σ semester= Spring year = 2010 (section)) Svaret på vår fråga är unionen av båda dessa delresultat course_id (σ semester= Fall year = 2009 (section)) course_id (σ semester= Spring year = 2010 (section)) 13 Illustration av! course_id (σ semester= Fall year = 2009 (section)) course_id (σ semester= Spring year = 2010 (section)) section resultat 14 7!

8 Union-operation Exempel! Antag att vi har två relationer r och s:! A! B! A! B! Vi kombinerar de två relationerna till en ny relation genom att göra en union av dem r s: Resultatet är en tabell som innehåller alla tupler från r och alla tupler från s r! 3! s! Inga duplikat-tupler tas med resultat av r s A! B! 3! 15 Definition av union-operationen! Notation: r s! Union-operationen definieras som: r s = {t t r or t s} D.v.s. mängden av de tupler t sådana att t hör till r eller t hör till s Union-operationen kombinerar tuplerna i de två relationerna till en enda relation, utan att skapa några dubbletter Motsvarar en normal mängdunion För att unionen av två relationer r och s skall vara giltig krävs att 1. r och s måste ha samma aritet (dvs. samma antal attribut) 2. Attributens domäner måste vara kompatibla (dvs. kolumnerna i r skall innehålla samma typ av värden som kolumnerna i s) 16 8!

9 Mängddifferens-operationen! Mängddifferens-operationen r s ger som resultat en tabell med de tupler som finns i relationen r men som inte finns i relationen s Exempel: Vilka kurser förläses under höstterminen 2009 men inte under vårterminen 2010 course_id (σ semester= Fall year = 2009 (section)) course_id (σ semester= Spring year = 2010 (section)) section resultat 17 Mängddifferens - Exempel! Antag att vi har två relationer r och s: A! B! A! B! 3! s! r! Differensen r s mellan relationerna r och s blir då! r-s! A! B! 18 9!

10 Definition av mängddifferens! Notation r s! Definieras som: r s = {t t r and t s}! D.v.s. mängden av tupler t sådana att t hör till r och t hör inte till s Ger som resultat en ny relation som innehåller de tupler som finns i r men inte i s Mängddifferens måste tas mellan kompatibla relationer. r och s måste ha samma aritet Attributdomänerna för r och s måste vara kompatibla 19 Kartesisk produkt x! Används för att kombinera information i två eller flera tabeller Den kartesiska produkten r x s av två tabeller r och s bildar alla kombinationer av tuplerna i r med tuplerna i s Exempel: finn namnen på alla föreläsare i Fysik-institutionen och kurs-id för de kurser som dessa föreläser. Information om föreläsare finns i relationen instructor! Information om kurser och vem som föreläser dem finns i relationen teaches! instructor! teaches! 20

11 Kartesisk produkt (forts.)! Vi bildar den kartesiska produkten av tabellerna instructor och teaches! Kombinerar varje rad i instructor med varje rad i teaches Figuren visar bara en del av instructor x teaches eftersom tabellen blir mycket stor. Resultatet kommer att ha 12*15 = 180 rader. Attributnamnen ID i instructor och teaches görs entydiga genom att appendera relationens namn. Kallas instructor.id och teaches.id i den kartesiska produkten. 21 Kartesisk produkt (forts.)! För att bara ta med lärare i Fysik-institutionen gör vi en select-operation på resultatet av den kartesiska produkten. Vi väljer ut bara de tupler där dept_name är Physics σ dept_name= Physics (instructor x teaches) 22 1

12 Kartesisk produkt (forts.)! Vi vill bara ha information om de kurser som en föreläsare vid Fysikinstitutionen håller. D.v.s vi skall ännu välja ut de tupler som har samma värde på attributen instructor.id och teaches.id Det här betyder att kursen har hållits av just en av föreläsarna vid Fysik-institutionen, och inte av någon annan σ instructor.id=teaches.id (σ dept_name= Physics (instructor x teaches)) Eftersom vi bara vill ha föreläsarens namn och kurs-id så gör vi en projektion på de här attributen och lämnar bort alla andra name, course_id (σ instructor.id=teaches.id (σ dept_name= Physics (instructor x teaches))) Resultatet blir en tabell med en rad: resultat 23 Kartesisk produkt - Exempel! Den kartesiska produkten kombinerar information i två eller flera tabeller A! B! C! D! E! Relationerna r, s: r x s innehåller alla kombinationer av tuplerna i r med tuplerna i s r! A! B! C! D! β! γ! γ! γ! s! 20! 20! 20! E! a! a! b! b! a! a! b! b! a! a! b! b! 24 1

13 Definition av kartesisk produkt! Notation r x s Definierad som: r x s = {t q t r and q s} Mängden där man kombinerar en tupel t med en tupel q sådana att t hör till r och q hör till s Kombinerar informationen i två relationer till en enda relation. Bildar alla parvisa kombinationer av tuplerna i r med tuplerna i s Om r har n tupler och s har k tupler så kommer den kartesiska produkten att ha n*k tupler. Vi antar här att attributen för relationerna r och s är disjunkta. Dvs. att R S = Relationsscheman för r och s har inga gemensamma attribut Om attributen för r och s inte är disjunkta måste man ge dem nya namn så att alla attribut får olika namn. Om både r och s har ett attribut med namnet a kan vi skilja på dessa genom att referera till dem som r.a och s.a 25 Rename-operationen ρ! Ger namn åt tabeller som vi får som resultat av uttryck i relationsalgebran. Relationer som vi får som ett resultat när vi utför ett uttryck i relationsalgebran har inget namn. Kan också använda rename-operationen för att referera till en relation med flera än ett namn. Operationen ρ x (E) returnerar uttrycket E med namnet X ρ är den grekiska bokstaven rho ger ett nytt namn åt hela relationen E, dvs. åt en hel tabell Man kan också ge nya namn åt de individuella attributen i en relation. Om ett uttryck E i relationsalgebran har ariteten n, dvs. antalet attribut i E är n, så returnerar operationen ρ x(a1, A2,, An) (E) resultatet av uttrycket E under namnet X och med attributen i E omdöpta till A 1, A 2,., A n 26 13!

14 Exempel på rename! Ge relationen tabell4 ett nytt namn lager och de tre attributen A, B och C de nya namnen nr, färg och storlek ρ lager(nr, färg, storlek) (tabell4) Exempel: finn den högsta lönen i vår universitetsdatabas Görs i två steg: A! B! Skapa en temporär tabell av löner som inte är de största Ta mängddifferensen av alla löner och den temporära tabellen.! Vi får en tabell över alla löner med salary (instructor) Resultatet av mängddifferensen mellan de här två tabellerna blir den största lönen. 4! 5! tabell4! blå! röd! gul! vit! C! L! XL! S! M! nr! 4! 5! lager! färg! storlek! blå! röd! gul! vit! L! XL! S! M! 27 Exempel på rename (forts.)! För att få en tabell med de löner som inte är de största jämför vi alla löner parvis med varandra Vi bildar den kartesiska produkten instructor x instructor och väljer ut de tupler som är parade ihop med ett större värde på salary. Vi måste ge ett nytt namn d åt den ena instructor-tabellen så att vi kan referera till två olika attribut salary. instructor.salary (σ instructor.salary < d.salary (instructor x ρ d (instructor))) Sedan tar vi skillnaden mellan alla löner och den temporära tabellen med de löner som inte är de största salary (instructor) instructor.salary (σ instructor.salary < d.salary (instructor x ρ d (instructor)))! resultat 28 14!

15 Sammansatta operationer! Man kan bygga uttryck genom att kombinera flera operationer. Resultatet av ett uttryck i relationsalgebran är en relation. En operation i relationsalgebran kan operera på resultatet av ett annat uttryck. Man kan kombinera operationer till godtyckligt komplexa uttryck förutsatt att relationerna som de opererar på är kompatibla. Exempel: σ A=C (r x s) Kombinera tabellerna r och s till en ny tabell som innehåller de rader där A-kolumnen har samma värde som C-kolumnen A! B! r! C! D! γ! s! 20! E! a! a! b! b! 29 Exempel: σ A=C (r x s) Gör först korsprodukten av r och s! Illustration! Ur korsprodukten tar vi de tupler som har samma värde på attributen A och C σ A=C (r x s) A! B! C! D! E! A! B! r x s! C! D! β! γ γ! 20! 20! E! a! a! b! b! a! a! b! b! 20! a! a! b! 30 15!

16 Formell definition av uttryck i relationsalgebra! Ett grundläggande uttryck i relationsalgebran består antingen av: En relation i databasen t.ex. relationen instructor En konstant relation t.ex. {22222, Einstein, Physics, 95500} Om E 1 och E 2 är uttryck i relationsalgebran så är följande också uttryck i relationsalgebran: E 1 E 2 E 1 E 2 E 1 x E 2 σ p (E 1 ), där P är ett predikat på attribut i E 1 s (E 1 ), där S är en lista som består av ett antal attribut i E 1 ρ x (E 1 ), där x är det nya namnet för resultatet av E 1! Man får alltså kombinera de här operatorerna till godtyckliga uttryck. 31 Ytterligare operationer i relationsalgebra! Vi definierar ytterligare ett antal operationer i relationsalgebran Snitt av mängder Naturlig join (samt andra typer av join) Tilldelning Division De här operationerna tillför inte någon modelleringskraft till relationsalgebran, men de kan förenkla en del förfrågningar. De här nya operationerna kan uttryckas med hjälp av de sex grundläggande operationer som vi hittills har gått igenom !

17 Snitt-operation! Notation: r s Definieras som:!!r s = { t t r and t s } Dvs. mängden av de tupler t som hör till både r och s Vi antar att: r och s har samma aritet Attributen i r och s är kompatibla Obs: Vi kan också uttrycka snittet som två mängddifferenser r s = r (r s) r s r s! 33 Snitt-operation Exempel! Relationer r, s: r s! A B α α β r A B A B α β s 2 3 α !

18 Naturlig Join-operation! Den naturliga join operationen gör det enklare att bilda uttryck som kräver en kartesisk produkt och en selektion. Naturlig join r s bildar först den kartesiska produkten av r och s och gör sedan en selektion på de attribut som är gemensamma i både r och s och som har samma värden, samt eliminerar dubbletter. Om r är en relation på schemat R och s är en relation på schemat S så är r s en relation på R S Dvs. schemat vi får när vi kombinerar attributen i R och S Om tabellerna r och s inte har några gemensamma attribut så är r s det samma som den kartesiska produkten r x s Exempel: Lista alla lärare och de kurser som dessa föreläser: instructor teaches! Tabellerna instructor och teaches har attributet ID gemensamt Bara de tupler där instructor.id = teaches.id tas med i resultatet! Om vi inte använder naturlig join kan vi skriva det här som σ instructor.id=teaches.id (instructor x teaches)! 35 Illustration av naturlig join! Tabellerna instructor och teaches har det gemensamma attributet ID Resultatet av instructor teaches blir Om vi bara vill ha namn på föreläsaren och kursens id gör vi name, course_id!(instructor teaches) 36 18!

19 Definition av naturlig Join! Notation: r s Låt r och s vara relationer på scheman R respektive S. Då är r s en relation på schemat R S som fås på följande sätt: Bilda alla par av tupler t r från r och t s från s. Om tuplerna t r och t s har samma värde på varje attribut i R S, sätt till en tupel t till resultatet, där! t har samma värden på t r som i r! t har samma värden på t s som i s Exempel: Antag att r har schemat R = (A, B, C, D) och s har schemat S = (E, B, D) Resultatet av r s har då schemat (A, B, C, D, E) r s kommer då att vara det samma som r.a, r.b, r.c, r.d, s.e (σ r.b = s.b r.d = s.d (r x s)) 37 Naturlig Join Exempel! Vi har två relationer r och s: Attributen B och D är gemensamma för r och s r s blir då: 38 19!

20 Naturlig Join Exempel! r.a! r.b! r.c! r.d! s.b! s.d! s.e! α 1 α a 1 a α α 1 α a 3 a β α 1 α a 1 a γ α 1 α a 2 b δ α 1 α a 3 b ε β 2 γ a 1 a α β 2 γ a 3 a β β 2 γ a 1 a γ β 2 γ a 2 b δ β 2 γ a 3 b ε γ 4 β b 1 a α γ 4 β b 3 a β γ 4 β b 1 a γ γ 4 β b 2 b δ γ 4 β b 3 b ε Vi bildar först korsprodukten r x s Den kommer att ha 25 tupler r.a! r.b! r.c! r.d! s.b! s.d! s.e! α 1 γ a 1 a α α 1 γ a 3 a β α 1 γ a 1 a γ α 1 γ a 2 b δ α 1 γ a 3 b ε δ 2 β b 1 a α δ 2 β b 3 a β δ 2 β b 1 a γ δ 2 β b 2 b δ δ 2 β b 3 b ε 39 Naturlig Join Exempel! Resultatet av r s är de tupler i den kartesiska produkten där de gemensamma attributen (dvs. B och D) har samma värde. Det finns 5 sådana tupler. De gemensamma attributen tas bara med en gång i resultatet. De har ju samma värden, så det finns ingen orsak att ha dem dubbelt i tabellen. Eventuella dubblett-tupler elimineras. Theta join operationen r θ s definieras som r s! A! B! C! D! E! α 1 α a α α 1 α a γ α 1 γ a α α 1 γ a γ δ 2 β b δ r θ s = σ θ (r x s)! dvs. en korsprodukt och en select på ett join-villkor 40 20!

21 Yttre Join! Yttre join är en utvidgning av join-operationen som undviker förlust av information. I en naturlig join tas endast de tupler med där de gemensamma attributens värden är lika, alla andra tupler lämnas bort. Yttre join beräknar en join och sätter sen till tupler från en av relationerna som inte matchar tupler i den andra relationen. Använder nollvärden: null betyder att värdet är obekant eller inte existerar Alla jämförelser med null är (grovt taget) falska per definition.! Vi kommer att studera den exakta betydelsen av jämförelser med null senare. 41 Yttre Join! Antag till exempel att vi skulle ha följande tabeller i universitetsdatabasen: instructor teaches ID! name! dept_name! ID! course_id! Srinivasan Comp.Sci CS Wu Finance FIN Mozart Music BIO-101 Om vi gör en naturlig join instructor1 teaches1 får vi som resultat: ID! name! dept_name! course_id! Srinivasan Comp.Sci. CS Wu Finance FIN-201 Eftersom Mozart inte föreläser några kurser kommer hans uppgifter inte med i resultattabellen. Det finns inga tupler där det gemensamma attributet ID är det samma i de två tabellerna för Mozart, så det tas inte med i en naturlig join. 42 2

22 Vänster yttre join! Vänster yttre join betecknas med symbolen (Unicode 27D5) Resultatet av instructor1 teaches1 blir: ID! name! dept_name! course_id! Srinivasan Comp.Sci. CS Wu Finance FIN Mozart Music null! Vänster yttre join tar alla tupler i den vänstra relationen som inte matchar med någon tupel i den högra relationen, sätter till nollvärden för attributen i den högra relationen och fogar den här tupeln till resultatet. All information från den vänstra relationen finns kvar i resultatet. 43 Höger yttre join! Höger yttre join betecknas med symbolen (Unicode 27D6) Resultatet av instructor1 teaches1 blir: ID! name! dept_name! course_id! Srinivasan Comp.Sci. CS Wu Finance FIN null! null! BIO-101 Höger yttre join tar alla tupler i den högra relationen som inte matchar med någon tupel i den vänstra relationen, sätter till nollvärden för attributen i den vänstra relationen och fogar den här tupeln till resultatet. All information från den högra relationen finns kvar i resultatet 44 2

23 Full yttre join! Full Yttre Join betecknas med symbolen (Unicode 27D7) Resultatet av instructor1 teaches1 blir: ID! name! dept_name! course_id! Srinivasan Comp.Sci. CS Wu Finance FIN Mozart Music null! null! null! BIO-101 Full yttre join tar alla tupler både från den vänstra och den högra relationen som inte matchar med någon tupel i den andra relationen, sätter till nollvärden och fogar tupeln till resultatet. Yttre join operationer kan uttryckas med de grundläggande operationerna i relationsalgebran. T.ex. vänster yttre join r s är (r s) (r - R (r s)) x {(null, null,..., null)} där den konstanta relationen (null, null,..., null) är på schemat S-R 45 Tilldelningsoperation! Tilldelningsoperationen ( ) är ett behändigt hjälpmedel för att uttrycka komplexa förfrågningar. Man kan dela upp en komplex fråga i ett antal enklare delfrågor Man lagrar resultatet av en delfråga genom en tilldelning till en temporär tabell Exempel: lista alla lärare och de kurser som dessa föreläser (utan att använda en naturlig join)! temp1 instructor x teaches σ instructor.id=teaches.id (temp1) Tilldelningar måste alltid göras till en temporär relationsvariabel. Resultatet på högra sidan av tilldelas värdet av relationsvariabeln till vänster om Man kan sedan använda den temporära variabeln i kommande uttryck !

24 Nollvärden! Tupler kan ha ett nollvärde, betecknat med null, för en del av sina attribut Värdet null betecknar ett okänt värde eller att värdet inte existerar. Resultatet av vilket som helst aritmetiskt uttryck som involverar null är null. Vid eliminering av duplikat och gruppering behandlas null som vilket som helst annat värde, och två nollvärden antas vara identiska. 47 Logiska uttryck med nollvärden! Jämförelser med nollvärden returnerar det speciella sanningsvärdet unknown! Man måste använda ett tredje sanningsvärde, eftersom om false skulle användas istället för unknown, så skulle not (A < 5) inte vara ekvivalent med A >= 5.! Trevärd logik med sanningsvärdet unknown:!! OR! AND! unknown OR true unknown OR false unkwnown OR unknown true AND unknown! false AND unknown unknown AND unknown true unknown unknown unknown! false unknown NOT! NOT unknown unknown 48 24!

25 Division-operation! Divisionsoperationen lämpar sig för förfrågningar som inkluderar frasen för alla. r! ID! course_id! Antag att vi vill hitta de studenter som har tagit alla CS-101 kurser som ges av Biologi-institutionen CS-101 Vi får en tabell över alla studieprestationer med frågan CS-190 r ID, course_id (takes ) CS FIN-201 och en tabell med alla kurser som ges av Biologi- institutionen med frågan BIO BIO-301 s course_id (σ dept_name= Biology (course)) course_id! Svaret på vår fråga får vi när vi dividerar r med s Division väljer ut de tupler ur r som BIO-101 BIO-301 matchar alla tupler i s s! ID! r s! 49 Division-operation! Notation: r s Låt r och s vara relationer på scheman R respektive S där S R, dvs. attributen i S är en delmängd av attributen i R R = (A 1,, A m, B 1,, B n ) S = (B 1,, B n ) Resultatet av r s är en relation på schemat R S = (A 1,, A m ) dvs. de attribut som finns i R men inte i S r s = { t t R-S (r) u s ( tu r ) } där tu betyder konkateneringen av tuplerna t och u för att producera en enda tupel. Resultatet av r s är de tupler t för vilka alla kombinationer med tuplerna i s finns i r !

26 Division-operation Exempel! Relationerna r och s: Då blir r s: A! a b r! A! B! a 1 a 2 a 3 b 1 g 1 d 1 d 3 d 4 e 6 e 1 b 2 s! B! Ett annat divisionsexempel! Relationer r och s: r! typ! pris! färg! storl.! 1 44,00 röd L 1 44,00 röd S 2 39,00 blå M 2 39,00 gul S 3 55,00 blå XS 1 44,00 blå M 2 39,00 röd S 4 62,00 blå L 4 62,00 blå S s! färg! storl.! röd S blå M r s: typ! pris! 1 44, , !

27 Divisionsoperation (forts.)! Egenskap Låt q = r s Då är q den största relationen som uppfyller q x s r Definition i termer av de grundläggande algebraiska operationerna: Låt r(r) och s(s) vara relationer, och låt S R r s = R-S (r ) R-S ( ( R-S (r ) x s ) R-S,S (r ) ) För att se varför R-S,S (r) arrangerar bara om attribut av r! R-S ( R-S (r ) x s ) R-S,S (r) ) ger de tupler t i R-S (r ) sådana att för någon tupel u s gäller att tu r. Man kan också skriva r s som temp1 R-S (r ) temp2 R-S ((temp1 x s ) R-S,S (r )) result = temp1 temp2 53 Utökade relationsalgebraoperationer! Vi utökar relationsalgebran med ett par operationer Dessa kan inte uttryckas med hjälp av de sex grundläggande operationerna. Generaliserad projektion Tillåter att man använder t.ex. aritmetiska operationer (+,, *, / ) i projektionslistan för att beräkna värden. Aggregatfunktioner Tillåter att man använder aggregerande funktioner som t.ex. sum(), min() och max() på mängder av värden !

28 Generaliserad projektion! Vi utökar projektionsoperationen genom att tillåta aritmetiska funktioner i projektionslistan.,,..., ( ) F1 2 E F F n E är ett godtyckligt uttryck i relationsalgebran. F 1, F 2,, F n är aritmetiska uttryck som innehåller konstanter och attribut i E:s schema. Exempel: Givet relationen instructor, där salary anger årslönen, hur stor är månadslönen för föreläsarna: ID, name, dept_name, salary/12 (instructor) ID! name! dept_name! salary/ Srinivasan Comp.Sci Wu Finance Mozart Music Einstein Physics Aggregegatfunktioner G! Aggregatfunktioner tar en samling av värden och returnerar ett enda värde som resultat. avg: medelvärde min: max: sum: minimumvärde maximumvärde summan av värdena count: antal värden Aggregatfunktioner opererar på multiset (inte mängder som normalt) Tillåter att samlingen av värden innehåller samma värde flera gånger Ordningen i vilken värdena förekommer är inte relevant! Aggregatoperationer i relationsalgebra betecknas med symbolen G Kalligrafiskt G Ett subskript anger vilken aggregerande funktion som används 56 28!

29 Aggregatoperation Exempel! Antag att vi har en relation r: r! A! B! C! a a 7 a b 7 b b 3 b b 10 Vi summerar värdena på attributet C G sum(c) (r)! sum(c)! Aggregatfunktioner med gruppering! Allmän form av aggregatuttryck: G 1, G2,..., Gn G F1(A1), F2(A2),..., Fn(An) (E) där E är ett godtyckligt uttryck i relationsalgebran.! G 1, G 2, G n är en lista av attribut som grupperingen baseras på (kan också vara tom) Varje F i är en aggregatfunktion! Varje A i är ett attributnamn Tuplerna i tabellen E grupperas så att alla tupler i en grupp har samma värden på attributen G 1, G 2,..., G n Tupler i olika grupper har olika värden för G 1, G 2,..., G n Grupperingen görs baserat på värdena av attributen G 1, G 2,..., G n Om listan G 1, G 2,..., G n är tom görs ingen gruppering, utan relationen E behandlas som en enda grupp som innehåller alla tupler i E.! 58 29!

30 Aggregatoperation Exempel! Vad är medellönen vid varje institution: dept_name G avg(salary) (instructor) Gruppera tuplerna i tabellen instructor enligt värdet på dept_name! Ta medelvärdet av salary inom varje grupp dept_name G (instructor) dept_name G avg(salary) (instructor) 59 Aggregatfunktioner (forts.)! Resultatet av aggregering har inget namn Man kan använda en namngivningsoperation (as) för att ge resultatet ett namn För bekvämlighet tillåter vi namngivning som en del av aggregatoperationer dept_name G avg(salary) as medellön (instructor)! dept_name! medellön! Biology Comp.Sci Elec.Eng Finance History Music Physics !

31 Exempelfrågor! Hur många institutioner finns i byggnaden Watson? G count(dept_name) as antal (σ building= Watson (department) ) department! antal! 2! Vilka institutioner finns i byggnaden Watson? dept_name (σ building= Watson (department) ) dept_name! Biology Physics 61 Exempelfrågor! Vilka kurser föreläser Srinivasan? Vi måste kombinera information från följande tabeller: course(course_id, title, dept_name, credits) teaches(id, course_id, sec_id, semester, year) instructor(id, name, dept_name, salary) Vi kan inte använda en naturlig join mellan de tre tabellerna, eftersom attributet dept_name också är gemensamt för course och instructor! 62 3

32 Exempelfrågor! I stället gör vi en naturlig join mellan course och teaches, och parar sen ihop resultatet med information från tabellen instructor Vi väljer ut de tupler ur instructor där attributet ID matchar course_id, title (σ instructor.name= Srinivasan teaches.id = instructor.id (course teaches x instructor)) course_id! CS-101 CS-315 CS-347 title! Intro. to Computer Science Robotics Database System Concepts Naturlig join mellan course och teaches matchar tupler på attributet course_id Select-satsen väljer ut de tupler som hör till Srinivasan 63 Exempelfrågor! Skriv ut en lista med namn, ID och vitsord över resultatet från kursen Intro. to Computer Science på höstterminen name, ID, grade (σ course.title = Intro. to Computer Science semester= Fall year=2009 ( ID, name (student)) takes takes.course_id = course.course_id course)! name! ID! grade! Zhang A Shankar C Levy F Williams A Brown A Bourikas C Vi kombinerar information från tabellerna student, takes och course. student(id, name, dept_name, tot_credit) takes(id, course_id, sec_id, semester, year, grade)! course(course_id, title, dept_name, credits)! 64 3

Grunderna för relationsmodellen!

Grunderna för relationsmodellen! Grunderna för relationsmodellen! 1 Varför behöver jag lära mig relationsmodellen?! Relationsmodellen är den totalt dominerande datamodellen i moderna databassystem Beskriver databaser som en mängd tabeller

Läs mer

Databaser - Design och programmering. Operationer i relationsalgebra. Att söka ut data. Exempel DBschema. Att plocka ut data, forts

Databaser - Design och programmering. Operationer i relationsalgebra. Att söka ut data. Exempel DBschema. Att plocka ut data, forts Databaser Design och programmering Relationsalgebra den matematiska grunden för att bearbeta data representerad i relationsmodellen Operationer i relationsalgebra Två typer av operationer: Operationer

Läs mer

EMPS(NAME, SALARY, DEPT)

EMPS(NAME, SALARY, DEPT) Databaser Design och programmering Relationsalgebra den matematiska grunden för att bearbeta data representerad i relationsmodellen Operationer i relationsalgebra Två typer av operationer: Operationer

Läs mer

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar:

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar: DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL r s använder vi för att uttrycka frågor där ordet alla figurerar: Ex. Vilka personer har stamkundskort vid ALLA klädesbutiker i stad X? Vilka personer har bankkonto

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) Christer Stuxberg christer.stuxberg@im.uu.se Institutionen för Informatik och Media Översikt Introduktion Enkla frågor (queries) Hämta en specifik kolumn Sök Sammanfattning

Läs mer

Relationskalkyl (RK)

Relationskalkyl (RK) 1 Relationskalkyl (RK) Formellt frågespråk som är baserad på predikatkalkyl (logik) En formel i RK är icke-procedurell (deklarativ), dvs den specificerar vad som ska hämtas och inte hur Jämför med relationsalgebran

Läs mer

Grunderna i SQL del 1

Grunderna i SQL del 1 Grunderna i SQL del 1 1. SELECT-frågor 2. SELECT 3. WHERE 4. ORDER BY 5. Inre join 6. Yttre join 7. Andra typer av join 8. Union 9. Aggregatfunktioner 10. Gruppera och summera Kap. 3 Kap. 4 Kap. 5 utom

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Introduktion till frågespråket SQL (v0.91)

Introduktion till frågespråket SQL (v0.91) DD1370: Databaser och Informationssystem Hösten 2014 Petter Ögren Introduktion till frågespråket SQL (v0.91) 13:e November Disclaimer: Dessa anteckningar har producerats under viss tidspress, och kan därför

Läs mer

Andra relationella språk

Andra relationella språk Andra relationella språk Kapitel 5 Andra relationella språk sid Tupelrelationskalkyl 1 Domänrelationskalkyl 6 Query-by-Example (QBE) 8 Andra relationella språk, tupelrelationskalkyl 5-1 Tupelrelationskalkyl

Läs mer

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion.

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion. Databaser Design och programmering Relationsmodellen definitioner ER-modell -> relationsmodell nycklar, olika varianter Programdesign, databasdesign Databasdesign Konceptuell design Förstudie, behovsanalys

Läs mer

Relationsmodellen. Relations modellen är idag den mest änvända datamodellen för kommersiella

Relationsmodellen. Relations modellen är idag den mest änvända datamodellen för kommersiella Relationsmodellen 2-1 Relationsmodellen Relations modellen är idag den mest änvända datamodellen för kommersiella applikationer. Relationsdatabasstruktur En relationsdatabas består av en samling tabeller,

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 2003-01-20 DAV B04 - Databasteknik 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 26 Relationsmodellen En formell teori som baserar sig på (främst) mängdlära predikatlogik Föreslogs av E.F Codd 1970 i

Läs mer

Databasdesign. E-R-modellen

Databasdesign. E-R-modellen Databasdesign Kapitel 6 Databasdesign E-R-modellen sid Modellering och design av databaser 1 E-R-modellen 3 Grundläggande begrepp 4 Begränsningar 10 E-R-diagram 14 E-R-design 16 Svaga entitetsmängder 19

Läs mer

(N) och mängden av heltal (Z); objekten i en mängd behöver dock inte vara tal. De objekt som ingår i en mängd kallas för mängdens element.

(N) och mängden av heltal (Z); objekten i en mängd behöver dock inte vara tal. De objekt som ingår i en mängd kallas för mängdens element. Grunder i matematik och logik (2017) Mängdlära Marco Kuhlmann 1 Grundläggande begrepp Mängder och element 2.01 En mängd är en samling objekt. Två standardexempel är mängden av naturliga tal (N) och mängden

Läs mer

Övningshäfte 1: Logik och matematikens språk

Övningshäfte 1: Logik och matematikens språk GÖTEBORGS UNIVERSITET MATEMATIK 1, MMG200, HT2014 INLEDANDE ALGEBRA Övningshäfte 1: Logik och matematikens språk Övning A Målet är att genom att lösa och diskutera några inledande uppgifter få erfarenheter

Läs mer

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3. Primtiva operatorer projektion π selektion σ union differens - kryssprodukt X Relationsalgebra Tilldelning := Relationsalgebran är sluten: Med hjälp av dessa operatorer kan andra (icke-primitiva) operatorer

Läs mer

Föreläsning 5: Relationsmodellen

Föreläsning 5: Relationsmodellen Föreläsning 5: Relationsmodellen DVA234 Databaser IDT Akademin för Innovation, Design och Teknik Innehåll Föreläsningens mål: Att ge en överblick över hur relationsmodellen fungerar Relationsmodellen Relationsalgebra

Läs mer

Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section

Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section Föreläsning 1 Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section 1.1-1.3 i kursboken Definition En utsaga (proposition) är ett

Läs mer

Relationsalgebra. Relationsalgebra består av en mängd operatorer som tar en eller två relationer som input och producerar en ny relation som resultat.

Relationsalgebra. Relationsalgebra består av en mängd operatorer som tar en eller två relationer som input och producerar en ny relation som resultat. Database: Relationsalgeba 2-11 Relationsalgeba Relationsalgeba bestå av en mängd opeatoe som ta en elle två elatione som input och poducea en ny elation som esultat. De fundamentala opeationena ä unäa

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

Frågespråk mot relationsmodellen

Frågespråk mot relationsmodellen HUND Mindy Ossi Frågespråk mot relationsmodellen Relationsalgebra Relationsalgebra Primtiva operatorer projektion π selektion σ union differens - kryssprodukt X Med hjälp av dessa operatorer kan andra

Läs mer

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar FÖ 8: Databaskursen 1. SQL 2. Utsökningar mot en tabell 3. Od Order by 4. Funktionerna upper, lower och initcap 5. Konkatenering 6. Kolumnalias 7. Distinct 8. Hantera nullvärden med nvl-funktionen 9. Between

Läs mer

Tentamen i Databasteknik

Tentamen i Databasteknik Tentamen i Onsdagen den 7 mars 2007 Tillåtna hjälpmedel: Allt skrivet material Använd bara framsidan på varje blad. Skriv max en uppgift per blad. Motivera allt, dokumentera egna antaganden. Oläslig/obegriplig

Läs mer

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5 Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5 1 Frågor mot en tabell och något selektionsvillkor. A Ta fram personnummer, namn, adress och postnummer på personer som bor i Solna! B Ta fram

Läs mer

Databaser. Vad du ska lära dig: Ordlista

Databaser. Vad du ska lära dig: Ordlista Databaser Vad du ska lära dig: Ordlista Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda en

Läs mer

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information. Vad är en databas? Exempel på databaser: Kortregister på kontor Sjukvårdsjournal Bokregister på bibliotek Medlemsregister i en förening Kundregister på företag Telefonkatalogen Databas = Organiserad samling

Läs mer

Logik. Dr. Johan Hagelbäck.

Logik. Dr. Johan Hagelbäck. Logik Dr. Johan Hagelbäck johan.hagelback@lnu.se http://aiguy.org Vad är logik? Logik handlar om korrekta och inkorrekta sätt att resonera Logik är ett sätt att skilja mellan korrekt och inkorrekt tankesätt

Läs mer

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema Databaser Design och programmering Relationsmodellen definitioner ER-modell -> relationsmodell nycklar, olika varianter Relationsmodellen Introducerades av Edward Codd 970 Mycket vanlig Stödjer kraftfulla

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media SQL del 2 Christer Stuxberg christer.stuxberg@im.uu.se Institutionen för Informatik och Media Översikt Repetition SELECT INSERT Mer SELECT Null sökning Gruppering (GROUP BY) Begränsad gruppering (HAVING)

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2015-11-06 TID: 14 19 Ansvarig för tentamen: Anna Palmquist Förfrågningar: 0734-612003 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

Datalager och datautvinning

Datalager och datautvinning Datalager och datautvinning 1 Datalager och datautvinning! Databaser kan innehålla stora mängder information om ett företags eller en organisations verksamhet" Data kan också användas för att analysera

Läs mer

Språket Python - Del 1 Grundkurs i programmering med Python

Språket Python - Del 1 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR

Läs mer

Frågeoptimering. Frågeoptimering kapitel 14

Frågeoptimering. Frågeoptimering kapitel 14 Frågeoptimering kapitel 14 Frågeoptimering sid Introduktion 1 Transformering av relationsuttyck 4 Kataloginformation för kostnadsestimering Statisk information för kostnadsestimering Kostnadsbaserad optimering

Läs mer

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1 Dagens föreläsning Vad du skall komma ihåg från tidigare föreläsningar Optimering av frågor Algebraisk omformulering Kostnadsberäkningar Evaluering av frågor Algoritmer för relationsoperatorer Beräkning

Läs mer

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary Dagens föreläsning Vad du skall komma ihåg från tidigare föreläsningar Vad du skall komma ihåg från tidigare föreläsningar Optimering av frågor Algebraisk omformulering Kostnadsberäkningar Evaluering av

Läs mer

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo, 729G74 IT och programmering, grundkurs Tema 2. Föreläsning 3 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Information i grafstrukturer Diskret matematik Relationer: kopplingar mellan mängder Funktioner

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

Grundläggande logik och modellteori

Grundläggande logik och modellteori Grundläggande logik och modellteori Kapitel 8: Predikatlogik Henrik Björklund Umeå universitet 2. oktober, 2014 Första ordningens predikatlogik Signaturer och termer Första ordningens predikatlogik Formler

Läs mer

Reducering till relationsscheman

Reducering till relationsscheman E-R-modellen, Reducering till rel.scheman 6-26 Reducering till relationsscheman En databas som överensstämmer med ett E-R-databasschema kan representeras som en mängd relationsscheman ty E-R-modellen och

Läs mer

Lösningsförslag till Exempel tentamen

Lösningsförslag till Exempel tentamen Inst. för Data- och Systemvetenskap SU/KTH Maria Bergholtz, Paul Johannesson Lösningsförslag till Exempel tentamen 2I-1033 IT i Organisationer och Databasteknik Tentamenstiden är 5 timmar Skriv bara på

Läs mer

Tentamen EIT:DB Databastmetodik 11/1 2013 kl. 13 17 + Lösningsförslag

Tentamen EIT:DB Databastmetodik 11/1 2013 kl. 13 17 + Lösningsförslag Tentamen EIT:DB Databastmetodik 11/1 2013 kl. 13 17 + Lösningsförslag Inga hjälpmedel är tillåtna (annat än ordbok). Kort syntaxsamling för delar av SQL samt lista med symboler för relationsalgebraiska

Läs mer

Formell logik Kapitel 1 och 2. Robin Stenwall Lunds universitet

Formell logik Kapitel 1 och 2. Robin Stenwall Lunds universitet Formell logik Kapitel 1 och 2 Robin Stenwall Lunds universitet Kapitel 1: Atomära satser Drömmen om ett perfekt språk fritt från vardagsspråkets mångtydighet och vaghet (jmf Leibniz, Russell, Wittgenstein,

Läs mer

3, 6, 9, 12, 15, 18. 1, 2, 4, 8, 16, 32 Nu är stunden inne, då vill vill summera talen i en talföljd

3, 6, 9, 12, 15, 18. 1, 2, 4, 8, 16, 32 Nu är stunden inne, då vill vill summera talen i en talföljd I föreläsning 18 bekantade vi oss med talföljder, till exempel eller 3, 6, 9, 1, 15, 18 1,, 4, 8, 16, 3 Nu är stunden inne, då vill vill summera talen i en talföljd och 3 + 6 + 9 + 1 + 15 + 18 1 + + 4

Läs mer

Concepts learned this far. ER till relationer. ER till relationer. ER till relationer. TDDD12 Database Technology

Concepts learned this far. ER till relationer. ER till relationer. ER till relationer. TDDD12 Database Technology 2008-04-07 TDDD12 Lecture 3: EER and mapping E 1 TDDD12 Database Technology Concepts learned this far Lecture 3: EER/ER and mapping to relations by Juha Takkinen 2008-04-07 1 2 2008-04-07 TDDD12 Lecture

Läs mer

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik 2008-08-11 kl. 14 18

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik 2008-08-11 kl. 14 18 LiTH, Tekniska högskolan vid Linköpings universitet 1(5) IDA, Institutionen för datavetenskap Juha Takkinen Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik 2008-08-11 kl. 14 18 Lokal T2 och

Läs mer

MATEMATIKENS SPRÅK. Avsnitt 1

MATEMATIKENS SPRÅK. Avsnitt 1 Avsnitt 1 MATEMATIKENS SPRÅK Varje vetenskap, liksom varje yrke, har sitt eget språk som ofta är en blandning av vardagliga ord och speciella termer. En instruktionshandbok för ett kylskåp eller för en

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 * * * * DAV B04 - Databasteknik! "# $ %'&( ) KaU - Datavetenskap - DAV B04 - MGö 132 Riktlinjer när man vill skapa en databas 1) Designa så att det är lätt att förstå innebörden. Kombinera inte attribut

Läs mer

MA2047 Algebra och diskret matematik

MA2047 Algebra och diskret matematik MA2047 Algebra och diskret matematik Något om logik och mängdlära Mikael Hindgren 5 september 2018 Utsagor Utsaga = Påstående som har sanningsvärde Utsagan kan vara sann (S) eller falsk (F) öppen eller

Läs mer

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo, 729G74 IT och programmering, grundkurs Tema 3. Föreläsning 2 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Repetition: syntax-quiz Fler for-loopar (över listor och dictionaries) range() Nästlade strukturer

Läs mer

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo, 729G74 IT och programmering, grundkurs Tema 2. Föreläsning 3 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Information i grafstrukturer Diskret matematik Relationer: kopplingar mellan mängder Funktioner

Läs mer

I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.

I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental. Lunds tekniska högskola Datavetenskap Lennart ndersson Föreläsningsanteckningar EDF10 4 Mängder 4.1 Motivering Mängden är den mest grundläggande diskreta strukturen. Nästan alla matematiska begrepp går

Läs mer

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL) Idag 1. Från modell till databasstruktur 2. Prata med databaser (frågepsråket SQL) DD1370 (Föreläsning 3) Databasteknik och informationssystem 7,5 hp Hösten 2008 1 / 22 Från verklighet via modell till

Läs mer

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas Idag 1. Från modell till databasstruktur Från verklighet via modell till databas När vi analyserat den värld vi vill representera i en databas har vi tagit med alla möjliga kopplingar och beskrivit dem

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

Mängder. 1 Mängder. Grunder i matematik och logik (2015) 1.1 Grundläggande begrepp. 1.2 Beskrivningar av mängder. Marco Kuhlmann

Mängder. 1 Mängder. Grunder i matematik och logik (2015) 1.1 Grundläggande begrepp. 1.2 Beskrivningar av mängder. Marco Kuhlmann Marco Kuhlmann 1 Diskret matematik handlar om diskreta strukturer. I denna lektion kommer vi att behandla den mest elementära diskreta strukturen, som alla andra diskreta strukturer bygger på: mängden.

Läs mer

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig?

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig? Allmänna frågor Databasteknik och informationssystem DD1370 F2 Petter Ögren Är Kurswebben svårbegriplig? Är lab0 svårbegriplig? Är bonus-poängen tydliga? Har ni lyckats installera Open Office? Fungerar

Läs mer

Filosofisk logik Kapitel 15. Robin Stenwall Lunds universitet

Filosofisk logik Kapitel 15. Robin Stenwall Lunds universitet Filosofisk logik Kapitel 15 Robin Stenwall Lunds universitet Dagens upplägg Första ordningens mängdlära Naiv mängdlära Abstraktionsaxiomet (eg. comprehension) Extensionalitetsaxiomet Små mängder Ordnade

Läs mer

Databaser och. SQL, utsökningar mot en tabell

Databaser och. SQL, utsökningar mot en tabell Databaser och Informationssystem 5 hp IK008 Föreläsning 7 SQL, utsökningar mot en tabell Övningsuppgifter Övningstabell SQL> desc personal Name Null? Type ------------------------------------- --------

Läs mer

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. Typsystem... Typsystem... Typsystem... 2 * Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och

Läs mer

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem Tentamen för DD1370 Databasteknik och informationssystem 16 Januari 2015 Hjälpmedel: Inga hjälpmedel utom papper och penna Tänk på: Skriv högst en uppgift på varje blad. Använd endast framsidan på varje

Läs mer

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: 033-4354424. Anslås inom 3 veckor

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: 033-4354424. Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2014-08-20 TID: 9 14 Ansvarig för tentamen: Cecilia Sönströd Förfrågningar: 033-4354424 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19 Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och

Läs mer

Grunderna i SQL del 1

Grunderna i SQL del 1 Grunderna i SQL del 1 1. SELECT-frågor 2. SELECT 3. WHERE Kap. 3 4. ORDER BY 5. Inre join 6. Yttre join 7. Andra typer av join Kap. 4 8. Union 9. Aggregatfunktioner 10. Gruppera och summera Kap. 5 utom

Läs mer

Laboration SQL. Kom igång. http://www.tfe.umu.se/courses/systemteknik/webbkurser/d&w/laborationer/sql.ht...

Laboration SQL. Kom igång. http://www.tfe.umu.se/courses/systemteknik/webbkurser/d&w/laborationer/sql.ht... Page 1 of 5 Laboration SQL Syfte: Under denna laboration skall du bekanta dig med SQL. När laborationen är genomförd skall du klara av att själv formulera enklare SQL-frågor för att kunna ta fram information

Läs mer

MODELLER OCH SPRÅK FÖR RELATIONSDATABASER: Relationsalgebra, Relationskalkyl (Tuple calculus) & SQL

MODELLER OCH SPRÅK FÖR RELATIONSDATABASER: Relationsalgebra, Relationskalkyl (Tuple calculus) & SQL MODELLER OCH SPRÅK FÖR RELATIONSDATABASER: Relationsalgebra, Relationskalkyl (Tuple calculus) & SQL Ted Codd 970 - klassisk artikel: The relational model of data - DATASTRUKTUR - OPERATIONER - INTEGRITY

Läs mer

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2014-12-18 TID: 9 14 Ansvarig för tentamen: Cecilia Sönströd Förfrågningar: 033-4354424 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

SQL, nästlade delfrågor 3-19. Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

SQL, nästlade delfrågor 3-19. Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga. SQL, nästlade delfrågor 3-19 Nästlade delfrågor SQL har en mekanism för nästling av delfrågor: En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga. Delfrågor används

Läs mer

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder Block 2 Algebra och Diskret Matematik A BLOCK INNEHÅLL Referenser Inledning 1. Följder 2. Rekursiva definitioner 3. Sigmanotation för summor 4. Strängar 5. Tal 6. Övningsuppgifter Referenser Följder, strängar

Läs mer

Lösningar till tentamen i EDAF75

Lösningar till tentamen i EDAF75 Lösningar till tentamen i EDAF75 4 april 2018 Lösning 1 (a) Här är ett förslag till E/R-modell: Det finns flera rimliga alternativa sätt att modellera, så du behöver inte vara orolig bara för att du inte

Läs mer

Kombinatorik 6.19. Förenkla C(n+1,2)-C(n,2) och C(n+1,3)-C(n,3)

Kombinatorik 6.19. Förenkla C(n+1,2)-C(n,2) och C(n+1,3)-C(n,3) Kombinatorik 6.19 Förenkla C(n+1,2)-C(n,2) och C(n+1,3)-C(n,3) S: Sitter med med uppgift 6.19 a och b i EA och trots att det finns lösningsförslag till a på hemsidan så förstår jag inte. C(n+1,2) - C(n,2)

Läs mer

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: 033-4354424. Anslås inom 3 veckor

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: 033-4354424. Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2013-12-12 TID: 9 14 Ansvarig för tentamen: Cecilia Sönströd Förfrågningar: 033-4354424 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

Föreläsning 5 Innehåll

Föreläsning 5 Innehåll Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur

Läs mer

Prova på-laboration i SQL

Prova på-laboration i SQL Prova på-laboration i SQL Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2006-09-19 1. Introduktion till databaser Databaser finns i så gott som alla sammanhang

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 1 Normalisering Förut sunt förnuft Nu formell metod riktlinjer för att hjälpa till att gruppera attributen (egenskaperna) för varje relation

Läs mer

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation SQL Structured Query Language Frågespråk för att används för data åtkomst data manipulation Kommandon Lägga in ny data, INSERT Ändra data, UPDATE Radera data, DELETE Hämta data, SELECT mfl 2005-10-13 Gk/ÖK:ITO,

Läs mer

Lösningsförslag till Tentamen,

Lösningsförslag till Tentamen, Institutionen för Data- och Systemvetenskap SU/KTH Maria Bergholtz och Paul Johannesson Lösningsförslag till Tentamen, 022 2I-00 Informationssystem och databasteknik För att erhålla betyget tre räcker

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Webprogrammering och databaser Fö 5 Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company.

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Introduktion till formella metoder Programmeringsmetodik 1. Inledning Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur

Läs mer

Filosofisk Logik (FTEA21:4) föreläsningsanteckningar/kompendium. v. 2.0, den 29/ III. Metalogik 17-19

Filosofisk Logik (FTEA21:4) föreläsningsanteckningar/kompendium. v. 2.0, den 29/ III. Metalogik 17-19 Filosofisk Logik (FTEA21:4) föreläsningsanteckningar/kompendium IV v. 2.0, den 29/4 2013 III. Metalogik 17-19 Modeller för satslogiken 18.1 Vi har tidigare sagt att en modell är en tolkning av en teori

Läs mer

Grundläggande logik och modellteori

Grundläggande logik och modellteori Grundläggande logik och modellteori Kapitel 6: Binära beslutsdiagram (BDD) Henrik Björklund Umeå universitet 22. september, 2014 Binära beslutsdiagram Binära beslutsdiagram (Binary decision diagrams, BDDs)

Läs mer

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2014-11-07 TID: 9 14 Ansvarig för tentamen: Cecilia Sönströd Förfrågningar: 033-4354424 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Webprogrammering och databaser Fö 5 Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company.

Läs mer

Tentamen i Databasteknik

Tentamen i Databasteknik Tentamen i Lördagen den 21 oktober 2006 Tillåtna hjälpmedel: Allt skrivet material Använd bara framsidan på varje blad. Skriv max en uppgift per blad. Motivera allt, dokumentera egna antaganden. Oläslig/obegriplig

Läs mer

Linnéuniversitetet Institutionen för datavetenskap, fysik och matematik Per-Anders Svensson

Linnéuniversitetet Institutionen för datavetenskap, fysik och matematik Per-Anders Svensson Linnéuniversitetet Institutionen för datavetenskap, fysik och matematik Per-Anders Svensson Tentamen i Matematikens utveckling, 1MA163, 7,5hp fredagen den 28 maj 2010, klockan 8.00 11.00 Tentamen består

Läs mer

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 2 AID-nummer: Datum: 2011-02-18 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Fredag 18 feb 2011

Läs mer

Logik och kontrollstrukturer

Logik och kontrollstrukturer Logik och kontrollstrukturer Flödet av instruktioner i ett programmeringsspråk bygger vi upp med hjälp av dess kontrollstrukturer. I C har vi exemplen if, if else, while, do while. Dessutom finns switch

Läs mer

Sample exam questions. Database exam TIG058

Sample exam questions. Database exam TIG058 Sample exam questions Database exam TIG058 Distribution of topics covered 1. Grundläggande om Databaser och Databashanterare (5p) 2. SQLite-databashanteraren (5p) 3. SQL - SELECT, ORDER BY, WHERE, LIMIT

Läs mer

Databaser design och programmering. Design processen ER- modellering

Databaser design och programmering. Design processen ER- modellering Databaser design och programmering Design processen ER- modellering 2 Programutveckling Förstudie, behovsanalys Programdesign, databasdesign Implementation 3 Programdesign, databasdesign Databasdesign

Läs mer

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping Fuzzy Logic När oskarpa definitioner blir kristallklara Linköpings Universitet Linköping Sammanfattning I denna fördjupningsuppgift har jag fokuserat på Fuzzy Logic och försökt att beskriva det på ett

Läs mer

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581 Fuzzy logic 880328-2535 Innehåll Fuzzy logic... 1 1. Inledning... 4 2. Jämförelse mellan fuzzy logic och tvåvärdeslogik.... 4 3. Fuzzy sets.... 4 4. Linvistiska variabler... 5 5. Operatorer... 5 6. If-

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

Hur implementera algoritmerna på maskinnivå - datorns byggstenar Hur implementera algoritmerna på maskinnivå - datorns byggstenar Binära tal Boolesk logik grindar och kretsar A A extern representation intern representation minnet i datorn extern representation 1000001

Läs mer

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14 Övningar i SQL Övningar i SQL Använd Access för att öva SQL (= Structured Query Language) Skapa tabeller med SQL 1. Ny databas: SQLÖVNING Klicka: Frågor > Ny > Design > OK >Stäng > SQL Radera ordet SELECT.

Läs mer