Database Management Systems - hash.atspace.euhash.atspace.eu/dbms/cap1.pdf · Introducere. Modelul...
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