Föreläsning 5: Relationsmodellen

Relevanta dokument
Karlstads Universitet, Datavetenskap 1

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

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

Grunderna för relationsmodellen!

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

Tentamen. Databasmetodik Lördag 27 september 2014 kl

Grunderna i SQL del 1

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

Databaser. Vad du ska lära dig: Ordlista

Starta MySQL Query Browser

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

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

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13

Tentamen DATABASTEKNIK - 1DL116

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

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

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

Grunderna i SQL del 1

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Frågespråk mot relationsmodellen

Lösningar till tentamen i EDAF75

Karlstads Universitet, Datavetenskap 1

1.Lär känna MS SQL Observera. Tips. Förberedelse

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

Inst. för Data- och Systemvetenskap SU Maria Bergholtz. Tentamen. 21/ kl Inga hjälpmedel är tillåtna (annat än ordbok).

Konceptuella datamodeller

Databasdesign. E-R-modellen

Föreläsning 6: Normalisering & funktionella beroenden

EMPS(NAME, SALARY, DEPT)

Tentamen NDA01G Öppen för alla. Tentamenskod: Inga hjälpmedel är tillåtna

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

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

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

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

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

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

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Föreläsning 4 Dagens föreläsning går igenom

Lösningsförslag till Tentamen,

Relationskalkyl (RK)

NORMALISERING. Mahmud Al Hakim

Databaser och Datamodellering Foreläsning IV

3. Dynamiska webbplatser, 20 Yhp (4 v)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Relationsmodellen och syntetisk databasdesign

Databasspråket SQL - online.

Sample exam questions. Database exam TIG058

Structured query language (SQL)

Föreläsning 2: Översikt över ett databassystem

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

Design och underhåll av databaser

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Lösningsförslag Tentamen, 25 april 03

Idag. Databaskvalitet(??) Databaskvalitet... Databaskvalitet...

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

Databasutveckling Tabeller. tinyint 1 byte (0-255) Upp till 8 bytes

TENTAMEN TDDB77 Databaser och Bioinformatik 24 april 2004, kl 14-18

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

Databasspråket SQL - online.

Databasspråket SQL - online.

An English version of the questions is found at the back of each page.

Lite om databasdesign och modellering

Webbprogrammering, grundkurs 725G54

Varför ska man lära sig sånt? Välkomna. Vad är databaser bra till? Kursansvarig. till kursen. Databasteknik och informationssystem

Logisk databasdesign

Introduktion till databaskursen. Välkomna. till kursen. Databasteknik och informationssystem. DD1370 (kursomgång dbtinf12)

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

Tentamen DATABASTEKNIK - 1DL116, 1MB025

732G16: Databaser - Design och programmering

Frågespråk och SQL. nikos dimitrakas rum 2423

Relationell databasdesign

Föreläsning 3 Dagens föreläsning går igenom

Databasspråket SQL - online.

Varför ska man lära sig sånt? Välkomna. Vad är databaser bra till? Kursansvarig. till kursen. Databasteknik och informationssystem

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Svar till tentamen DATABASTEKNIK - 1DL poäng

Tentamen i Databasteknik

Databaser design och programmering. Design processen ER- modellering

Databasspråket SQL - online.

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

Databaser och. SQL, utsökningar mot flera tabeller TENTA. # radnr (#) studnr (#) kursnr * tentadatum * betyg

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

Databaser Design och programmering

Databaser - Design och programmering

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Funktionella beroenden - teori

Prova på-laboration i SQL

TENTAMEN TDDB77 Databaser och Bioinformatik 15 mars 2002, kl 14-18

Idag. Modellering. Varför modellera? Konceptuell modell Modelleringsverktyg Objektklasser Sambandsklasser Knepiga attribut Modelleringsprocessen

Idag. Varför modellera? Modellering. Modelleringsverktygets egenskaper. Modelleringsverktyget

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

GIS, databasteknik och kartografi. Databasmodellering

TENTAMEN TDDB77 Databaser och Bioinformatik 22 augusti 2006, kl 14-18

Frågeoptimering. Frågeoptimering kapitel 14

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen Lördag 8 juni kl

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Informationssystem och Databasteknik

