Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres,...

Post on 21-Aug-2021

8 views 0 download

Transcript of Tehnici Avansate de Programare - Baze de dateBazededateNo-SQL(cont.) • Suportăcres,...

Tehnici Avansate de Programare

Baze de date

Petru Rebeja, Marius Apetrii

22 Aprilie 2021

Facultatea de MatematicăUniversitatea Alexandru Ioan Cuza, Ias, i

Introducere

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

Agenda

• Baze de date

• Istoricul schemei bazei de date relat, ionale

• Proiectarea bazelor de date

2

Baze de date

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

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

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

Tipuri de baze de date

Există două tipuri de baze de date:

• Relat, ionale (SQL) s, i

• Non-relat, ionale (No-SQL)

6

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

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

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

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

Evolut, ia bazei de date

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

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

Proiectarea bazelor de date

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

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

Exemplu: 1*N

15

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

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

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

Forma Normală 1

FN1

O relaţie este în Forma Normală 1 dacă în fiecare coloană a unuitabel avem doar valori atomice.

20

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

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

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

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

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

Încheiere

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

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

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

Vă mult,umesc

Mult,umesc pentru atent, ie!

29