tehnici avansate de programare - baze de datebazededateno-sql(cont.) • suportăcres,...
TRANSCRIPT
![Page 1: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/1.jpg)
Tehnici Avansate de Programare
Baze de date
Petru Rebeja, Marius Apetrii
22 Aprilie 2021
Facultatea de MatematicăUniversitatea Alexandru Ioan Cuza, Ias, i
![Page 2: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/2.jpg)
Introducere
![Page 3: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/3.jpg)
Recapitulare
• Test-Driven Development — un stil de dezvoltare software încare mai întâi se scriu testele pentru un anumit aspect iar maiapoi implementarea propriu-zisă.
1
![Page 4: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/4.jpg)
Agenda
• Baze de date
• Istoricul schemei bazei de date relat, ionale
• Proiectarea bazelor de date
2
![Page 5: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/5.jpg)
Baze de date
![Page 6: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/6.jpg)
Not, iuni de bază
Bază de date
O bază de date este o colect, ie organizată de date care suntstocate s, i accesate de pe un calculator1.
1https://en.wikipedia.org/wiki/Database
3
![Page 7: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/7.jpg)
Not, iuni de bază
Sistem de Gestiune al Bazelor de Date
Sistemul de Gestiune a Bazelor de Date este un sistem softwarecare le permite utilizatorilor să definească, să creeze, să întret, ină s, isă controleze accesul la baza de date2.
2Connolly, Thomas M.; Begg, Carolyn E. (2014). Database Systems – APractical Approach to Design Implementation and Management (6th ed.).Pearson. p. 64. ISBN 978-1292061184.
4
![Page 8: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/8.jpg)
Not, iuni de bază
Schema bazei de date
Schema bazei de date este structura logică a bazei de date descrisăîntr-un limbaj formal suportat de SGBD3 sau o reprezentare vizualăa acesteia4
3http://en.wikipedia.org/wiki/Database_schema4https://www.techopedia.com/definition/30601/database-schema
5
![Page 9: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/9.jpg)
Tipuri de baze de date
Există două tipuri de baze de date:
• Relat, ionale (SQL) s, i
• Non-relat, ionale (No-SQL)
6
![Page 10: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/10.jpg)
Baze de date relat, ionale
• Sunt bazate pe tabele s, i modelează relat, ia dintre ele,
• Au o schemă predefinită,
• Suportă interogări complexe,
7
![Page 11: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/11.jpg)
Baze de date relat, ionale (cont.)
• Suportă cres,terea pe verticală (vertical scaling) prinadăugarea de memorie RAM, spat, iu pe disk etc.,
• Pun accentul pe proprietăt, ile ACID:• Atomicity — modificări atomice,• Consistency — impune consistent,a datelor• Isolation — modificările se fac în izolare unele fat,ă de altele• Durability — modificările sunt salvate pe disk.
8
![Page 12: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/12.jpg)
Baze de date No-SQL
• Sunt bazate pe documente, grafuri, perechi cheie-valoare etc.
• Nu au o schemă predefinită,
• Au suport limitat pentru interogări complexe,
9
![Page 13: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/13.jpg)
Baze de date No-SQL (cont.)
• Suportă cres,terea pe orizontală (horizontal scaling) prinadăugarea de noduri noi,
• Aplică teorema CAP5 — în orice moment oferă douăproprietăt, i din următoarele:
• Consistency — orice scriere primes,te cele mai recente datesau o eroare,
• Availability — fiecare cerere primes,te un răspuns dardatele pot să nu fie cele mai recente,
• Partition tolerance — systemul continuă să funct, ionezeîn ciuda pierderii unor mesaje.
5https://en.wikipedia.org/wiki/CAP_theorem
10
![Page 14: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/14.jpg)
Evolut, ia bazei de date
![Page 15: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/15.jpg)
Evolut, ia aplicat, iei
• Baza de date evoluează (de obicei) împreună cu aplicat, ia,
• Modificările bazei de date fac parte din ciclul de dezvoltare.
11
![Page 16: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/16.jpg)
Bune practici
• Schema bazei de date trebuie păstrată în sistemul demanagement al istoricului6 pentru a asigura sincronizarea întremodificările aplicat, iei s, i a bazei de date,
• Aplicarea modificărilor trebuie sincronizată,
• Altfel întregul sistem software devine inutilizabil.
6https://www.troyhunt.com/10-commandments-of-good-source-control/
12
![Page 17: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/17.jpg)
Proiectarea bazelor de date
![Page 18: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/18.jpg)
Primary/Foreign Key
• O cheie primară (Primary Key) este o mulţime de coloane aleunui tabel a căror valori identifică în mod unic o înregistrare7.
• O cheie străină (Foreign Key) este o mulţime de coloane aleunui tabel care fac referinţă la o cheie primară8.
7http://www.differencebetween.net/technology/difference-between-primary-key-and-unique-key/8https://www.w3schools.com/sql/sql_foreignkey.asp
13
![Page 19: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/19.jpg)
Relaţie
Adăugarea unei chei străine crează o relaţie între cele douătabele unde:
• Tabelul copil este cel care conţine cheia străină,
• Tabelul părinte este cel care conţine cheia primarăreferenţiată de tabelul copil.
14
![Page 20: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/20.jpg)
Exemplu: 1*N
15
![Page 21: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/21.jpg)
Exemplu9: N*M
9https://smehrozalam.wordpress.com/2010/06/29/entity-framework-queries-involving-many-to-many-relationship-tables
16
![Page 22: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/22.jpg)
Normalizare
Normalizarea bazei de date
Procesul de structurare a unei baze de date relaţionale pentru areduce redundanţa datelor şi a îmbunătăţi integritatea acestora10.
10https://en.wikipedia.org/wiki/Database_normalization
17
![Page 23: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/23.jpg)
Objectivele normalizării
• Modelarea conceptelor din lumea reală şi a relaţiilor dintreacestea.
• Extensibilitate sporită: adăugarea obiectelor noi se face cuintervenţie minimă.
18
![Page 24: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/24.jpg)
Forme normale
• Normalizarea se face prin aducerea schemei la o formănormală.
• O formă normală este o proprietate a structurii bazei de date.
• Există mai multe forme normale (FN1—FN6 etc.).
• O bază de date este normalizată dacă respectă cel puţin FN3.
19
![Page 25: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/25.jpg)
Forma Normală 1
FN1
O relaţie este în Forma Normală 1 dacă în fiecare coloană a unuitabel avem doar valori atomice.
20
![Page 26: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/26.jpg)
Forma Normală 1
Normalizarea la FN1 se face prin:
1. Eliminarea grupurilor care se repetă.
2. Crearea unui table pentru fiecare colecţie de date cu coeziunemare.
3. Adăugarea unei chei primare.
21
![Page 27: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/27.jpg)
Forma Normală 2
FN2
O relaţie este în Forma Normală 2 dacă:
1. Este în Forma Normală 1 şi
2. Toate atributele unui tabel depind doar de cheia primară directsau indirect.
22
![Page 28: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/28.jpg)
Forma Normală 2
Tournament winners11
Tournament Year Winner Winner’s date of birthIndiana Invitational 1998 Al Fredrickson 21 July 1975Cleveland Open 1999 Bob Albertson 28 September 1968Des Moines Masters 1999 Al Fredrickson 21 July 1975Indiana Invitational 1999 Chip Masterson 14 March 1977
11https://en.wikipedia.org/wiki/Third_normal_form
23
![Page 29: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/29.jpg)
Forma Normală 3
FN3
O relaţie este în Forma Normală 3 dacă:
1. Este în Forma Normală 2 şi
2. Fiecare atribut depinde direct de cheia primară.
24
![Page 30: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/30.jpg)
Forma Normală 312
Tournament Year WinnerIndiana Invitational 1998 Al FredricksonCleveland Open 1999 Bob AlbertsonDes Moines Masters 1999 Al FredricksonIndiana Invitational 1999 Chip Masterson
Winner Date of birthChip Masterson 14 March 1977Al Fredrickson 21 July 1975Bob Albertson 28 September 1968
12https://en.wikipedia.org/wiki/Third_normal_form
25
![Page 31: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/31.jpg)
Încheiere
![Page 32: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/32.jpg)
Recapitulare — baze de date
• Baza de date este o colect, ie organizată de date care pot fimanipulate prin intermediul unui SGBD.
• SGBD = Sistem de Gestiune al Bazelor de Date; permitemanipulearea datelor s, i întret, inerea bazelor de date.
• Schema bazei de date este reprezentarea structurii bazei dedate s, i trebuie păstrată în sistemul de gestiune al istoriculuialături de codul-sursă al aplicat, iei.
• Folosit, i Database project din Visual Studio pentrumodificarea schemei bazei de date.
26
![Page 33: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/33.jpg)
Recapitulare — ACID
• Atomicity — modificări atomice,
• Consistency — impune consistent,a datelor
• Isolation — modificările se fac în izolare unele fat,ă de altele
• Durability — modificările sunt salvate pe disk.
27
![Page 34: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/34.jpg)
Recapitulare — proiectarea bazei de date
• Elemente esenţiale în proiectarea bazelor de date: cheieprimară, cheie străină şi relaţie.
• Normalizare — proiectarea/restructurarea bazei de datepentru a o aduce în (cel puţin) forma normală 3.
• O schemă este în forma normală 3 (FN3) dacă atributelefiecărui tabel sunt atomice s, i depind doar de cheia primară.
28
![Page 35: Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres, tereapeorizontală(horizontal scaling)prin adăugareadenodurinoi, • AplicăteoremaCAP5 —înoricemomentoferădouă](https://reader035.vdocuments.pub/reader035/viewer/2022071607/614482dab5d1170afb43ebdc/html5/thumbnails/35.jpg)
Vă mult,umesc
Mult,umesc pentru atent, ie!
29