Database Management Systems - hash.atspace.euhash.atspace.eu/dbms/cap1.pdf · Introducere. Modelul...

127
Database Management Systems Cap 1. Introducere. Modelul Relat ¸ional March 22, 2017 Database Management Systems March 22, 2017 1 / 64

Transcript of Database Management Systems - hash.atspace.euhash.atspace.eu/dbms/cap1.pdf · Introducere. Modelul...

Database Management SystemsCap 1. Introducere. Modelul Relational

March 22, 2017

Database Management Systems March 22, 2017 1 / 64

1 Introducere

2 Modelul relational

3 Algebra relationala - select, project, join

4 Algebra relationala - union, difference, rename

5 Probleme

6 Exercitii

Database Management Systems March 22, 2017 2 / 64

Introducere

1 Introducere

2 Modelul relational

3 Algebra relationala - select, project, join

4 Algebra relationala - union, difference, rename

5 Probleme

6 Exercitii

Database Management Systems March 22, 2017 3 / 64

Introducere

Database Management System (DBMS)

manipularea unor cantitati mari de date, mai exact . . .

o modalitate eficienta, sigura, usor de programat, cu acces multi-user,de stocare si accesare a unor volume masive de date persistente

larg raspandite: web-sites, sisteme bancare, sisteme de comunicatie,experimente stiintifice

Database Management Systems March 22, 2017 4 / 64

Introducere

Proprietatile DBMS-urilor

masive: ın ordinul TBytes de date zilnic, mult peste capacitateamemoriei

persistente: persista dupa ıncetarea programului ce le creeaza

sigure: garantii ca datele nu sunt pierdute / suprascrise ın cazuloutage-urilor (hardware failure, power failure)

multi-user: acces concurent, mai multi utilizatori / aplicatii(concurrency control)

convenabile: modelul de reprezentare pe disc difera de modelulreprezentat ın program / limbaje declarative

eficiente: un sistem perfect dar LENT e inutil; mii de update-uri pesecunda, pe TB de date

reliable: 99.999% uptime garantat

Database Management Systems March 22, 2017 5 / 64

Introducere

Frameworks

aplicatiile ce implica DB pot fi programate cu framework-uri (ex.Django, Ruby on Rails)

DB folosite ımpreuna cu middleware, application servers ceinteractioneaza cu DB (ex. Tomcat, JBoss)

aplicatiile ce acceseaza intensiv datele pot sa nu lucreze cu DBMS(XLS, flat-files, Hadoop)

Database Management Systems March 22, 2017 6 / 64

Introducere

Concepte cheie

Data model: descrierea modului cum sunt structurate datele (ex.modelul de date relational - set de ınregistrari, XML - valorietichetate, graph model)

Schema vs. date: tipul de organizare a datelor, de regula stabilit laınceput

Data Definition Language (DDL): mijlocul cu care se descrieschema, structura DB, si se introduc date

Data Manipulation Language (DML): mijlocul prin care semodifica datele si se opereaza asupra lor prin emiterea de query-uri ınlimbaj declarativ SQL

Database Management Systems March 22, 2017 7 / 64

Introducere

Roluri ın operarea DBMS-urilor

DBMS implementer: construieste sistemul DBMS (ex. inginerdezvoltator la Oracle)

DB designer: stabileste schema DB, alege modul de structurare aldatelor ce urmeaza a fi stocate

DB application developer: proiecteaza aplicatia prin careutilizatorul foloseste DB, progamarea aplicatiei; de regula mai multeaplicatii pot opera simultan asupra DB

DB administator: ıncarca datele, alege parametrii de functionare aiDB, asigura protectia ımpotriva dezastrelor

Database Management Systems March 22, 2017 8 / 64

Modelul relational

1 Introducere

2 Modelul relational

3 Algebra relationala - select, project, join

4 Algebra relationala - union, difference, rename

5 Probleme

6 Exercitii

Database Management Systems March 22, 2017 9 / 64

Modelul relational

Modelul relational

mai mult de 35 de ani vechime

genereaza o industrie de miliarde de dolari

folosit de toate DBMS-urile comerciale importante

model simplu

interogare (query-uri) cu limbaje de nivel ınalt: simplu dar expresiv

implementari eficiente

Database Management Systems March 22, 2017 10 / 64

Modelul relational

Constructiile de baza

database: set de relatii (sau tabele) referite prin nume

Student College

Database Management Systems March 22, 2017 11 / 64

Modelul relational

Constructiile de baza

database: set de relatii (sau tabele) referite prin nume

fiecare relatie are un set de atribute (sau coloane)

StudentID name GPA smiley

Collegename state enroll

Database Management Systems March 22, 2017 11 / 64

Modelul relational

Constructiile de baza

database: set de relatii (sau tabele) referite prin nume

fiecare relatie are un set de atribute (sau coloane)

StudentID name GPA smiley

123 Amy 3.9 :-)

234 Bob 3.5 :-(

Collegename state enroll

Stanford CA 25.000

Berkeley CA 36.000

MIT MA 15.000

Database Management Systems March 22, 2017 11 / 64

Modelul relational

Constructiile de baza

database: set de relatii (sau tabele) referite prin nume

fiecare relatie are un set de atribute (sau coloane)

fiecare atribut are un tip (sau domeniu): int, float, string, JPEG file,enumerated

StudentID name GPA smiley

123 Amy 3.9 :-)

234 Bob 3.5 :-(

Collegename state enroll

Stanford CA 25.000

Berkeley CA 36.000

MIT MA 15.000

Database Management Systems March 22, 2017 11 / 64

Modelul relational

Constructiile de baza

schema: descrierea structurata a relatiilor din DB (include numelerelatiilor, atributele lor si relatiile dintre ele)

instanta: continutul DB la un moment dat

NULL: valoare speciala pentru ’nedefinit’ sau ’necunoscut’

ex. GPA > 3.5 OR GPA ≤ 3.5

StudentID name GPA smiley

123 Amy 3.9 :-)

234 Bob 3.5 :-(

345 Dan NULL :-|456 Gert 3.8 NULL

Collegename state enroll

Stanford CA 25.000

Berkeley CA 36.000

MIT MA 15.000

Database Management Systems March 22, 2017 11 / 64

Modelul relational

Constructiile de baza

cheie: atribut pentru care fiecare valoare a acestuia este unica ınfiecare tuplu (linie a relatiei)

ex. ID, respectiv combinatia (name, state)

utilizata la identificarea unui tuplu anume - calcularea de structuri detip index

ıntr-un tuplu, referirea la un alt tuplu (nu avem ponteri)

StudentID name GPA smiley

123 Amy 3.9 :-)

