Documente Academic
Documente Profesional
Documente Cultură
I. OBIECTIVE
1. Modelul relațional
2. Algebra relațională
3. Operaţii de creare şi manipulare a bazei de date și a tabelelor acesteia
4. Operații asupra datelor (INSERT/UPDATE/DELETE)
Fiecare sistem de gestiune a bazelor de date administrează datele conform unui anumit model
de date. Modelul ierarhic, și modelul rețea sunt modele apărute primele ,azi ele nu mai au utilizare, iar
modelul relațional, orientat-obiect, modelul semistructurat XML sau cele din categoria modelelor
noSQL cum ar fi cheie-valoare,bazat pe documente sau pe grafuri, au implementări în sistemele de
gestiune actuale ,sisteme numite din acest considerent sisteme multimodel (https://db-
engines.com/en/ranking).
Modelul relațional este modelul cel mai larg răspândit, în special în aplicațiile economice
comerciale. Alături de datele propriu-zise (colecţiile de informaţii stocate de utilizator în baza de date)
există dicţionarul de date, care conţine metadate ce reprezintă : structura bazei de date, definiţiile
tipurilor de date ,restricţiile de integritate (chei primare/chei străine) o serie de obiecte specific cum ar
fi vederile/procedurile stocate/triggerele, indecşii, precum şi fişierele anexe care conţin contextul curent
de lucru (parametrii de configurare) și catalogul bazei de date ( dicționarul datelor) toate acestea
formează baza de date și proprietățile ei.
Interogarea (engl.Query) este operaţia prin care se regăsesc datele( engl. Data retrieval)
dorite dintr-o bază de date, selectate conform unor criterii. Deoarece această operaţie este cea mai
importantă operaţie, limbajele de manipulare a datelor sunt denumite şi limbaje de interogare ,iar SQL
este un astfel de limbaj. Limbajele de programare pot fi procedurale sau ne-procedurale, astfel în
limbajele procedurale, utilizatorul indică sistemului succesiunea de operaţii pentru a determina
rezultatul dorit, iar în limbajele declarative, utilizatorul descrie rezultatul dorit, fără a indica procedura
prin care acesta este obţinut. Cele mai multe sisteme relaţionale de baze de date folosesc un limbaj de
interogare în care sunt prezente elemente ale ambelor abordări (SQL, QBE, Datalog.). Limbajul SQL
este declarativ cu extensii procedurale.
Pentru formularea conceptuală a regăsirii datelor relaţionale s-au dezvoltat două limbaje
abstracte de interogare: algebra relațională şi calculul relațional. Acestea sunt limbaje matematice,
formale, ambele asociate cu modelul relaţional de date și cu un anumit grad de echivalență.
2.1.MODELUL RELAȚIONAL
O bază de date relaţională reprezintă o structură prin care se reprezintă datele şi legăturile
dintre ele. În cadrul bazei de date relaţionale, datele sunt organizate sub forma unor tablouri
bidimensionale (tabele) de date, numite relaţii. Asocierile dintre relaţii se reprezintă prin atributele
de legătură respectând principii specifice modelului relațional ( de ex. integritatea referențială).
1
Prezentarea structurii relaţionale a datelor impune definirea noţiunilor de:
domeniu;relaţie;atribut;schemă a unei relaţii.
Conceptele utilizate pentru a descrie elementele de bază ale organizării datelor , din cele trei
perspective posibile sunt prezentate în următorul tabel, astfel termenii unei linii se consideră
sinonimi:
Domeniul reprezintă o mulţime de valori, notată prin litere mari D1,D2 etc., caracterizată
printr-un nume. Modalităţile de definire a unui domeniu sunt:
explicit: prin enumerarea tuturor valorilor aparţinând domeniului;
implicit: prin precizarea proprietăţilor pe care le au valorile din cadrul domeniului.
Printr-un tuplu se înţelege o succesiune de valori de diferite tipuri. Un tuplu se notează enumerând
valorile sale <V1,V2,V3,...,Vn>, unde V1 este o valoare din domeniul D1, V2∈D2 etc.
Relaţia R este un subansamblu al produsului cartezian dintre mai multe domenii D1, D2, ...,
Dn, reprezentată sub forma unei tabele de date (tabelul bidimensional) şi deci, o mulţime de tupluri.
Atributul reprezintă coloana unei tabele de date, caracterizată printr-un nume și tip de date.
Atributele sunt utile atunci când într-o relaţie un domeniu apare de mai multe ori, astfel prin
numele dat fiecărei coloane (atribut), se diferenţiază coloanele care conţin valori ale aceluiaşi
domeniu, eliminând dependenţa faţă de ordinea acestora.
Schema unei relaţii este numele relaţiei urmată de lista de atribute, pentru fiecare atribut
precizându-se domeniul asociat.
Astfel, pentru o relaţie R cu atributele A1, A2, ... , An şi domeniile D1, D2, ... ,Dm,
cu m ≤ n, schema relaţiei R poate fi prezentată astfel:
23:int Sir:varchar
2
Caracteristicile modelului relaţional sunt:
nu există tupluri identice;
ordinea liniilor şi a coloanelor este arbitrară;
articolele unui domeniu sunt omogene (de același tip);
fiecare coloană defineşte un domeniu distinct şi nu se poate repeta în cadrul aceleiaşi
relaţii.
2.2.ALGEBRA RELAȚIONALĂ
3
I.OPERAȚII PE MULȚIMI APLICATE RELAȚIILOR
REUNIUNEA
Fie R, S relaţii. Reuniunea este t = R ∪ S, unde t = {tupluri ti, a. î. ti ∈ R, ∀ti ∈ R sau ti ∈ S, ∀ti ∈ S}.
Reuniunea a două relații R şi S este mulțimea tuplurilor aparținând fie lui R, fie lui S, fie
ambelor relații.
Condiţii: R, S au mulţimi identice de atribute, cu aceleaşi domenii de valori.
Notații:
RS
UNION(R, S)
OR(R, S)
APPEND(R, S).
INTERSECŢIA
Intersecția conține mulțimea tuplelor t = R ∩ S, unde t = { tupluri ti, a. î. ti ∈ R ∧ ti ∈ S}.
Intersecția a două relații R şi S este mulțimea tuplurilor care aparțin şi lui R şi lui S. Operatorul
INTERSECT este un operator binar, comutativ, derivat:
R S= R – (R – S)
R S = S – (S – R).
Notații:
INTERSECT(R, S)
RS
AND(R, S).
DIFERENŢA
Diferența a două relații R şi S este mulțmea tuplurilor care aparțin lui R, dar nu aparțin lui S.
Diferența este o operație binară necomutativă care permite obținerea tuplurilor ce apar numai într-o
relație.
Observăm că R – S ≠ S – R.
Notaţii:
R–S
DIFFERENCE(R, S)
REMOVE(R, S)
MINUS(R, S).
Observație.În anumite dialecte SQL există operator special (INTERSECT), care realizează această
operație. Operatorii INTERSECT ș i DIFFERENCE pot fi simulați în SQL (în cadrul comenzii
SELECT) cu ajutorul opțiunilor EXISTS, NOT EXISTS, IN, != ANY.
ÎMPĂRȚIREA
Diviziunea este o operaţie binară care defineşte o relaţie ce conţine valorile atributelor dintr-o
relaţie care apar în toate valorile atributelor din cealaltă relație.
Sunt utilizate diferite notaţii:
DIVISION(R, S)
R S.
4
Diviziunea conţine acele tupluri de dimensiune n – m la care, adăugând orice tuplu din S, se obţine
un tuplu din R.
Operatorul diviziune poate fi exprimat formal astfel:
R(n) S(m) = {t(n-m) s S, (t, s) R} unde n > m şi S .
Operatorul DIVISION este legat de cuantificatorul universal () care nu există în SQL. Cuantificatorul
universal poate fi însă simulat cu ajutorul cuantificatorului existențial () utilizând relația:
x P(x) ¬ x ¬ P(x).
Prin urmare, operatorul DIVISION poate fi exprimat în SQL prin succesiunea a doi operatori NOT
EXISTS
PRODUSUL CARTEZIAN
Fie relaţiile R şi S de arităţi m și n. Fie în R şi S tuplurile (ri1, ri2, ..., riK1), respectiv (si1, si2, ..., sik2).
Formal, produsul cartezian t = R × S al relaţiilor R şi S se defineşte prin:
Observaţie: numărul de tupluri ale produsului cartezian este produsul numerelor de tupluri ale
relaţiilor R şi S (mxn), rezultă astfel consecinţe privind timpul de execuţie şi memoria ocupată pentru
relații de dimensiuni mari.
Notații:
RS
PRODUCT(R, S)
PROIECŢIA
Fie relaţia R cu atributele A1, A2, ..., An. Fie, de asemene atributele A1, A2, ..., Ak, a. î.{ A1, A2, ..., Ak }
⊂ { A1, A2, ..., An }.
Atunci, proiecţia relaţiei R pe atributele A1, A2, ..., Ak (sau pe coloanele acestor atribute), notată cu:
∏ A1, A2, ..., Ak (r), este relaţia obţinută din R prin extragerea coloanelor atributelor A1, A2, ..., Ak.
∏i1,i2, ..., ik = { tupluri ti, a. î. ti = (a1, a2, ..., ak), iar în r ∃ tuplul (b1, b2, ..., bn), aj = bj pentru j = 1... k }
Mai sus aj, respectiv bj, sunt valori ale atributelor corespunzătoare din mulţimile { A1, A2, ..., Ak } şi,
evident, { A1, A2, ..., An }. Simbolurile i1, i2, etc. reprezintă coloane din relația R.
Proiecția este o operație unară care elimină anumite atribute ale unei relații producând o submulțime
„pe verticală“ a acesteia. Suprimarea unor atribute poate avea ca efect apariția unor tupluri
duplicate, care trebuie eliminate.
Prin proiecţie se construiește dintr-o relație R, o nouă relație:
ştergând din R atributele care nu sunt menţionate în parametrii proiecţiei;
eliminând dublurile care apar după ştergere.
Notații:
ΠA1, ..., Am (R)
5
PROJECT (R, A1, ..., Am) R[A1, ..., Am]
unde A1, A2, ..., Am sunt parametrii proiecţiei relativ la relaţia R.
SELECŢIA
Prin definiţie, operaţia de selecţie aplicată unei relaţii R, notată cu σF(R), constă în extragerea din R a
acelor tupluri care îndeplinesc clauza (formula sau expresia logică) F. Selecția este o operaţie unară
care produce o submulțime pe „orizontală“ a unei relații R. Schema relaţiei obţinute este
aceeaşi cu schema relaţiei R, atributele fiind aranjate – prin convenţie – în aceeaşi ordine. Operanzii
conţinuţi în clauza F sunt constante sau atribute din schema relaţiei R, iar operatorii sunt fie operatori
aritmetici uzuali (de comparaţie), fie operatori logici.
Notaţii:
σcondiţie(R)
SELECT(R, condiţie)
JONCŢIUNEA „TETA”
Joncţiunea „teta” este o operaţie compusă, care implică efectuarea unui produs cartezian şi a unei
selecţii. Fie relaţiile R şi S, precum şi o clauză F care conţine ca operanzi constante şi atribute din
schemele relaţiilor, iar ca operatori – operatorii aritmetici uzuali şi operatorii logici.
JONCTIUNEA NATURALA
Fie relaţiile r şi s ale căror scheme conţin un număr de atribute comune. Operatorul de compunere
naturală (NATURAL JOIN) combină tupluri din două relații R şi S, cu condiția ca atributele
comune să aibă valori identice. Joncțiunea naturală poate fi descrisă astfel :
1. se calculează produsul cartezian R S;
2. pentru fiecare atribut comun A care definește o coloană în R şi o coloană în S, se
selectează din R S tuplurile ale căror valori coincid în coloanele R.A şi S.A (atributul
R.A reprezintă numele coloanei din R S corespunzătoare coloanei A din R); asupra
produsului cartezian obţinut, este efectuată o operaţiune de selecţie, prin extragerea
tuplurilor care conţin acelaşi valori ale atributelor comune din schemele relaţiilor
incidente R şi S;
3. pentru fiecare astfel de atribut A se proiectează coloana S.A, iar coloana R.A se va numi
A. Sunt eliminate coloanele redundante rezultate.
6
JONCŢIUNEA EXTERNĂ
Operația de compunere externă combină tupluri din două relații pentru care sunt satisfăcute
condițiile de corelare. În cazul aplicării operatorului JOIN se pot pierde tupluri, atunci când există
un tuplu în una din relații pentru care nu există nici un tuplu în cealaltă relație, astfel încât să fie
satisfăcută relaţia de corelare.
Operatorul elimină acest inconvenient prin atribuirea valorii null valorilor atributelor care există
într-un tuplu din una dintre relațiile de intrare, dar care nu există și în cea de-a doua relație.
Practic, se realizează compunerea a două relaţii R şi S la care se adaugă tupluri din R şi S, care
nu sunt conţinute în compunere, completate cu valori null pentru atributele care lipsesc.
Compunerea externă poate fi: LEFT, RIGHT, FULL. De exemplu, OUTER JOIN LEFT reprezintă
compunerea în care tuplurile din R, care nu au valori similare în coloanele comune cu relația S,
sunt de asemenea incluse în relaţia rezultat.
Detalii suplimentare pot fi consultate la http://www.bazededate.org/AlgebraRelationala.pdf și în
lucrarea în care se prezintă operatorii SQL (Lucrarea 5)
Fie schema de relaţie R, cu atributele { A1, A2, ..., An }. Pentru a schimba numele schemei din R în Q,
dar cu aceleaşi atribute, folosim operatorul ρ, cu sintaxa (în algebra relatională): ρS(A1,A2,...,An ) (R).
Rezultatul este exact aceeaşi relaţie, dar cu numele Q.
La operaţiile descrise anterior se pot adăuga operaţii de calcul pe relaţii. Aceste operaţii sunt justificate
de numeroasele interogări (cereri) care necesită operaţii de calcul. Operaţiile de calcul sunt
implementate în toate limbajele de interogare. Aceşti operatori de calcul formează deci o extensie a
operatorilor de bază şi nu pot fi exprimaţi cu ajutorul acestora.
COUNT - este o operaţie care permite numărarea tuplurilor dintr-o relaţie (liniilor dintr-o tabelă) care
au aceeaşi valoare pe atributul considerat (sau aceleaşi valori pe atributele considerate). Relaţia
rezultantă va conţine numai atributul (atributele) de regrupare Xi , iar tuplurile vor fi formate din
valorile distincte şi numărul de apariţii.
SUM – este o operaţie care permite efectuarea sumei valorilor atributului Y pentru fiecare din valorile
diferite ale atributelor de regrupare X1,...,Xn . Atributul Y trebuie să fie numeric.
AVG – este o operaţie care permite efectuarea mediei aritmetice a valorilor atributului Y pentru fiecare
din valorile diferite ale atributelor de regrupare X1,...,Xn . Atributul Y trebuie să fie numeric.
MAX şi MIN - este o operaţie care permite determinarea valorii maxime / minime a atributului Y
pentru fiecare din valorile diferite ale atributelor de regrupare X1,...,Xn . Atributul Y trebuie să fie
numeric.MAX (R, Y) - rezultatul este un număr (poate fi interpretat şi ca o relaţie cu un singur atribut
şi un singur tuplu, care are ca valoare maximul valorilor atributului Y din toate liniile tabelei).
Observaţie. Pentru operaţia MIN sintaxa este similară.
MySQL-SGBD, oferă următoarele categorii de instrucțiuni organizate în cele trei sublimbaje SQL:
• limbajul de definire a datelor - Data Definition Language (DDL) –,pentru a crea /modifica şi
şterge baza de date și tabelele acesteia, etc
• limbajul de manipulare a datelor- Data Manipulation Language (DML) – pentru a interoga
(selecta) , insera, şterge şi actualiza datele din tabele.
7
• limbajul de securizare a datelor – Data Security Language (DSL) – pentru a securiza accesul
la datele stocate în baza de date.
În MySQL, informațiile sunt structurate sub formă de baze de date , fiecare dintre acestea putând conține
mai multe tabele corelate logic asociate unui anumit model de busines ce necesită modelul aferent de
date.
unde database_name este numele bazei de date ce se doreşte a fi creată. Operația este realizată cu succes
dacă utilizatorul deține dreptul CREATE asupra bazei de date și dacă baza de date nu există anterior
(altfel, trebuie specificată clauza IF NOT EXISTS). Inițial, baza de date este vidă (nu are conținut de
date)
Pentru a considera o bază de date implicită ( utilizată curent) la care se vor referi toate operațiile care
îi urmează se foloseşte instrucțiunea:
USE database_name
Pentru a afla ce baze de date există într-un anumit moment pe server, se foloseşte instrucţiunea
SHOW {DATABASES | SCHEMAS} LIKE ' pattern ' | [WHERE expr]
Această comandă şterge baza de date împreună cu toate tabelele pe care le conține, cu excepția celor
marcate ca fiind temporare care sunt eliminate odată cu sesiunea curentă. Operația este realizată cu
succes dacă utilizatorul deține dreptul DROP asupra bazei de date și dacă baza de date există în prealabil
(altfel, trebuie specificată clauza de verificare IF EXISTS).
CREAREA UNEI TABELE :Pentru a crea o tabelă în baza de date se va utiliza comanda:
8
[ON DELETE optiuni_referinta]
[ON UPDATE optiuni_referinta]
[optiuni_referinta]:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
PRIMARY KEY = constrângere de integritate a relaţiei care impune valori unice şi nenule pentru
coloanele care fac parte din cheia primară (cheia primară poate fi compusă). Poate să existe o singură
cheie primară pentru o tabelă. La creearea unei chei primare se va crea în mod automat și un index
pentru a scurta timpul de răspuns în cazul unei interogări.Deasemenea se poate specifica proprietatea
de AUTO-INCREMENT caz în care valorile respective vor fi gestionate de SGBD (auto incrementate)
Detalii suplimentare : http://www.mysqltutorial.org/mysql-primary-key/
UNIQUE = constrângere care impune valori unice pentru una sau mai multe coloane, fiind un
mecanism de definire al cheilor candidate din tabelă.
Detalii suplimentare: http://www.mysqltutorial.org/mysql-unique/
9
ȘTERGEREA UNEI TABELE.Pentru a şterge o tabelă din baza de date se va folosi comanda:
În urma executării cu succes sunt şterse atât structura cât şi conţinutul tabelei. Clauza
TEMPORARY șterge tabelele temporare, fără a avea nici un impact asupra tranzacțiilor în desfășurare
la momentul respectiv și fără a mai verifica drepturile de acces. Pentru a preveni erori în cazul în care
tabela nu există se foloseşte opţiunea IF EXISTS.
MODIFICAREA DEFINIȚIEI UNEI TABELE :Pentru a modifica definiţia unei tabele se va folosi
comanda:
Specificarea pentru operația ALTER este deosebit de complexă , ea permite orice tip de
modificare necesară asupra tabelelor bazei de date. Astfel ,prin intermediul acestei instrucţiuni se pot
adăuga sau şterge coloane, se poate schimba tipul de date sau dimensiunea unei coloane, se pot
adăuga sau şterge constrângeri de tip cheie primară sau străină respectiv index, se poate redenumi o
coloană sau chiar tabela însăşi.
alter_specification:
table_options
| ADD [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| ADD [COLUMN] (col_name column_definition,...)
| ADD {INDEX|KEY} [index_name]
[index_type] (key_part,...) [index_option] ...
| ADD {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name]
(key_part,...) [index_option] ...
| ADD [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (key_part,...)
[index_option] ...
| ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]
[index_name] [index_type] (key_part,...)
[index_option] ...
| ADD [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (col_name,...)
reference_definition
| ADD check_constraint_definition
| DROP CHECK symbol
| ALTER CHECK symbol [NOT] ENFORCED
| ALGORITHM [=] {DEFAULT|INSTANT|INPLACE|COPY}
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| ALTER INDEX index_name {VISIBLE | INVISIBLE}
| CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST|AFTER col_name]
| [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| {DISABLE|ENABLE} KEYS
| {DISCARD|IMPORT} TABLESPACE
| DROP [COLUMN] col_name
| DROP {INDEX|KEY} index_name
| DROP PRIMARY KEY
10
| DROP FOREIGN KEY fk_symbol
| FORCE
| LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| ORDER BY col_name [, col_name] ...
| RENAME COLUMN old_col_name TO new_col_name
| RENAME {INDEX|KEY} old_index_name TO new_index_name
| RENAME [TO|AS] new_tbl_name
| {WITHOUT|WITH} VALIDATION
De regulă, instrucțiunea ALTER TABLE crează o copie temporară a tabelei, operează modificările
asupra acesteia și atunci când acestea sunt pregătite, șterge tabela originală și redenumește tabela în
care au fost realizate actualizările.
Vizualizarea listei ce conține tabelele existente în baza de date implicită poate fi realizată prin
intermediul comenzii SHOW TABLES.
Instrucțiunea DESCRIBE table_name are un efect similar cu SHOW COLUMNS și oferă informații cu
privire la structura tabelei specificate.
Trebuie să existe o corespondență unu la unu între denumirile coloanelor și valorile specificate.
În cazul în care nu sunt indicate explicit denumirile coloanelor pentru care sunt introduse datele, clauza
VALUES / VALUE trebuie să specifice valori pentru toate atributele tabelei (în ordinea specificată la
definirea tabelei). Prin cuvântul cheie DEFAULT se precizează faptul că valoarea coloanei este cea
implicită.
Instrucţiunea UPDATE poate fi folosită pentru actualizarea informaţiilor din mai multe tabele
simultan (situație în care clauzele ORDER BY şi LIMIT nu vor mai putea fi folosite; între tabelele în
cauză trebuie să existe o relaţie de tip cheie primară-cheie străină, ea fiind condiţia de identificare a
înregistrărilor din clauza WHERE):
11
Când se face actualizarea datelor într-o tabelă se verifică automat și constrângerile de integritate definite
pe tabela respectivă ( FK, PK) .Astfel , situațiile în care pot apărea erori sunt:
noile valori sunt duplicare de cheie primară sau unică.
Actualizarea valorii cu o valoare nulă când coloana este NOT NULL.
valorile noi nu respectă constrângerea FOREIGN KEY.
Valorile vechi erau referite de alte tabele printr-o constrângere FOREIGN KEY.
Detalii suplimentare:
http://www.mysqltutorial.org/mysql-insert-statement.aspx
http://www.mysqltutorial.org/mysql-update-data.aspx
Pentru a ȘTERGE înregistrări din din una sau mai multe tabele se va folosi comanda:
Detalii suplimentare:
http://www.mysqltutorial.org/mysql-delete-statement.aspx
http://www.mysqltutorial.org/mysql-on-delete-cascade/
http://www.mysqltutorial.org/mysql-truncate-table/
3.1.Se va parcurge tutorialul Workbench pentru crearea și manipularea bazei de date și tabelelor de la
adresa
https://ftp.utcluj.ro/pub/users/civan/IBD/2_LABORATOR/02_SQL_ModelulRelational/MySQL_WorkBEnch_tutorial.pdf
3.2.Pentru ilustrarea utilizării instrucțiunilor prezentate, se va utiliza schema bazei de date PERSONAL.
12
Tabela angajat conţine informaţii despre angajaţi (nume, prenume, salariu, vechime) şi despre
departamentele în care aceştia lucrează;
Tabela department conţine informaţii precum numele şi id-ul departamentului in care lucrează
un angajat. Fiecare deprtament are un angajat cu rol de manager.
Se cere: să se creeze baza de date, tabelele, să se aleagă tipurile de date necesare şi să se populeze cu
date tabelele,inserând minim 10 tuple în fiecare tabel.
Pentru etapele necesare creeării în manieră grafică ,se va urmări tutorialul aflat la adresa
https://ftp.utcluj.ro/pub/users/civan/IBD/1_LABORATOR/02_Intro/MySQL_WB_tutorial
Să se populeze cu date prin execuție de cod SQL , respectiv ,direct ( vezi manual Workbench -
https://downloads.mysql.com/docs/workbench-en.pdf ). Un exemplu de conținut pentru cele
două tabele.
INSERT INTO departament (nume, manager_id) VALUES
('R&D', 1), ('QA', 2), ('IT', 3), ('Backend', 4), ('HR', 5);
4.1.Identificați și explicați operatorii algebrici preluați în algebra relațională din teoria mulțimilor.
4.2.Ce semnificație are operatorul JOIN ? Ce tipuri au fost propuse și ce semnificașie au acestea,
definind modul de obținere a relației rezultate? Care este cardinalitatea relației rezultat funcție de
tipurile respective de operatori ?
13
4.3.Modificați tipul d edate INT(11) la INT(15) pentru toate acele atribute care au domeniul de date
respectiv.
4.4. Transformați tipul char în varchar pentru o mai buna utilizare a spațiului de stocare.
4.5. Actualizați salariul angajaților cu 10% (intr. UPDATE)
4.5.Să se creeze o nouă bază de date care să permită stocarea informaţiei despre angajaţii unei companii
de software;
Angajatii sunt identificati prin cod numeric personal, calificare, salariu, adresă şi telefon.
Proiectele la care acestia lucrează sunt caracterizate prin număr de proiect, numele
proiectului şi bugetul alocat
Angajatii sunt implicați în proiecte, fiecare proiect fiind gestionat de un angajat cu rol de
manager de proiect.
14