Transkript:

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 2

Relationsmodellen Grunden för alla relationsdatabaser Principerna utvecklades av matematikern E. F. Codd (1969-70) Idéerna presenterades i en numera klassisk artikel: A Relational Model of Data for Large Shared Data Banks, CACM 13. No 6 (June 1970) Första databaserna som byggde på denna modell: IBM, System/R Ingres 3

Relationsmodellens tre komponenter Datastruktur Beskrivningen av relationsmodellen för användare Datat i en databas uppfattas som tabeller och inget annat än tabeller Dataintegritet Egenskaper och krav på datat, t ex att tabellrader ska vara unika (m.h.a primär nyckel) referensintegritet (m.h.a främmande nyckel) Datamanipulering Operatorer som tillhandahålls för användaren för att manipulera tabeller, t ex för att hämta data Operatorerna skapar (härleder) nya tabeller utifrån givna Särskilt viktiga operationer är: restrict, project och join 4

Relationsmodellens datastruktur Bygger på följande abstrakta datamodell: Data representeras som rader i en tabell. Varje rad kan utläsas som ett sant påstående (eng. proposition). Exempel: Studenten med login brm02001 heter Bosse i förnamn och Ringholm i efternamn och har 2.7 i medelbetyg Operatorer som tillhandahålls skapar nya (sanna) påståenden utifrån givna påståenden. Exempel: Loffe heter Carlzon i efternamn, eller STUDENT Nisse har högre medelbetyg än Bosse. Login# Förnamn Efternamn Medelbetyg brm02001 Bosse Ringholm 2.7 lcn98005 Loffe Carlzon 3.2 nnn99009 Nisse Nilsson 4.2 mon01002 Mimmi Olsson 4.5 5

Relationsmodellen - dataintegritet Dataintegritet uppnås genom restriktioner: Domänrestriktioner Varje attribut måste ha en given typ (int, float, char, personnr.) Alla data i ett visst attribut måste innehålla värden inom typens domän t.ex. om typen är int så måste alla värden vara heltal. (Domän kan vara annorlunda än datatyp, int månad kan bara vara 1-12) Nyckelrestriktioner Primärnyckel varje rad har en unik primärnyckel Kandidatnycklar = andra möjliga minimala nycklar (se nästa föreläsning) t.ex, en relation med studid som primärnyckel är personnr en kandidatnyckel Entitetsintegritet Alla relationer MÅSTE ha en primärnyckel Referensintegritet Främmande nycklar MÅSTE innehålla värden från en primärnyckel Semantiska restriktioner Ytterligare krav på attribut och förhållanden mellan attribut kan finnas Detta löses med CHECK CONSTRAINTS (t.ex. CHECK CONSTRAINT age>=0) (Pseudokod) 6

Naturlig eller surrogatnyckel Naturlig nyckel tas från verkligheten, t ex: Personnummer, studentid, osv osv CIVILSTÅND Gift Skiljd Surrogatnyckel är fiktiv, t ex: 1,2,3, GUID (112243-11244-6634) (Stöd i SQL Server!!! IDENTITY) CIVIL_ID CIVILSTÅND 1 Gift 2 Skiljd 7

Naturlig eller surrogatnyckel För och nackdelar med båda Fördelar med naturlig nyckel: Naturliga nycklar är lättare ätt förstå och få en överblick över databasen. Datamodellen garanterar unikhet (alla nycklar olika) Med surrogatnyckel kan man peta in skiljd flera gånger Det finns lösningar på detta (check constraint UNIQUE) Kräver ofta fler index (ett på id, samt ett på det man normalt söker CIVIL_ID efter) Surroganycklar genererar ofta fler joinar Nackdelar med naturlig nyckel Kan man garantera unikhet på en naturlig nyckel? Joinar över int är mer effektiva än joinar över strängar Att ändra en nyckel kan vara mycket jobb Dock finns ON UPDATE CASCADE 1 Gift CIVILSTÅND 2 Skiljd 3 Skiljd 8

