Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
laboratoare:laborator00b [2015/10/09 07:21] Andrei Roșu-Cojocaru [Activitate de Laborator] |
laboratoare:laborator00b [2015/10/18 19:55] (current) Andrei Roșu-Cojocaru [Activitate de Laborator] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Laborator 00 (partea a II-a) ====== | ====== Laborator 00 (partea a II-a) ====== | ||
| - | ====== Sistemului de Gestiune pentru Baze de Date. MySQL ====== | + | ====== Sisteme de Gestiune pentru Baze de Date. MySQL ====== |
| ===== Obiective ==== | ===== Obiective ==== | ||
| Line 1968: | Line 1968: | ||
| Un client este identificat prin cod numeric personal, nume, prenume, adresa, telefon, email. Presupunând că librăria dispune şi de o platformă on-line pentru achiziţii, pentru fiecare client se vor reţine tipul (administrator / client) și credențialele sub forma unui nume de utilizator și a unei parole. Cu excepţia numărului de telefon, nici un câmp nu poate fi vid. Pentru email trebuie să se respecte formatul ''username@domain.country''. | Un client este identificat prin cod numeric personal, nume, prenume, adresa, telefon, email. Presupunând că librăria dispune şi de o platformă on-line pentru achiziţii, pentru fiecare client se vor reţine tipul (administrator / client) și credențialele sub forma unui nume de utilizator și a unei parole. Cu excepţia numărului de telefon, nici un câmp nu poate fi vid. Pentru email trebuie să se respecte formatul ''username@domain.country''. | ||
| + | |||
| + | O schemă conceptuală a bazei de date descrisă mai sus din punct de vedere funcțional poate fi următoarea: | ||
| + | |||
| + | {{ :laboratoare:laborator00b:aipi2015-lab00b-conceptualscheme.png?nolink&800 }} | ||
| **1.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://www.github.com/aipi2015/Laborator00|]]. În urma acestei operații, directorul ''Laborator00'' va trebui să conțină subdirectoarele ''samples'' și ''labtasks'', fișierele ''README.md'' și ''LICENSE''. <code> | **1.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://www.github.com/aipi2015/Laborator00|]]. În urma acestei operații, directorul ''Laborator00'' va trebui să conțină subdirectoarele ''samples'' și ''labtasks'', fișierele ''README.md'' și ''LICENSE''. <code> | ||
| Line 1975: | Line 1979: | ||
| **2.** Să se ruleze, în ordine, script-urile: | **2.** Să se ruleze, în ordine, script-urile: | ||
| * ''aipi2015-lab00b-DDL.sql'' care conține instrucțiunile necesare pentru definirea bazei de date ''bookstore''; | * ''aipi2015-lab00b-DDL.sql'' care conține instrucțiunile necesare pentru definirea bazei de date ''bookstore''; | ||
| - | * ''aipi2015-lab00b-DML.sql'' care conține instrucțiunile necesare pentru popularea tabelelor din baza de date. | + | * ''aipi2015-lab00b-DML.sql'' care conține instrucțiunile necesare pentru popularea tabelelor din baza de date ''bookstore''. |
| Se poate folosi utilitarul MySQL Workbench sau fișierele se pot încărca cu ajutorul unui client MySQL, fie prin redirectarea intrării, fie prin folosirea comenzilor ''source'' sau ''\.''. | Se poate folosi utilitarul MySQL Workbench sau fișierele se pot încărca cu ajutorul unui client MySQL, fie prin redirectarea intrării, fie prin folosirea comenzilor ''source'' sau ''\.''. | ||
| <note important>Operația de populare a bazei de date poate dura o perioadă de timp semnificativă datorită numărului mare de înregistrări.</note> | <note important>Operația de populare a bazei de date poate dura o perioadă de timp semnificativă datorită numărului mare de înregistrări.</note> | ||
| - | **3.** Să se afişeze conţinutul tabelei care conține cărțile comercializate în librărie. Pentru fiecare carte se va afişa identificatorul, titlul şi autorii, denumirea colecției, denumirea editurii, numărul de ediție și anul tipăririi precum și denumirea țării. Întrucât o carte poate avea mai mulţi autori, se va folosi funcţia de grup ''GROUP_CONCAT'', a cărei sintaxă este: <code> GROUP_CONCAT([DISTINCT] expr [,expr ...] | + | **3.** Să se afişeze conţinutul tabelei care reține cărțile comercializate în librărie. Pentru fiecare carte se va afişa identificatorul, titlul şi autorii, denumirea colecției, denumirea editurii, numărul de ediție și anul tipăririi precum și denumirea țării. Întrucât o carte poate avea mai mulţi autori, se va folosi funcţia de grup ''GROUP_CONCAT'', a cărei sintaxă este: <code> GROUP_CONCAT([DISTINCT] expr [,expr ...] |
| [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] | [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] | ||
| [SEPARATOR str_val]) | [SEPARATOR str_val]) | ||
| Line 1997: | Line 2001: | ||
| **9.** Folosind doar rutina stocată și având acces doar la tabela de utilizatori, să se determine utilizatorul pentru care suma facturilor este cea mai mare. | **9.** Folosind doar rutina stocată și având acces doar la tabela de utilizatori, să se determine utilizatorul pentru care suma facturilor este cea mai mare. | ||
| - | //Indicație//. Este necesar să se folosească un cursor. | + | <spoiler|Indicații de Rezolvare> |
| + | Este necesar să se folosească un cursor. | ||
| + | </spoiler> | ||
| **10.** Să se implementeze un trigger la actualizarea tabelei ce conține diferitele formate în care sunt dispuse cărțile, astfel încât atunci când este modificat prețul, dacă acesta depășește media prețurilor celorlalte cărți având același format, să se modifice prețul la valoarea mediei, afișându-se și un mesaj corespunzător. | **10.** Să se implementeze un trigger la actualizarea tabelei ce conține diferitele formate în care sunt dispuse cărțile, astfel încât atunci când este modificat prețul, dacă acesta depășește media prețurilor celorlalte cărți având același format, să se modifice prețul la valoarea mediei, afișându-se și un mesaj corespunzător. | ||
| Line 2013: | Line 2019: | ||
| ===== Soluții ===== | ===== Soluții ===== | ||
| - | TODO | + | [[https://github.com/aipi2015/Laborator00/blob/master/solutions/aipi2015-lab00b-solutions.sql|Rezolvări]] |
