Relationskalkyl (RK)

Relevanta dokument
Andra relationella språk

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

Tommy Färnqvist, IDA, Linköpings universitet. 2 Strukturer Domäner Tolkningar... 3

Varför är logik viktig för datavetare?

Innehåll. Föreläsning 7. Satslogiken är för grov. Samma sak i predikatlogik: Första ordningens predikatlogik. Logik med tillämpningar

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

Deklarativt programmeringsparadigm

Formell logik Kapitel 9. Robin Stenwall Lunds universitet

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

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

Sanningsvärdet av ett sammansatt påstående (sats, utsaga) beror av bindeord och sanningsvärden för ingående påståenden.

DD1350 Logik för dataloger

Föreläsning 5: Relationsmodellen

DD1361 Programmeringsparadigm HT15

Robin Stenwall Lunds universitet

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik

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

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

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

Grundläggande logik och modellteori

Robin Stenwall Lunds universitet

Grunderna för relationsmodellen!

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

DD1361 Programmeringsparadigm HT17

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

DD1361 Programmeringsparadigm HT16

p /\ q r DD1350 Logik för dataloger Kort repetition Fö 3 Satslogikens semantik

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

Robin Stenwall Lunds universitet

Föreläsning 5. Deduktion

Semantik och pragmatik (Serie 4)

Filosofisk logik Kapitel 15. Robin Stenwall Lunds universitet

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

Grunderna i SQL del 1

DD1350 Logik för dataloger. Fö 2 Satslogik och Naturlig deduktion

FÖRELÄSNING 3 ANDERS MÄRAK LEFFLER IDA/HCS

EMPS(NAME, SALARY, DEPT)

Databaser och Datamodellering Foreläsning IV

Structured Query Language (SQL)

Filosofisk logik Kapitel 19. Robin Stenwall Lunds universitet

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

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

Lösningsförslag Tentamen, 25 april 03

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska kunnas?

Grundläggande logik och modellteori (5DV102)

Karlstads Universitet, Datavetenskap 1

DD1350 Logik för dataloger

Grundläggande logik och modellteori

JavaScript del 3 If, Operatorer och Confirm

Om semantisk följd och bevis

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

Logik och modaliteter

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

Satslogik grundläggande definitioner 3. Satslogik. Uppgift 1. Satslogikens syntax (välformade formler) Satslogikens semantik (tolkningar)

En introduktion till predikatlogik

Vyer, Prepared Statements, Triggers

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Databaser. Vad du ska lära dig: Ordlista

Övningar i SQL. SQLAccess.doc Ove Lundgren

Introduktion till programmering SMD180. Föreläsning 9: Tupler

FÖRELÄSNING 8 ANDERS MÄRAK LEFFLER IDA/HCS

Laboration SQL. Kom igång.

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

Lösningsförslag till Tentamen,

Grundläggande logik och modellteori (5DV102)

Logik. Boolesk algebra. Logik. Operationer. Boolesk algebra

Grundläggande logik och modellteori

Lösningsförslag, tentamen i Databaser

Datorlingvistisk grammatik I Institutionen för lingvistik och filologi Oktober 2007 Mats Dahllöf

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska ni kunna?

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

Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.

Semantik och pragmatik

Tentamen i Databasteknik

Föreläsning 3: Booleans, if, switch

Förra gången: Primitiva data

Databasspråket SQL - online.

Lösningsförslag till Exempel tentamen

Parameteröverföring. Exempel. Exempel. Metodkropp

Föreläsning 8: Intro till Komplexitetsteori

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

Logik. Dr. Johan Hagelbäck.

Föreläsning 8. newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK -- data istället för newtype krävs om >1 konstruerare.

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Föreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1.

Databasutveckling Introduktion till SQL och TSQL

Tentamen DATABASTEKNIK - 1DL116

Grundläggande logik och modellteori

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Databasspråket SQL - online.

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Tentamen i Databasteknik

Imperativ programmering. Föreläsning 2

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Normalisering av meningar inför resolution 3. Steg 1: Eliminera alla och. Steg 2: Flytta alla negationer framför atomära formler

*UXSS YQLQJ±/RJLNPHGWLOOlPSQLQJDUYW

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

Transkript:

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 som är ett funktionellt språk med tabeller (matematiska relationer) som enda datayp. Uttryckskraften hos RK och RA är den samma: Allt som kan beskrivas i RK kan beskrivas i RA och vice versa Ett frågespråk S är relationellt komplett om man i S kan uttrycka allt man kan uttrycka i RK eller RA. SQL är mer än relationellt komplett (dvs SQL RK). SQL kan hantera påsar, aggregering, sortering, gruppering, duplikat i resultat, mm. vilket inte ingår i RK. RK definierar minimikrav på fullständigt frågespråk.