Formell definition av en relation En Relation kan definieras på flera sätt. Schemat för en relation: R (A1, A2,...An) Relationsschemat R är definierad m.a.p. attributen A1, A2,...An Exempel - KUND (Kund#, Kundnamn, Adress, Telnr) Här är KUND en relation som är definierad för de fyra attributen Kund#, Kundnamn, Adress och Telnr, där varje attribut är associerad med en domän eller en mängd av tillåtna värden. T ex, domänen för Kund# kan vara 6-siffriga nummer. 9

Relationsmodellen - Datamanipulering Data kan manipuleras med hjälp av väldefinierade relationsoperationer. Codd definierade 8 st Operationerna arbetar endast med relationer Indata: en eller flera relationer Utdata: en ny relation Detta ger en CLOSURE-egenskap Utdata från en operation kan bli indata till en annan dvs, operationer kan kaskadkopplas 10

Codds ursprungliga operationer 8 (ursprungliga) operationerna: Restrict/Select Project Product Union Difference Intersection Join (natural) Divide 11

Relationsalgebra Relationsalgebra är en uppsättning (teoretiska) operationer som kan användas för manipulering av relationer. Ett uttryck i relationsalgebran extraherar nya relationer utifrån givna och kan på detta vis användas som ett grundläggande frågespråk i en RDBMS. T ex relationsfrågespråket SQL bygger till stora delar på operationerna i relationsalgebran (ej enbart dock). Relationsalgebra är procedurellt, dvs beskriver steg för steg hur ett resultat (en ny relation) erhålls. 12

Syntax för relationsalgebra Relationer benämns med sitt namn t.ex. STUDENT, EMPLOYEE osv En unär operation tar en relation som indata, och producerar en relation som utdata! "#$$%&' ()*+,-./ En binär operation tar två relationer som indata, och producerar en relation som utdata ()*+,-./1! "#$$%&' ()*+,-./2 där! är en relationsoperation Låt oss se på ett konkret exempel 13

Select-operatorn (Restrict) SELECT-operatorn (kallas även RESTRICT) används för att filtrera bort oönskade tupler i en relation. Generell syntax: σ villkor (R) Där σ står för SELECT-operatorn och villkor är ett booleskt villkorsuttryck över attribut från relationen R. Semantik: Skapa en relation med alla tupler från R som uppfyller villkoret. Informellt skulle vi kunna säga att:! "#$%#&'( ) *+, ) -./012. motsvarar SELECT * FROM STUDENT WHERE program= DVP 14

PROJECT-operatorn PROJECT-operatorn används för att extrahera relationer över utvalda attribut (kolumner). Oftast använd för att skala bort oönskade kolumner. Generell syntax: π attributlista (R) där π står för PROJECT-operatorn och attributlista är en kommaseparerad lista av attribut i relationen R. Semantik: Skapa en ny relation med alla tupler från R projicerade över attributen i attributlistan. Informellt skulle vi kunna säga att:! "#$%&''$, ')*' +,-./0, motsvarar SELECT personnr, namn FROM STUDENT 15

Kaskadkoppling av unära operationer Operationer kan kaskadkopplas (nästlas) Ponera följande SQL fråga: SELECT personnr, namn FROM STUDENT WHERE program= DVP Detta skrivs då: eller:! "#$%&''$, ')*' + "$&,$)*-. /01. 2345673 5892345 + "$&,$)*-. /01. 2345673 ;624<3! "#$%&''$, ')*' 5892345 16

Namnbyte på relationer och attribut Ibland kan det vara bekvämt, i vissa fall nödvändigt, att byta namn på relationer eller attribut. Två sätt: Det icke-formella DVPSTUD ß σ Program= DVP (STUDENT) R(ssn, name) ß π personnr, namn (DVPSTUD) Den formella, genom RENAME-operatorn enligt syntaxen: ρ S (R) relation R döps om till S. ρ S(B1, B2,, Bn) (R) relation R döps om till S och attributen i R döps om till B1, B2,, Bn ρ (B1, B2,, Bn) (R) attributen i R döps om till B1, B2,, Bn 17

UNION operatorn Unionoperatorn slår ihop tuplerna från två tabeller Dubletter elimineras Ett krav är att båda tabellerna har samma attribut Ponera följande tabeller R1 R2 A B A x y B m n A y z B n o!1!2 Ger då: x y z m n o I SQL skrivs detta som: SELECT A, B FROM R1 UNION SELECT A, B FROM R2 18