234 Bob 3.5 :-(

345 Dan NULL :-|456 Gert 3.8 NULL

Collegename state enroll

Stanford CA 25.000

Berkeley CA 36.000

MIT MA 15.000

Database Management Systems March 22, 2017 11 / 64

Modelul relational

Crearea relatiilor ın SQL

1 create table Student(ID, name, GPA, smiley)

1 create table College(name string, state char(2), enroll

integer)

Database Management Systems March 22, 2017 12 / 64

Algebra relationala - select, project, join

1 Introducere

2 Modelul relational

3 Algebra relationala - select, project, join

4 Algebra relationala - union, difference, rename

5 Probleme

6 Exercitii

Database Management Systems March 22, 2017 13 / 64

Algebra relationala - select, project, join

Algebra relationala

limbaj formal cu o anumita semantica ce e folosita la modelareabazelor de date relationale, i.e. SQL

E.F. Codd, IBM (1970)

https://en.wikipedia.org/wiki/Relational_algebra

Database Management Systems March 22, 2017 14 / 64

Algebra relationala - select, project, join

Queries

un query (o expresie) aplicat(a) pe o multime de relatii va avea carezultat o alta relatie

Database Management Systems March 22, 2017 15 / 64

Algebra relationala - select, project, join

Exemplu de relatii

DB a ınscrierilor la colegii

College (cName, state, enroll)

Student (sID, sName, GPA, sizeHS)

Apply (sID, cName, major, decision)

Database Management Systems March 22, 2017 16 / 64

Algebra relationala - select, project, join

Cel mai simplu query

numele relatiei:

Student

va genera aceeasi relatie (ın fapt una noua, cu acelasi continut)

se folosesc operatori pentru a filtra, felia, sau combina datele

Database Management Systems March 22, 2017 17 / 64

Algebra relationala - select, project, join

Operatorul ’select’

selecteaza anumite tuple (rows)

studenti cu GPA > 3.7

studenti cu GPA > 3.7 si sizeHS < 1000

ınscrieri la Stanford ın Computer Science (CS)

notatie: σconditionRelation

Database Management Systems March 22, 2017 18 / 64

Algebra relationala - select, project, join

Operatorul ’select’

studenti cu GPA > 3.7

σGPA>3.7Student

studenti cu GPA > 3.7 si sizeHS < 1000

σGPA>3.7∧sizeHS<1000Student

ınscrieri la Stanford ın Computer Science (CS)

σcName=′Stanford ′∧major=′CS ′Apply

Database Management Systems March 22, 2017 18 / 64

Algebra relationala - select, project, join

Operatorul ’project’

alege anumite coloane

ID-urile studentilor si deciziile lor

πsID,decisionApply - doar doua coloane

Database Management Systems March 22, 2017 19 / 64

Algebra relationala - select, project, join

Operatorul ’project’

ID-urile studentilor si numele lor, pentru cei cu GPA > 3.7

compunerea operatorilor:

Database Management Systems March 22, 2017 19 / 64

Algebra relationala - select, project, join

Operatorul ’project’

ID-urile studentilor si numele lor, pentru cei cu GPA > 3.7

compunerea operatorilor:

σGPA>3.7

Database Management Systems March 22, 2017 19 / 64

Algebra relationala - select, project, join

Operatorul ’project’

ID-urile studentilor si numele lor, pentru cei cu GPA > 3.7

compunerea operatorilor:

πsID,name(σGPA>3.7)

select si project lucreaza nu neaparat pe o relatie, ci pe orice expresie

Database Management Systems March 22, 2017 19 / 64

Algebra relationala - select, project, join

Exemplu: select si project

e util sa compunem doua select-uri ? exemplu:

σstate=′CA′(σenroll>1000College)

dar doua project-uri ? exemplu:

πGPA(πsID,GPA,sizeHSStudent)

dar e permis?

Database Management Systems March 22, 2017 20 / 64

Algebra relationala - select, project, join

Exemplu: select si project

e util sa compunem doua select-uri ? exemplu:

σstate=′CA′(σenroll>1000College) NU

dar doua project-uri ? exemplu:

πGPA(πsID,GPA,sizeHSStudent)

dar e permis?

Database Management Systems March 22, 2017 20 / 64

Algebra relationala - select, project, join

Exemplu: select si project

e util sa compunem doua select-uri ? exemplu:

σstate=′CA′(σenroll>1000College) NU

dar doua project-uri ? exemplu:

πGPA(πsID,GPA,sizeHSStudent)

dar e permis?

Database Management Systems March 22, 2017 20 / 64

Algebra relationala - select, project, join

Exemplu: select si project

e util sa compunem doua select-uri ? exemplu:

σstate=′CA′(σenroll>1000College) NU

dar doua project-uri ? exemplu:

πGPA(πsID,GPA,sizeHSStudent) NU

dar e permis?

Database Management Systems March 22, 2017 20 / 64

Algebra relationala - select, project, join

Exemplu: select si project

e util sa compunem doua select-uri ? exemplu:

σstate=′CA′(σenroll>1000College) NU

dar doua project-uri ? exemplu:

πGPA(πsID,GPA,sizeHSStudent) NU

dar e permis?

Database Management Systems March 22, 2017 20 / 64

Algebra relationala - select, project, join

Exemplu: select si project

e util sa compunem doua select-uri ? exemplu:

σstate=′CA′(σenroll>1000College) NU

dar doua project-uri ? exemplu:

πGPA(πsID,GPA,sizeHSStudent) NU

dar e permis? DA

Database Management Systems March 22, 2017 20 / 64

Algebra relationala - select, project, join

Duplicate

lista ınscrierilor pentru major si decizia

πmajor ,decisionApply

multe perechi de tip (’CS’, ’yes’) ?

relational algebra: valorile duplicate sunt eliminate !

rezultatul este un set (multime ın care fiecare element apare o singuradata)

diferit de limbajul SQL : multiset, bags

Database Management Systems March 22, 2017 21 / 64

Algebra relationala - select, project, join

Cross product (produs cartezian)

combina doua relatii

schema rezultata are ca atribute toate atributele celor doua relatii

tuplele rezultat vor fi toate combinatiile tuplelor relatiilor initiale

Student × Apply

rezultatul va contine ambele

Student.sId si Apply.sID

8 atribute, |S | × |A| tuple

Database Management Systems March 22, 2017 22 / 64

Algebra relationala - select, project, join

Cross product (produs cartezian)

combina doua relatii

schema rezultata are ca atribute toate atributele celor doua relatii

tuplele rezultat vor fi toate combinatiile tuplelor relatiilor initiale

Student × Apply

rezultatul va contine ambele

Student.sId si Apply.sID

8 atribute, |S | × |A| tuple

Database Management Systems March 22, 2017 22 / 64

Algebra relationala - select, project, join

Cross product (produs cartezian)

combina doua relatii

schema rezultata are ca atribute toate atributele celor doua relatii

tuplele rezultat vor fi toate combinatiile tuplelor relatiilor initiale

Student × Apply

rezultatul va contine ambele

Student.sId si Apply.sID

8 atribute, |S | × |A| tuple

Database Management Systems March 22, 2017 22 / 64

Algebra relationala - select, project, join

Cross product (produs cartezian)

combina doua relatii

schema rezultata are ca atribute toate atributele celor doua relatii

tuplele rezultat vor fi toate combinatiile tuplelor relatiilor initiale

Student × Apply

rezultatul va contine ambele

Student.sId si Apply.sID

8 atribute, |S | × |A| tuple

Database Management Systems March 22, 2017 22 / 64

Algebra relationala - select, project, join

Cross product: exemple

de aflat numele si GPA-urile studentilor cu sizeHS > 1000 care s-auınscris la ’CS’ si au fost respinsi

(Student × Apply)

σStudent.sID=Apply .sID(Student × Apply)

σStudent.sID=Apply .sID∧sizeHS>1000∧major=′CS ′∧decision=′no′(Student ×Apply)

πsName,GPA(σStudent.sID=Apply .sID∧sizeHS>1000∧major=′CS ′∧decision=′no′(Student × Apply))

Database Management Systems March 22, 2017 23 / 64

Algebra relationala - select, project, join

Cross product: exemple

de aflat numele si GPA-urile studentilor cu sizeHS > 1000 care s-auınscris la ’CS’ si au fost respinsi

(Student × Apply)

σStudent.sID=Apply .sID(Student × Apply)

σStudent.sID=Apply .sID∧sizeHS>1000∧major=′CS ′∧decision=′no′(Student ×Apply)

πsName,GPA(σStudent.sID=Apply .sID∧sizeHS>1000∧major=′CS ′∧decision=′no′(Student × Apply))

Database Management Systems March 22, 2017 23 / 64

Algebra relationala - select, project, join

Cross product: exemple

de aflat numele si GPA-urile studentilor cu sizeHS > 1000 care s-auınscris la ’CS’ si au fost respinsi

(Student × Apply)

σStudent.sID=Apply .sID(Student × Apply)

σStudent.sID=Apply .sID∧sizeHS>1000∧major=′CS ′∧decision=′no′(Student ×Apply)

πsName,GPA(σStudent.sID=Apply .sID∧sizeHS>1000∧major=′CS ′∧decision=′no′(Student × Apply))

Database Management Systems March 22, 2017 23 / 64

Algebra relationala - select, project, join

Cross product: exemple

de aflat numele si GPA-urile studentilor cu sizeHS > 1000 care s-auınscris la ’CS’ si au fost respinsi

(Student × Apply)

σStudent.sID=Apply .sID(Student × Apply)

σStudent.sID=Apply .sID∧sizeHS>1000∧major=′CS ′∧decision=′no′(Student ×Apply)

πsName,GPA(σStudent.sID=Apply .sID∧sizeHS>1000∧major=′CS ′∧decision=′no′(Student × Apply))

Database Management Systems March 22, 2017 23 / 64

Algebra relationala - select, project, join

Cross-product: test

Care din urmatoarele expresii nu genereaza numele si GPA-urilestudentilor cu sizeHS > 1000 cu major =′ CS ′ si au fost respinsi?

1 πsName,GPA(σStudent.sID=Apply .sID(σHS>1000(Student)×σmajor=′CS ′∧decision=′no′(Apply)))

2

πsName,GPA(σStudent.sID=Apply .sID∧HS>1000∧major=′CS ′∧dec=′no′(Student×πsID,major ,decApply))

3 σStudent.sID=Apply .sID(πsName,GPA(σHS>1000Student ×σmajor=′CS ′∧dec=′no′Apply))

raspuns: 3 - select facut pe o proiectie cu atribute lipsa

Database Management Systems March 22, 2017 24 / 64

Algebra relationala - select, project, join

Cross-product: test

Care din urmatoarele expresii nu genereaza numele si GPA-urilestudentilor cu sizeHS > 1000 cu major =′ CS ′ si au fost respinsi?

1 πsName,GPA(σStudent.sID=Apply .sID(σHS>1000(Student)×σmajor=′CS ′∧decision=′no′(Apply)))

2

πsName,GPA(σStudent.sID=Apply .sID∧HS>1000∧major=′CS ′∧dec=′no′(Student×πsID,major ,decApply))

3 σStudent.sID=Apply .sID(πsName,GPA(σHS>1000Student ×σmajor=′CS ′∧dec=′no′Apply))

raspuns: 3 - select facut pe o proiectie cu atribute lipsa

Database Management Systems March 22, 2017 24 / 64

Algebra relationala - select, project, join

Natural join

forteaza egalitatea ıntre toate atributele cu acelasi nume

elimina copiile atributelor duplicat

Student ./ Apply - sID va fi comun

Database Management Systems March 22, 2017 25 / 64

Algebra relationala - select, project, join

Natural join

numele si GPA-urile studentilor cu sizeHS > 1000 care s-au ınscris la’CS’ si au fost respinsi

πsName,GPA(σHS>1000∧major=′CS ′∧dec=′no′(Student ./ Apply))

Database Management Systems March 22, 2017 25 / 64

Algebra relationala - select, project, join

Natural join

numele si GPA-urile studentilor cu sizeHS > 1000 care s-au ınscris la’CS’ si au fost respinsi, cu colegii cu mai mult de 20.000

πsName,GPA(σHS>1000∧major=′CS ′∧dec=′no′∧enroll>20.000(Student ./(Apply ./ College)))

Database Management Systems March 22, 2017 25 / 64

Algebra relationala - select, project, join

Natural join

nu adauga ceva ın plus

se poate rescrie folosind cross product (notatie):

Exp1 ./ Expr2 ≡πschema(E1)∪schema(E2)(σE1.A1=E2.A1∧E1.A2=E2.A2∧...(Expr1 × Expr2))

Database Management Systems March 22, 2017 25 / 64

Algebra relationala - select, project, join

Natural join: test 1

Care din urmatoarele descrie rezultatul expresiei:

πsName,cName(σHS>enroll(σstate=′CA′College ./ Student ./σmajor=′CS ′Apply))

1 toate perechile de tip (student, college) ın care studentul se ınscrie laCS ın acel colegiu, colegiul e ın California (CA), si colegiul e mai micdecat un liceu, ca cifra de scolarizare

2 perechile (student, college) la care studentul s-a ınscris pentru CS,unde cel putin unul din colegii are cifra de scolarizare mai mica decatliceul de unde vine studentul

3 perechile (student, college), cu cifra mai mica decat liceul studentului,la care studentul s-a ınscris, unde cel putin unul din colegii este ınCalifornia

4 perechile (student, college), unde colegiul are cifra de scolarizare maimica decat liceul studentului, la care studentul s-a ınscris la CS

raspuns: 1

Database Management Systems March 22, 2017 26 / 64

Algebra relationala - select, project, join

Natural join: test 1

Care din urmatoarele descrie rezultatul expresiei:

πsName,cName(σHS>enroll(σstate=′CA′College ./ Student ./σmajor=′CS ′Apply))

1 toate perechile de tip (student, college) ın care studentul se ınscrie laCS ın acel colegiu, colegiul e ın California (CA), si colegiul e mai micdecat un liceu, ca cifra de scolarizare

2 perechile (student, college) la care studentul s-a ınscris pentru CS,unde cel putin unul din colegii are cifra de scolarizare mai mica decatliceul de unde vine studentul

3 perechile (student, college), cu cifra mai mica decat liceul studentului,la care studentul s-a ınscris, unde cel putin unul din colegii este ınCalifornia

4 perechile (student, college), unde colegiul are cifra de scolarizare maimica decat liceul studentului, la care studentul s-a ınscris la CS

raspuns: 1

Database Management Systems March 22, 2017 26 / 64

Algebra relationala - select, project, join

Natural join: test 2

Care din urmatoarele expresii gaseste ID-urile tuturor studentilorpentru care colegiul poarta numele studentului?

1 πsID(College ./ Student)

2 πsID(σcName=sName(College × Student))

3 πsID(πcNameCollege × πcName(σsName=cNameStudent))

4 πsID(σcName=sName(πsIDStudent × College × Student))

raspuns: 2

Database Management Systems March 22, 2017 27 / 64

Algebra relationala - select, project, join

Natural join: test 2

Care din urmatoarele expresii gaseste ID-urile tuturor studentilorpentru care colegiul poarta numele studentului?

1 πsID(College ./ Student)

2 πsID(σcName=sName(College × Student))

3 πsID(πcNameCollege × πcName(σsName=cNameStudent))

4 πsID(σcName=sName(πsIDStudent × College × Student))

raspuns: 2

Database Management Systems March 22, 2017 27 / 64

Algebra relationala - select, project, join

Theta join

nu adauga ceva ın plus, doar o notatie

Exp1 ./Θ Exp2 ≡ σΘ(Exp1 × Exp2)

operatie de baza implementata de DBMS

de regula prin termenul de ’join’ din SQL de fapt se ıntelege ’thetajoin’

’natural join’ mai este denumit si ’equi-join’ (de fapt invers, la’natural join’ equi-join-ul este implicit)

Database Management Systems March 22, 2017 28 / 64

Algebra relationala - union, difference, rename

1 Introducere

2 Modelul relational

3 Algebra relationala - select, project, join

4 Algebra relationala - union, difference, rename

5 Probleme

6 Exercitii

Database Management Systems March 22, 2017 29 / 64

Algebra relationala - union, difference, rename

Operatorul ’union’

lista colegiilor si studentilor

πcNameCollege ∪ πsNameStudent

de fapt nu e chiar corect, ’union’ accepta doar scheme cu atribute cuacelasi nume

Database Management Systems March 22, 2017 30 / 64

Algebra relationala - union, difference, rename

Operatorul ’difference’

ID-urile studentilor care nu s-au ınscris nicaieri

πsIDStudent - lista tuturor studentilor

πsIDApply - lista studentilor care s-au ınscris undeva

rezultatul este πsIDStudent − πsIDApply

Database Management Systems March 22, 2017 31 / 64

Algebra relationala - union, difference, rename

Operatorul ’difference’

ID-urile studentilor care nu s-au ınscris nicaieri

πsIDStudent - lista tuturor studentilor

πsIDApply - lista studentilor care s-au ınscris undeva

rezultatul este πsIDStudent − πsIDApply

Database Management Systems March 22, 2017 31 / 64

Algebra relationala - union, difference, rename

Operatorul ’difference’

ID-urile studentilor care nu s-au ınscris nicaieri

πsIDStudent - lista tuturor studentilor

πsIDApply - lista studentilor care s-au ınscris undeva

rezultatul este πsIDStudent − πsIDApply

Database Management Systems March 22, 2017 31 / 64

Algebra relationala - union, difference, rename

Operatorul ’difference’

ID-urile si numele studentilor care nu s-au ınscris nicaieri

πsID,sName((πsIDStudent − πsIDApply) ./ Student)

constructia se numeste ’join back’

Database Management Systems March 22, 2017 31 / 64

Algebra relationala - union, difference, rename

Operatorul ’difference’

ID-urile si numele studentilor care nu s-au ınscris nicaieri

πsID,sName((πsIDStudent − πsIDApply) ./ Student)

constructia se numeste ’join back’

Database Management Systems March 22, 2017 31 / 64

Algebra relationala - union, difference, rename

Operatorul ’intersection’

numele care sunt atat nume de colegiu cat si nume de student

πcNameCollege - lista colegiilor

πsNameStudent - lista studentilor

rezultatul: πcNameCollege ∩ πsNameStudent

Database Management Systems March 22, 2017 32 / 64

Algebra relationala - union, difference, rename

Operatorul ’intersection’

numele care sunt atat nume de colegiu cat si nume de student

πcNameCollege - lista colegiilor

πsNameStudent - lista studentilor

rezultatul: πcNameCollege ∩ πsNameStudent

Database Management Systems March 22, 2017 32 / 64

Algebra relationala - union, difference, rename

Operatorul ’intersection’

nu adauga nimic ın plus ca expresivitate

E1 ∩ E2 ≡ E1 − (E1 − E2)

Database Management Systems March 22, 2017 32 / 64

Algebra relationala - union, difference, rename

Operatorul ’intersection’

nu adauga nimic ın plus ca expresivitate (2)

asta nu ınseamna ca nu e utila!

E1 ∩ E2 ≡ E1 ./ E2

Database Management Systems March 22, 2017 32 / 64

Algebra relationala - union, difference, rename

Operatori: test

Care din urmatoarele enunturi descrie rezultatul expresiei:

πcNameCollege − πcName(Apply ./(πsID(σGPA>3.5Student) ∩ πsID(σmajor=′CS ′Apply)))

1 toate colegiile care nu au aplicanti cu GPA > 3.5 ce au aplicat pentruCS la acel colegiu

2 toate colegiile care nu au aplicanti cu GPA > 3.5 ce au aplicat pentruCS la toate colegiile

3 toate colegiile pentru care toti aplicantii au fie GPA > 3.5 sau auaplicat la CS la acel colegiu

4 toate colegiile pentru care nici un aplicant nu are GPA > 3.5 sau niciun aplicant nu s-a ınscris la CS la acel colegiu

raspuns: 2

Database Management Systems March 22, 2017 33 / 64

Algebra relationala - union, difference, rename

Operatori: test

Care din urmatoarele enunturi descrie rezultatul expresiei:

πcNameCollege − πcName(Apply ./(πsID(σGPA>3.5Student) ∩ πsID(σmajor=′CS ′Apply)))

1 toate colegiile care nu au aplicanti cu GPA > 3.5 ce au aplicat pentruCS la acel colegiu

2 toate colegiile care nu au aplicanti cu GPA > 3.5 ce au aplicat pentruCS la toate colegiile

3 toate colegiile pentru care toti aplicantii au fie GPA > 3.5 sau auaplicat la CS la acel colegiu

4 toate colegiile pentru care nici un aplicant nu are GPA > 3.5 sau niciun aplicant nu s-a ınscris la CS la acel colegiu

raspuns: 2

Database Management Systems March 22, 2017 33 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

redenumeste atributele din relatie ın ordine, cu numele date -A1, . . . ,An, sau redenumeste relatia:

ρR(A1,...,An)(E )

ρR(E )

ρA1,...,An(E )

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

lista numelor de colegii si de studenti

necesita o schema comuna

ρC(name)(πcNameCollege) ∪ ρC(name)(πsNameStudent)

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

folosit pentru eliminarea ambiguitatii ın ’self-joins’

perechi de colegii din acelasi stat

σs1=s2(ρC1(n1,s1,e1)College × ρC2(n2,s2,e2)College)

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

folosit pentru eliminarea ambiguitatii ın ’self-joins’

perechi de colegii din acelasi stat - mai simplu cu natural join:

ρC1(n1,s,e1)College ./ ρC2(n2,s,e2)College

* totusi avem o problema: care?

* apar perechi de tip (Stanford, Stanford), (Berkeley, Stanford),(Berkeley, Berkeley), . . .

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

folosit pentru eliminarea ambiguitatii ın ’self-joins’

perechi de colegii din acelasi stat - mai simplu cu natural join:

ρC1(n1,s,e1)College ./ ρC2(n2,s,e2)College

* totusi avem o problema: care?

* apar perechi de tip (Stanford, Stanford), (Berkeley, Stanford),(Berkeley, Berkeley), . . .

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

folosit pentru eliminarea ambiguitatii ın ’self-joins’

perechi de colegii din acelasi stat - mai simplu cu natural join:

ρC1(n1,s,e1)College ./ ρC2(n2,s,e2)College

* totusi avem o problema: care?

* apar perechi de tip (Stanford, Stanford), (Berkeley, Stanford),(Berkeley, Berkeley), . . .

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

perechi de colegii din acelasi stat

σn16=n2(ρC1(n1,s,e1)College ./ ρC2(n2,s,e2)College)

* mai avem o problema: care?

* apar perechi de tip (Berkeley, Stanford), (Stanford, Berkeley), . . .

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

perechi de colegii din acelasi stat

σn16=n2(ρC1(n1,s,e1)College ./ ρC2(n2,s,e2)College)

* mai avem o problema: care?

* apar perechi de tip (Berkeley, Stanford), (Stanford, Berkeley), . . .

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

perechi de colegii din acelasi stat

σn16=n2(ρC1(n1,s,e1)College ./ ρC2(n2,s,e2)College)

* mai avem o problema: care?

* apar perechi de tip (Berkeley, Stanford), (Stanford, Berkeley), . . .

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Operatorul ’rename’

perechi de colegii din acelasi stat

σn1<n2(ρC1(n1,s,e1)College ./ ρC2(n2,s,e2)College)

* obtinem doar (Berkeley, Stanford)

Database Management Systems March 22, 2017 34 / 64

Algebra relationala - union, difference, rename

Natural join: test

Presupunem ca Student are 20 tuple. Care este numarul minim,respectiv maxim de tuple al rezultatului expresiei:

ρs1(i1,n1,g ,h)Student ./ ρs2(i2,n2,g ,h)Student

1 min. 0, max. 400

2 min. 20, max. 20

3 min. 20, max. 400

4 min. 40, max. 40

raspuns: 3

Database Management Systems March 22, 2017 35 / 64

Algebra relationala - union, difference, rename

Natural join: test

Presupunem ca Student are 20 tuple. Care este numarul minim,respectiv maxim de tuple al rezultatului expresiei:

ρs1(i1,n1,g ,h)Student ./ ρs2(i2,n2,g ,h)Student

1 min. 0, max. 400

2 min. 20, max. 20

3 min. 20, max. 400

4 min. 40, max. 40

raspuns: 3

Database Management Systems March 22, 2017 35 / 64

Algebra relationala - union, difference, rename

Natural join: test

Presupunem ca relatiile College, Student si Apply au 5, 20, respectiv50 tuple. cName este cheie pentru College. Nu presupuneti ca sNameeste cheie pentru Student. cName din College apar de asemenea ınApply. Care este numarul minim, respectiv maxim de tuple alrezultatului expresiei:

πcNameCollege ∪ ρcName(πsNameStudent) ∪ πcNameApply

1 min. 5, max. 25

2 min. 5, max. 75

3 min. 25, max. 45

4 min. 75, max. 75

raspuns: 1

Database Management Systems March 22, 2017 36 / 64

Algebra relationala - union, difference, rename

Natural join: test

Presupunem ca relatiile College, Student si Apply au 5, 20, respectiv50 tuple. cName este cheie pentru College. Nu presupuneti ca sNameeste cheie pentru Student. cName din College apar de asemenea ınApply. Care este numarul minim, respectiv maxim de tuple alrezultatului expresiei:

πcNameCollege ∪ ρcName(πsNameStudent) ∪ πcNameApply

1 min. 5, max. 25

2 min. 5, max. 75

3 min. 25, max. 45

4 min. 75, max. 75

raspuns: 1

Database Management Systems March 22, 2017 36 / 64

Algebra relationala - union, difference, rename

Notatii de tip atribuire

se folosesc pentru calculul expresiilor intermediare

exemplu: perechile de colegii din acelasi stat

C1 := ρn1,s,e1College

C2 := ρn2,s,e2College

CP := C1 ./ C2

ans := σn1<n2CP

Database Management Systems March 22, 2017 37 / 64

Algebra relationala - union, difference, rename

Arbori de expresii

forma sub care DBMS-urile compileaza expresiile

oricarei expresii i se poate asocia un arbore

GPA-urile studentilor care aplica la CS ın California:

πGPA

σstate=′CA′∧major=′CS ′

./

College Student Apply

echivalent cu:

πGPA(σstate=′CA′∧major=′CS ′(College ./ Student ./ Apply))

Database Management Systems March 22, 2017 38 / 64

Algebra relationala - union, difference, rename

Sumar

operatii de baza:

relatia: R

select: σC (E )

project: πA1,...,An(E )

cross product: E1 × E2

union: E1 ∪ E2

difference: E1 − E2

rename: ρR(A1,...,An)(E )

abrevieri:

natural join: E1 ./ E2

theta join: E1 ./Θ E2

intersection: E1 ∩ E2

Database Management Systems March 22, 2017 39 / 64

Probleme

1 Introducere

2 Modelul relational

3 Algebra relationala - select, project, join

4 Algebra relationala - union, difference, rename

5 Probleme

6 Exercitii

Database Management Systems March 22, 2017 40 / 64

Probleme

Problema 1Se dau relatiile R(A, C) si S(B, C, D) cu urmatoarele tuple:R(A, C)

A C

3 36 42 33 57 1

S(B, C, D)B C D

5 1 61 5 84 3 9

Calculati natural join ıntre R si S, unde rezultatul este de forma (A, B, C,D). Care din urmatoarele tuple este ın rezultat ?

1 (3, 4, 3, 9)

2 (2, 3, 1, 6)

3 (6, 4, 3, 9)

4 (3, 3, 5, 8)

raspuns: 1

Database Management Systems March 22, 2017 41 / 64

Probleme

Problema 1Se dau relatiile R(A, C) si S(B, C, D) cu urmatoarele tuple:R(A, C)

A C

3 36 42 33 57 1

S(B, C, D)B C D

5 1 61 5 84 3 9

Calculati natural join ıntre R si S, unde rezultatul este de forma (A, B, C,D). Care din urmatoarele tuple este ın rezultat ?

1 (3, 4, 3, 9)

2 (2, 3, 1, 6)

3 (6, 4, 3, 9)

4 (3, 3, 5, 8)

raspuns: 1

Database Management Systems March 22, 2017 41 / 64

Probleme

Problema 2Se dau relatiile R(A, B) si S(B, C, D) cu urmatoarele tuple:R(A, B)

A B

1 a7 t2 g4 c9 t

S(B, C, D)B C D

c 5 6a 7 8t 8 9

Calculati theta-join ıntre R si S cu constrangerea R.B = S.B ANDR.A < S .C . Care din urmatoarele tuple este ın rezultat? Formatul este (A,R.B, S.B, C, D).

1 (2, g, g, 7, 8)2 (7, t, t, 8, 9)3 (9, t, t, 8, 9)4 (1, a, c, 5, 6)

raspuns: 2

Database Management Systems March 22, 2017 42 / 64

Probleme

Problema 2Se dau relatiile R(A, B) si S(B, C, D) cu urmatoarele tuple:R(A, B)

A B

1 a7 t2 g4 c9 t

S(B, C, D)B C D

c 5 6a 7 8t 8 9

Calculati theta-join ıntre R si S cu constrangerea R.B = S.B ANDR.A < S .C . Care din urmatoarele tuple este ın rezultat? Formatul este (A,R.B, S.B, C, D).

1 (2, g, g, 7, 8)2 (7, t, t, 8, 9)3 (9, t, t, 8, 9)4 (1, a, c, 5, 6)

raspuns: 2Database Management Systems March 22, 2017 42 / 64

Probleme

Problema 3

Consideram o relatie R(A, B) cu r tuple, toate unice ın R, si relatia S(B,C) cu s tuple, toate unice ın S. Fie t numarul de tuple rezultate din relatiaR natural-join S. Care din urmatoarele tripe (r, s, t) sunt posibile ?

1 (2, 3, 9)

2 (5, 10, 500)

3 (5, 0, 5)

4 (5, 3, 1)

raspuns: 4

Database Management Systems March 22, 2017 43 / 64

Probleme

Problema 3

Consideram o relatie R(A, B) cu r tuple, toate unice ın R, si relatia S(B,C) cu s tuple, toate unice ın S. Fie t numarul de tuple rezultate din relatiaR natural-join S. Care din urmatoarele tripe (r, s, t) sunt posibile ?

1 (2, 3, 9)

2 (5, 10, 500)

3 (5, 0, 5)

4 (5, 3, 1)

raspuns: 4

Database Management Systems March 22, 2017 43 / 64

Probleme

Problema 4

Consideram o relatie R(A) cu r tuple, toate unice ın R, si relatia S(A) cu stuple, toate unice ın S. Fie t numarul de tuple rezultate din relatia R - S.Care din urmatoarele tripe (r, s, t) sunt posibile ?

1 (5, 10, 10)

2 (10, 5, 2)

3 (5, 10, 15)

4 (10, 13, 8)

raspuns: 4

Database Management Systems March 22, 2017 44 / 64

Probleme

Problema 4

Consideram o relatie R(A) cu r tuple, toate unice ın R, si relatia S(A) cu stuple, toate unice ın S. Fie t numarul de tuple rezultate din relatia R - S.Care din urmatoarele tripe (r, s, t) sunt posibile ?

1 (5, 10, 10)

2 (10, 5, 2)

3 (5, 10, 15)

4 (10, 13, 8)

raspuns: 4

Database Management Systems March 22, 2017 44 / 64

Probleme

Problema 5

Se dau relatiile R(A, B) si S(B, C, D) cu urmatoarele tuple:R(A, B)

A B

1 23 45 6

S(B, C, D)B C D

2 4 64 6 84 7 9

Calculati natural join ıntre R si S. Care din urmatoarele tuple este ınrezultat? Formatul este (A, B, C, D).

1 (5, 6, 4, 6)

2 (5, 6, 7, 8)

3 (5, 6, 7, 9)

4 (3, 4, 6, 8)

raspuns: 4

Database Management Systems March 22, 2017 45 / 64

Probleme

Problema 5

Se dau relatiile R(A, B) si S(B, C, D) cu urmatoarele tuple:R(A, B)

A B

1 23 45 6

S(B, C, D)B C D

2 4 64 6 84 7 9

Calculati natural join ıntre R si S. Care din urmatoarele tuple este ınrezultat? Formatul este (A, B, C, D).

1 (5, 6, 4, 6)

2 (5, 6, 7, 8)

3 (5, 6, 7, 9)

4 (3, 4, 6, 8)

raspuns: 4

Database Management Systems March 22, 2017 45 / 64

Probleme

Problema 6

Se dau relatiile R(A, B) si S(B, C, D) cu urmatoarele tuple:R(A, B)

A B

1 23 45 6

S(B, C, D)B C D

2 4 64 6 84 7 9

Calculati theta-join ıntre R si S cu conditia R.A < S .C si R.B < S .D.Care din urmatoarele tuple este ın rezultat? Formatul este (A, R.B, S.B,C, D).

1 (3, 4, 2, 4, 6)

2 (5, 6, 2, 4, 6)

3 (5, 6, 4, 6, 9)

4 (3, 4, 5, 7, 9)

raspuns: 1

Database Management Systems March 22, 2017 46 / 64

Probleme

Problema 6

Se dau relatiile R(A, B) si S(B, C, D) cu urmatoarele tuple:R(A, B)

A B

1 23 45 6

S(B, C, D)B C D

2 4 64 6 84 7 9

Calculati theta-join ıntre R si S cu conditia R.A < S .C si R.B < S .D.Care din urmatoarele tuple este ın rezultat? Formatul este (A, R.B, S.B,C, D).

1 (3, 4, 2, 4, 6)

2 (5, 6, 2, 4, 6)

3 (5, 6, 4, 6, 9)

4 (3, 4, 5, 7, 9)

raspuns: 1

Database Management Systems March 22, 2017 46 / 64

Probleme

Problema 7

Se da relatia R(A, B, C) cu urmatoarele tuple:A B C

1 2 34 2 34 5 62 5 31 2 6

Calculati proiectia πC ,B(R). Care din urmatoarele tuple este ın rezultat?

1 (4, 2)

2 (2, 6)

3 (4, 2, 3)

4 (6, 2)

raspuns: 4

Database Management Systems March 22, 2017 47 / 64

Probleme

Problema 7

Se da relatia R(A, B, C) cu urmatoarele tuple:A B C

1 2 34 2 34 5 62 5 31 2 6

Calculati proiectia πC ,B(R). Care din urmatoarele tuple este ın rezultat?

1 (4, 2)

2 (2, 6)

3 (4, 2, 3)

4 (6, 2)

raspuns: 4

Database Management Systems March 22, 2017 47 / 64

Probleme

Problema 8Se dau relatiile R(A, B, C) si S(A, B, C) cu urmatoarele tuple:R(A, B, C)

A B C

1 2 34 2 34 5 62 5 31 2 6

S(A, B, C)A B C

2 5 32 5 44 5 61 2 3

Calculati union ıntre R si S. Care din urmatoarele tuple nu apare ınrezultat?

1 (4, 5, 6)

2 (4, 5, 3)

3 (1, 2, 3)

4 (2, 5, 3)

raspuns: 2

Database Management Systems March 22, 2017 48 / 64

Probleme

Problema 8Se dau relatiile R(A, B, C) si S(A, B, C) cu urmatoarele tuple:R(A, B, C)

A B C

1 2 34 2 34 5 62 5 31 2 6

S(A, B, C)A B C

2 5 32 5 44 5 61 2 3

Calculati union ıntre R si S. Care din urmatoarele tuple nu apare ınrezultat?

1 (4, 5, 6)

2 (4, 5, 3)

3 (1, 2, 3)

4 (2, 5, 3)

raspuns: 2

Database Management Systems March 22, 2017 48 / 64

Probleme

Problema 9Se dau relatiile R(A, B, C) si S(A, B, C) cu urmatoarele tuple:R(A, B, C)

A B C

1 2 34 2 34 5 62 5 31 2 6

S(A, B, C)A B C

2 5 32 5 44 5 61 2 3

Calculati intersection ıntre R si S. Care din urmatoarele tuple este ınrezultat?

1 (1, 2, 4)

2 (4, 2, 3)

3 (2, 4, 3)

4 (2, 5, 3)

raspuns: 4

Database Management Systems March 22, 2017 49 / 64

Probleme

Problema 9Se dau relatiile R(A, B, C) si S(A, B, C) cu urmatoarele tuple:R(A, B, C)

A B C

1 2 34 2 34 5 62 5 31 2 6

S(A, B, C)A B C

2 5 32 5 44 5 61 2 3

Calculati intersection ıntre R si S. Care din urmatoarele tuple este ınrezultat?

1 (1, 2, 4)

2 (4, 2, 3)

3 (2, 4, 3)

4 (2, 5, 3)

raspuns: 4

Database Management Systems March 22, 2017 49 / 64

Probleme

Problema 10Se dau relatiile R(A, B, C) si S(A, B, C) cu urmatoarele tuple:R(A, B, C)

A B C

1 2 34 2 34 5 62 5 31 2 6

S(A, B, C)A B C

2 5 32 5 44 5 61 2 3

Calculati (R - S) union (S - R), denumita ’diferenta simetrica’ ıntre R si S.Care din urmatoarele tuple este ın rezultat?

1 (4, 5, 6)

2 (1, 2, 6)

3 (2, 2, 3)

4 (4, 5, 3)

raspuns: 2

Database Management Systems March 22, 2017 50 / 64

Probleme

Problema 10Se dau relatiile R(A, B, C) si S(A, B, C) cu urmatoarele tuple:R(A, B, C)

A B C

1 2 34 2 34 5 62 5 31 2 6

S(A, B, C)A B C

2 5 32 5 44 5 61 2 3

Calculati (R - S) union (S - R), denumita ’diferenta simetrica’ ıntre R si S.Care din urmatoarele tuple este ın rezultat?

1 (4, 5, 6)

2 (1, 2, 6)

3 (2, 2, 3)

4 (4, 5, 3)

raspuns: 2

Database Management Systems March 22, 2017 50 / 64

Exercitii

1 Introducere

2 Modelul relational

3 Algebra relationala - select, project, join

4 Algebra relationala - union, difference, rename

5 Probleme

6 Exercitii

Database Management Systems March 22, 2017 51 / 64

Exercitii

Context

Vom folosi interpretorul de algebra relationala de lahttps://users.cs.duke.edu/~junyang/ra/. Acesta este unwrapper pentru SQLite.

Cititi instructiunile din pagina respectiva.

Aduceti fisierul ra.jar si lansati-l cu optiunea -h. Interpretorul selanseaza folosind comanda:

> java -jar ra.jar -h

Implicit engine-ul creeaza propria DB denumita sample.db. Vom dorisa ne cream propria baza, folosind fisierul pizza.ra:

> java -jar ra.jar -i pizza.ra

Database Management Systems March 22, 2017 52 / 64

Exercitii

Relatii

Dupa popularea bazei, putem trece la emiterea de query-uri:

> java -jar ra.jar

ra>

Baza de date Pizza are definite urmatoarele relatii:

Person(name, age, gender) // key: name

Frequents(name, pizzeria) // key: [name, pizzeria]

Eats(name, pizza) // key: [name, pizza]

Serves(pizzeria, pizza, price) // key: [pizzeria, pizza]

Exersati numele relatiei:

ra> person;

Output schema: (name text, age integer, gender text)

-----

Amy|16|female

Ben|21|male

...

Database Management Systems March 22, 2017 53 / 64

Exercitii

Help

Exersati comenzile help si quit (observati sintaxa):

ra> \help;

Terminate your commands or expressions by ";"

Commands:

\help: print this message

\quit: exit ra

\list: list all relations in the database

\sqlexec_{STATEMENT}: execute SQL in the database

Relational algebra expressions:

R: relation named by R

\select_{COND} EXP: selection over an expression

\project_{ATTR_LIST} EXP: projection of an expression

...

ra> \quit;

Bye!

Database Management Systems March 22, 2017 54 / 64

Exercitii

Exercitiul 1 (rezolvat)

Gasiti toate pizzele mancate cel putin o persoana de sex feminin cuvarsta peste 20:

ra> \select_{gender=’female’ and age > 20} Person;

Output schema: (name text, age integer, gender text)

-----

Fay|21|female

Hil|30|female

-----

Total number of rows: 2

sunt doua astfel de persoane; folosim un natural join cu relatia Eats

Database Management Systems March 22, 2017 55 / 64

Exercitii

Exercitiul 1Ca sa nu lucram ın prompter, vom salva query-ul ıntr-un fisierdenumit mini.ra (obligatoriu ıncheiat cu o linie vida):

\project_{pizza} ( /* comentariu */

( \select_{gender=’female’ and age > 20} Person )

\join Eats

); /* cu copy-paste s-ar putea sa va dea eroare */

Apelarea se face cu:

> java -jar ra.jar -i mini.ra

Output schema: (pizza text)

-----

cheese

mushroom

supreme

-----

Total number of rows: 3

Database Management Systems March 22, 2017 56 / 64

Exercitii

Exercitiul 2

Gasiti numele tuturor persoanelor de sex feminin care mananca celputin o pizza ce se serveste la ’Straw Hat’ (pizza respectiva nutrebuie neaparat sa fie si mancata la ’Straw Hat’).

raspuns: (Amy, Hill)

Database Management Systems March 22, 2017 57 / 64

Exercitii

Exercitiul 2

Gasiti numele tuturor persoanelor de sex feminin care mananca celputin o pizza ce se serveste la ’Straw Hat’ (pizza respectiva nutrebuie neaparat sa fie si mancata la ’Straw Hat’).

raspuns: (Amy, Hill)

Database Management Systems March 22, 2017 57 / 64

Exercitii

Exercitiul 3

Gasiti toate pizzeriile ce servesc cel putin o pizza pentru mai putin de10 dolari, pe care fie Amy fie Fay (sau ambele) o mananca.

raspuns: (Little Caesars, New York Pizza, Straw Hat)

Database Management Systems March 22, 2017 58 / 64

Exercitii

Exercitiul 3

Gasiti toate pizzeriile ce servesc cel putin o pizza pentru mai putin de10 dolari, pe care fie Amy fie Fay (sau ambele) o mananca.

raspuns: (Little Caesars, New York Pizza, Straw Hat)

Database Management Systems March 22, 2017 58 / 64

Exercitii

Exercitiul 4

Gasiti toate pizzeriile ce servesc cel putin o pizza pentru mai putin de10 dolari, pe care atat Amy cat si Fay o mananca.

raspuns: (Little Caesars)

Database Management Systems March 22, 2017 59 / 64

Exercitii

Exercitiul 4

Gasiti toate pizzeriile ce servesc cel putin o pizza pentru mai putin de10 dolari, pe care atat Amy cat si Fay o mananca.

raspuns: (Little Caesars)

Database Management Systems March 22, 2017 59 / 64

Exercitii

Exercitiul 5

Gasiti numele tuturor celor care mananca cel putin o pizza servita laDominos dar care nu frecventeaza Dominos.

raspuns: (Amy, Ben, Dan, Eli, Gus)

Database Management Systems March 22, 2017 60 / 64

Exercitii

Exercitiul 5

Gasiti numele tuturor celor care mananca cel putin o pizza servita laDominos dar care nu frecventeaza Dominos.

raspuns: (Amy, Ben, Dan, Eli, Gus)

Database Management Systems March 22, 2017 60 / 64

Exercitii

Exercitiul 6

Gasiti toate pizzele mancate doar de persoane mai tinere de 24 de ani,sau care costa mai putin de 10 dolari si sunt servite ın fiecare pizzerie.

raspuns: (cheese, pepperoni, sausage)

Database Management Systems March 22, 2017 61 / 64

Exercitii

Exercitiul 6

Gasiti toate pizzele mancate doar de persoane mai tinere de 24 de ani,sau care costa mai putin de 10 dolari si sunt servite ın fiecare pizzerie.

raspuns: (cheese, pepperoni, sausage)

Database Management Systems March 22, 2017 61 / 64

Exercitii

Exercitiul 7*

Gasiti varsta celei/celor mai ın varsta persoane care mananca pizzamushroom.

raspuns: (24)

Database Management Systems March 22, 2017 62 / 64

Exercitii

Exercitiul 7*

Gasiti varsta celei/celor mai ın varsta persoane care mananca pizzamushroom.

raspuns: (24)

Database Management Systems March 22, 2017 62 / 64

Exercitii

Exercitiul 8*

Gasiti toate pizzeriile ce servesc doar pizze mancate de persoane peste30 de ani.

raspuns: (Chicago Pizza)

Database Management Systems March 22, 2017 63 / 64

Exercitii

Exercitiul 8*

Gasiti toate pizzeriile ce servesc doar pizze mancate de persoane peste30 de ani.

raspuns: (Chicago Pizza)

Database Management Systems March 22, 2017 63 / 64

Exercitii

Exercitiul 9**

Gasiti toate pizzeriile care servesc toate pizzele mancate de persoanepeste 30 de ani (deci ele pot servi si altfel de clienti, dar nuobligatoriu).

raspuns: (Chicago Pizza, New York Pizza, Pizza Hut)

Database Management Systems March 22, 2017 64 / 64

Exercitii

Exercitiul 9**

Gasiti toate pizzeriile care servesc toate pizzele mancate de persoanepeste 30 de ani (deci ele pot servi si altfel de clienti, dar nuobligatoriu).

raspuns: (Chicago Pizza, New York Pizza, Pizza Hut)

Database Management Systems March 22, 2017 64 / 64