2 Tupel-baserad Relationskalkyl (TRK) RK finns i två varianter: Tuppelkalkyl: Relationskalkyl där variabler i formlerna är bundna till tupler (t.ex. SQL) Domänkalkyl: Relationskalkyl där variabler är bundna till attributvärden (domäner) (t.ex. Query-by-Example, Datalog) select-satsen in SQL är väsentligen en generaliserad och syntaktiskt sockrad TRK. För att denotera ett attribut A i en tupel t skriver vi t.a. OBS att i Elmasri-Navathe används klumpigare t[a]!. Frågor i TRK är uttryck av formen {t1.a1, t2.a2... COND(t1,t2,...)} där ti binds till hela tupler (rader) i tabeller och är fria variabler i COND.

3 Exempel 1: SQL -> TRK-uttryck Relationer: EMPLOYEE(SSN,FNAME,LNAME,SALARY,DNO) DEPT(DNO,DNAME) SQL (Finn förnamnen på de personer som tjänar mer än 50000): select T.FNAME from EMPLOYEE T where T.SALARY > 50000 TRK: {t.fname EMPLOYEE(t) t.salary >50000}

4 Exempel 2: SQL -> TRK-uttryck SQL (Finn efternamn och avdelning personer som tjänar mer än 4000): select T.LNAME, D.NAME from EMPLOYEE T, DEPT D where T.SALARY > 4000 AND D.DNO = T.DNO TRK: {t.bdate, d.name EMPLOYEE(t) DEPT(D) t.salary >4000 D.DNO=T.DNO} 1. Varje tupel t måste ha en range relation R av t, som specificeras med ett villkor R(t). OBS att i Elmasri-Navathe används i stället t ε R! 2. Villkoret väljer ut de kombinationer av tupler för vilket villkoret är sant Värdena av resultatattributen hämtas för varje utvald tupelkombination.

5 Formell definition av TRK En TRKfråga har formatet {t1.a1, t2.a2... COND(t1,t2,...)} där COND är en formel (Well Formed Formula, WFF), som består av atomer som kan vara ett av följande: 1. En atom på formatet R(ti), definerande range variables, T.ex. EMPLOYEE(t). 2. En atom på formatet ti.a op C där C är en konstant, op kan vara ett av =,, >, <,, T.ex. t.salary >50000 3. En atom på formatet ti.a op ti.b definerande jämförelse. T.ex. d.dnumber = t.dno

6 Formell definition av TRK En formel är antingen en atom eller flera formler sammansatta med de logiska operatorerna, och. En formel kan således vara ett av följande: 1. En atom som ovan. 2. Om F1 och F2 är formler så är F1 F2, F1 F2, F1) också formler T.ex.: d.dname = TOYS d.dnumber = t.dno

7 Formell definition av TRK En formel kan också vara sammansatta med kvantifierarna och : 1. Om F är en formel så är (( t) F) en formel. T.ex.: (( d) DEPARTMENT(d) d.dname = TOYS d.dnumber = t.dno) Formeln (( t) F) är sann om F evalueras till sant för något tupel t som förekommer i formeln F. OBS: Om en tupelvariabel i SQL ej refereras i resultattupeln blir den automatiskt -kvantifierad. Därför behövs ofta ej EXIST operator användas i SQL:

8 Exempel 3: SQL -> TRK-uttryck SQL (Finn namnen för de personer i TOYS avdelningen som tjänar mer än 50000): select T.FNAME, T.LNAME from EMPLOYEE T, DEPARTMENT D where T.SALARY > 50000 AND D.DNAME = TOYS AND D.DNO = T.DNO TRK: {t.fname, t.lname EMPLOYEE(t) t.salary >50000 (( d) DEPARTMENT(d) d.dname = TOYS d.dno = t.dno)}

9 Formell definition av TRK Dock behövs NOT EXIST användas ibland. Exempel: Finn de avdelningar där ingen tjänar över 100000: select D.DNAME from DEPARTMENT D where NOT EXIST (SELECT * FROM EMPLOYEE T where T.SALARY > 100000 and D.DNO = T.DNO) TRK: {d.dname DEPARTMENT(d) (( t) EMPLOYEE(t) t.salary >100000 d.dno = t.dno)} 2. Om F är en formel så är (( t) F) en formel. Formeln (( t) F) är sann om F evalueras till sant för alla tupler t som förekommer i formeln F. (( t) F) kan ersättas med (( t) F)