INTERSECT operatorn Intersectoperatorn tar snittet av tuplerna från två relationer Ett krav är att båda tabellerna har samma attribut Ponera följande tabeller R1 R2 A x y B m n A y z B n o!1!2 Ger då: A y B n I SQL skrivs detta som: SELECT A, B FROM R1 INTERSECT SELECT A, B FROM R2 19

DIFFERENCE operatorn Differenceoperatorn tar alla tupler från R1 minus tuplerna från R2 Ett krav är att båda tabellerna har samma attribut Tupler i R2 som inte finns i R1 ignoreras Ponera följande tabeller R1 R2 A x y B m n A y z B n o!1!2 Ger då: A x B m I SQL skrivs detta som: SELECT A, B FROM R1 EXCEPT SELECT A, B FROM R2 20

PRODUCT-operatorn Product-operatorn är densamma som från matematiken, dvs bildar mängden av tupelkombinationer från två relationer (alltså binär operator). En skillnad mot de binära mängdoperatorerna är att relationerna behöver inte vara av samma typ. Syntax: R 1 R 2 Semantik: Skapa en ny relation som består av tuplerna i R 1 kombinerade med tuplerna i R 2. 21

Exempel PRODUCT operatorn Ponera följande tabeller R1 R2 A B C D x m z o y n v p!1!2 Ger då: I SQL skrivs detta som: A B C D x m z o x m v p y n z o y n v p SELECT A,B,C,D FROM R1 CROSS JOIN R2 22

PRODUCT i sin ensamhet är näst intill meningslös eftersom den lätt genererar falska tupler (bryter mot kravet på sanna påståenden) Ponera följande tabeller Anställd Personnr Namn AvdID 630322-1642 Per Nilsson U 840212-1133 Karin Berg M 720211-7225 Frida Ström U Avdelningar AvdID Avdelning Hus U Utveckling Borgen M Marknad Templet E Ekonomi Bunkern Vad blir Anställd x Avdelningar??? 23

PRODUCT i sin ensamhet Anställd Personnr Namn Anställd.AvdID Avdelningar.AvdID Avdelning Hus 630322-1642 Per Nilsson U U Utveckling Borgen 840212-1133 Karin Berg M U Utveckling Borgen 720211-7225 Frida Ström U U Utveckling Borgen 630322-1642 Per Nilsson U M Marknad Templet 840212-1133 Karin Berg M M Marknad Templet 720211-7225 Frida Ström U M Marknad Templet 630322-1642 Per Nilsson U E Ekonomi Bunkern 840212-1133 Karin Berg M E Ekonomi Bunkern 720211-7225 Frida Ström U E Ekonomi Bunkern Alla röda rader är falska, d 24

(INNER) JOIN-operatorn Istället används Product-operatorn nästan alltid tillsammans med selectoperatorn Denna kombination kallas INNER JOIN R!" joinvillko r Inner join sammanför tupler från två relationer baserat på ett matchande attribut Semantik: Skapa en relation som består av kombinationen av tuplerna i R1 resp. R2. som tillsammans uppfyller joinvillkoret. S 25

Exempel INNER JOIN Nytt försök att sätta ihop våra tabeller men nu med en inner join Anställd Avdelningar Personnr Namn AvdID AvdID Avdelning Hus 630322-1642 Per Nilsson U U Utveckling Borgen 840212-1133 Karin Berg M 720211-7225 Frida Ström U M Marknad Templet E Ekonomi Bunkern!"#$Ä&&' *+,-ä//0.*20345*206/+7+89:.*2034!;'<&"=">!? ger då: Anställd Personnr Namn Anställd.AvdID Avdelningar.AvdID Avdelning Hus 630322-1642 Per Nilsson U U Utveckling Borgen 840212-1133 Karin Berg M M Marknad Templet 720211-7225 Frida Ström U U Utveckling Borgen Motsvarande i SQL är: SELECT * FROM Anställd JOIN Avdelningar ON Anställd.AvdID=Avdelningar.AvdID 26

INNER JOIN-operatorn (forts) INNER JOIN kan alltså skrivas som Product & Select: Där villkor är på formen: Tecknet R!" joinvillko r S ºs joinvillkor (R S) Generellt skrivs joinvillkor som: villkor AND villkor AND... AND villkor Θ =, >, ³, <,, ¹ A i ΘB j (theta) står för ett av jämförelseoperatorerna: En generell JOIN kallas därför THETA-JOIN 27

EQUIJOIN och NATURAL JOIN En EQUIJOIN är en JOIN där jämförelseoperatorn alltid är =, dvs exakt matchning mellan två attribut. R!" A = B i j S Och den vanligaste matchningen är exakt jämförelse mellan attribut med samma namn i bägge relationerna. Detta kallas för NATURAL JOIN och skrivs: R *S Semantik för NATURAL JOIN: Skapa en relation som består av kombinationen av tuplerna i R1 resp. R2 och som uppfyller villkoret att värdena är lika för samtliga attribut med samma namn i R1 resp. R2. 28

Outer join En outer join behåller tuplerna som inte matchas av joinvillkoret De tupler som inte matchas fylls på med null-värden Den finns i 3 varianter Left outer join Behåller tuplerna i den vänstra relationen Right outer join Behåller tuplerna i den högra relationen Full outer join Behåller tuplerna i båda relationerna R > villkor S R < villkor S R >< villkor S 29

Exempel RIGHT OUTER JOIN Ponera följande två tabeller Anställd Personnr Namn AvdID 630322-1642 Per Nilsson U 840212-1133 Karin Berg M 720211-7225 Frida Ström U Avdelningar AvdID Avdelning Hus U Utveckling Borgen M Marknad Templet E Ekonomi Bunkern!"#$Ä&&' < *+,-ä//0.*20345*206/+7+89:.*2034!;'<&"=">!? ger då: Anställd Personnr Namn Anställd.AvdID Avdelningar.AvdID Avdelning Hus 630322-1642 Per Nilsson U U Utveckling Borgen 840212-1133 Karin Berg M M Marknad Templet 720211-7225 Frida Ström U U Utveckling Borgen NULL NULL NULL E Ekonomi Bunkern Motsvarande i SQL är: SELECT * FROM Anställd RIGHT JOIN Avdelningar ON Anställd.AvdID=Avdelningar.AvdID 30

DIVIDE-operatorn Används för att hitta tupler som är kombinerade med samtliga tupler från en viss relation. Syntax: R S Är svår att intuitivt förstå, och direkt motsvarighet i SQL saknas Svarar på frågor av typen: Vilka studenter har gått ALLA kurser givna av läraren xxx? Precis som Division är motsatsen till multiplikation i matematiken är Divide-operatorn motsatsen till Product-operatorn 31

DIVIDE-operatorn Ponera följande relationer A 1 2 3 O x y Så blir ju! #: AxO 1 x 1 y 2 x 2 y 3 x 3 y 32

DIVIDE-operatorn (AxO) A = O då blir : AxO 1 x 1 y 2 x 2 y 3 x 3 y A 1 2 = 3 O x y 33

DIVIDE-operatorn (AxO) O = A Och : AxO 1 x 1 y 2 x 2 y 3 x 3 y O = x y A 1 2 3 34

DIVIDE-operatorn Ponera följande tabeller: Studentreg Anna Anna Anna Pelle DVA234 DVA235 DVA336 DVA234 xxx- Kurser = DVA234 Resultat Anna Linda Pelle Linda Linda Oskar DVA336 DVA234 DVA235 DVA336 DVA235 Kurser givna av lärare xxx Studenter som läser alla kurser som ges av xxx Alla studenters registreringar 35

Kaskadkoppling av binära operationer Naturligtvis kan även binära operation kaskadkopplas Exempel Binär och unär kaskadkoppling:!1 %&''()* + %&''()*!2 Exempel Två binära operationer!1 %&''()*!2!3 Grundregeln är att man evaluerar inifrån och ut genom parenteserna precis som vanligt 36

Summering av föreläsningen Föreläsningens mål: Att ge en överblick över hur relationsmodellen fungerar Relationsmodellen Relationsalgebra 37