<?
MySQL Fundamentals @ BIT Academy
php 14 Noiembrie 2018
16 Ianuarie 2019
9 ședințe x 3h 30m
Sâmbătă, de la
ora 09:00
<?php Lecții / Lecția 1
Lecția 1 - Noţiuni teoretice
✓ Dată, Informaţie, Bază de date,
✓ Sistem de gestiune a bazelor de date,
✓ Tabelă, Entitate, Atribut, Cheie,
✓ Constrângeri de integritate
✓ Elemente generale de algebră relaţională,
✓ Normalizarea bazelor de date,
✓ Definiţie,
✓ Prezentarea formelor normale
<?php Lecții / Lecția 2
Lecția 2 - Design-ul bazei de date
✓ Proiectarea unei baze de date;
✓ Relaţii între tabele;
✓ Tipuri de relaţii între tabele;
✓ Mediul de lucru (WAMP, HeidiSQL);
✓ Limbajul SQL - Introducere
<?php Lecții / Lecția 3
Lecția 3 - Limbajul de Descriere a Datelor
✓ Crearea şi ştergerea unei baze de date;
✓ Crearea şi ştergerea unei tabele;
✓ Modificarea structurii tabelelor
✓ Tipuri de date MySQL;
✓ Modificarea câmpurilor;
✓ Chei primare, chei externe
✓ Aplicații
<?php Lecții / Lecția 4
Lecția 4 - Limbajul de Manipulare a Datelor
✓ Introducerea înregistrărilor în tabele
(instrucţiunea INSERT)
✓ Modificarea înregistrărilor din tabele
(instrucţiunea UPDATE)
✓ Ştergerea înregistrărilor din tabele
(instrucţiunea DELETE)
✓ Extragerea informaţiilor din tabele
(instrucţiunea SELECT)
✓ Aplicații
<?php Lecții / Lecția 5
Lecția 5 - Operatori şi funcţii MySQL
✓ Operatori: aritmetici, logici, de comparare;
✓ Funcţii predefinite MySQL:
matematice, de compararare, pentru date
calendaristice, pentru şiruri de caractere
✓ Aplicații
<?php Lecții / Lecția 6
Lecția 6 - Join-uri
✓ Join-uri
✓ Tipuri de join-uri
✓ Reuniuni
✓ Aplicații
<?php Lecții / Lecția 7
Lecția 7 - Subinterogări
✓ Subinterogări
✓ Tipuri de subinterogări
✓ Aplicații
<?php Lecții / Lecția 8
Lecția 8 – Tabele virtuale. Tabele tmporare.
Indexare
✓ Tabele virtuale (vederi, view-uri)
✓ Tabele temporare
✓ Diferențe între tabele temporare și tabele
virtuale
✓ Index. Noțiune și tipuri de indecși
✓ Operații efectuate asupra indecșilor: creare,
vizualizare, ștergere
✓ Aplicații
<?php Lecții / Lecția 9
Lecția 9 - Tranzacții. Opțiuni avansate
✓ Tranzacții. Concept, proprietăți și utilizare
✓ Clauze posibile ale FOREIGN KEY
✓ Subinterogări utilizate în instrucțiunile
INSERT și CREATE TABLE
✓ Duplicarea structurii unei tabele
✓ Motoare de stocare
✓ CHARACTER SET și COLLATION
✓ Aplicații
✓ Recapitulare
<?php Lecții / Anexe
Anexă – Opțiuni avansate
✓ Tipuri de date MySQL
✓ Nume relative și nume absolute
✓ CASE SENSITIVE / INSENSITIVE
✓ Join-uri utilizate în instrucțiunile UPDATE și
DELETE
✓ Subinterogări utilizate în instrucțiunile
UPDATE și DELETE
✓ Indexul de unicitate și cheia primară
Lecția 1
Noțiuni teoretice
✓ Dată, Informaţie, Bază de date,
✓ Sistem de gestiune a bazelor de date,
✓ Tabelă, Entitate, Atribut, Cheie,
✓ Constrângeri de integritate
✓ Elemente generale de algebră relaţională,
✓ Normalizarea bazelor de date,
✓ Definiţie,
✓ Prezentarea formelor normale
<?php Noțiuni teoretice
Aplicații ale bazelor de date
Aplicaţii ale bazelor de date pe Web
Orice site care are un modul de creare cont şi login, orice
magazin online, site de ştiri, blog, etc. are o bază de date în
care este ţinută informaţia în mod structurat. Cea mai mare
parte a site-urilor de pe Internet care trec de nivelul de site
de prezentare folosesc baze de date.
Aplicaţii ale bazelor de date în alte domenii
O mare parte din aplicaţiile software existente folosesc baze
de date pentru stocarea şi extragerea informaţiilor. Aceste
baze de date se interoghează ulterior pentru obţinerea de
diverse statistici.
<?php Noțiuni teoretice
Date, informații
Date – material brut, fapte, simboluri, numere, cuvinte,
poze fără un înţeles de sine stătător, neintegrate într-un
context, fără relaţii cu alte date sau obiecte.
Informații – date organizate şi prezentate într-un mod
sistematic pentru a sublinia sensul acestor date. Pe scurt,
informaţiile sunt date prelucrate.
<?php Noțiuni teoretice
Bază de Date (BD)
O bază de date reprezintă o colecţie de date organizate ce
pot fi accesate simultan de mai mulţi utilizatori.
Prelucrarea datelor se referă la operaţiile de introducere,
ştergere, actualizare şi interogare a datelor.
O bază de date poate fi interogată (întrebată) de către noi
sau de către un program prin intermediul unui limbaj relativ
simplu (în general SQL) şi răspunde cu informaţie, în funcţie
de care se iau decizii.
<?php Noțiuni teoretice
Sistem de gestiune a bazelor de date (SGBD)
Un sistem de gestiune a bazelor de date (SGBD) reprezintă
un sistem de programe care permite construirea unor baze
de date, introducerea informaţiilor în bazele de date şi
dezvoltarea de aplicaţii privind bazele de date.
Database Management System (DBMS)
Printr-un SGBD se realizează interacţiunea utilizatorului cu
baza de date.
Exemple: Oracle, SQL Server, MySQL, Access, Visual Fox Pro
<?php Noțiuni teoretice
Sistem de gestiune a bazelor de date (SGBD)
Orice SGBD conţine, printre alte componente, un limbaj de
descriere a datelor (LDD) care permite descrierea structurii
bazei de date, a fiecărei componente a ei, a relaţiilor dintre
componente, a drepturilor de acces ale utilizatorilor la baza
de date, a restricţiilor în reprezentarea informaţiilor.
O altă componentă a unui SGBD este limbajul de
manipulare a datelor (LMD) ce permite operaţii asupra
datelor aflate în baza de date, cum ar fi: inserarea unui
element, ştergerea unui element, modificarea unui
element, căutarea (regăsirea) unor elemente.
<?php Noțiuni teoretice
Modelul conceptual
Primul pas în realizarea unei aplicaţii de baze de date este
analiza datelor şi realizarea unei scheme conceptuale
(model conceptual) a acestor date.
Modelul conceptual al datelor este o reprezentare vizuală
clară şi corectă a activităţii unei organizaţii.
Modelul conceptual al datelor include entităţile
(informaţiile) majore şi relaţiile dintre acestea şi nu conţine
informaţii detaliate privind atributele (caracteristicile)
entităţilor.
<?php Noțiuni teoretice
Diagramele ERD
Informaţiile obţinute în etapa documentării vor fi
reprezentate într-o formă convenţională care să poată fi
uşor înţeleasă de toată lumea. O astfel de reprezentare este
diagrama entităţi-relaţii numită şi harta relaţiilor ERD (Entity
Relationship Diagram).
Diagramele ERD sunt uşor de creat şi de actualizat, însă,
avantajul major al lor este dat de simplitatea reprezentărilor
ce facilitează înţelegerea şi de către nespecialişti.
<?php Noțiuni teoretice
Modelul relațional
Modelul relaţional este definit prin: structura de date,
operatorii care acţionează asupra structurii şi restricţiile de
integritate.
Conceptele utilizate pentru definirea structurii de date sunt:
domeniul, tabela (relaţia), atributul, tuplul, cheia şi schema
tabelei.
<?php Noțiuni teoretice
Domeniul, schema tabelei
Domeniul este un ansamblu de valori caracterizat printr-un
nume. Poate fi explicit sau implicit. Reprezintă o mulțime de
tip similar (de exemplu: luni calendaristice, orașe, etc.).
Schema tabelei este formată din numele tabelei, urmat
între paranteze rotunde de lista atributelor, iar pentru
fiecare atribut se precizează domeniul asociat.
Schema bazei de date poate fi reprezentată printr-o
diagramă de structură în care sunt puse în evidenţă şi
legăturile dintre tabele.
Cardinalitatea relaţiei este egală cu numărul de linii sau
tupluri conţinute de un tabel.
<?php Noțiuni teoretice
Entitate, tabelă, atribut, înregistrare
O entitate este un lucru, obiect, persoană sau eveniment
care are semnificaţie pentru afacerea modelată, despre care
trebuie să colectăm şi să memorăm date.
Printr-o tabelă se definesc atributele ce aparțin unei
entități. Un tabel ce conține informații.
Atributul este coloana unei tabele, caracterizată printr-un
nume (câmp).
Tuplul sau înregistrarea este linia dintr-o tabelă şi nu are
nume.
<?php Noțiuni teoretice
Chei
Cheia este un atribut sau un ansamblu de atribute care au
rolul de a identifica un tuplu dintr-o tabelă.
Cheia primară a unei tabele reprezintă un atribut sau un
ansamblu de atribute care identifică în mod unic o
înregistrare dintr-o tabelă a unei baze de date.
Cheia externă (foreign key) este atributul sau ansamblul
de atribute ce serveşte la realizarea legăturii cu o altă
tabelă în care acest atribut sau ansamblu de atribute este
cheie primară. Valorile asociate atributului cu rol de cheie
externă pot fi duplicate sau nule.
<?php Noțiuni teoretice
Chei primare, chei candidat
Cheia primară formată dintr-un singur atribut este o cheie
simplă, iar cea formată dintr-un ansamblu de atribute se
numeşte cheie compusă.
Orice tabelă are o cheie primară care trebuie să aibă
valori unice şi nenule.
Un atribut ce îndeplineşte condiţiile necesare cheii
primare se numeşte cheie candidat. Într-o entitate pot
exista mai multe atribute ce pot fi cheie primară.
Dintre aceste chei candidat se va alege, de fapt, cheia
primară.
<?php Noțiuni teoretice
Chei externe. Condiții
Cheia externă (foreign key) este atributul sau ansamblul de
atribute ce serveşte la realizarea legăturii cu o altă tabelă în
care acest atribut sau ansamblu de atribute este cheie
primară. Valorile asociate atributului cu rol de cheie externă
pot fi duplicate sau nule.
Fiecare valoare a unei chei externe trebuie să se
regăsească printre mulţimea valorilor cheii primare
corespondente, reciproca nu este valabilă;
O cheie externă este simplă dacă şi numai dacă cheia
primară corespondentă este simplă şi este compusă dacă şi
numai dacă cheia primară corespondentă este compusă;
<?php Noțiuni teoretice
Chei externe. Condiții
Fiecare atribut component al unei chei externe trebuie să
fie definit pe acelaşi domeniu al componentei
corespondente din cheia primară;
O valoare a unei chei externe reprezintă o referinţă către
o înregistrare care conţine aceeaşi valoare pentru cheia
primară corespondentă, deci această valoare trebuie să
existe.
<?php Noțiuni teoretice
Constrângeri de integritate
Ultima condiţie este cea a integrităţii referinţei, deci, dacă
avem o cheie externă A care face referire la o cheie primară
B, atunci B trebuie să existe.
Constrângerile de integritate reprezintă reguli pe care
valorile conţinute într-o tabelă trebuie să le respecte.
Aceste constrângeri previn introducerea de date eronate
în tabele.
Cheia externă este o constrângere, prin aplicarea acestei
constrângeri valorile unei coloane sunt forţate să fie doar
dintre cele ale cheii primare corespondente. Aceasta
poartă numele de constrângere de integritate
referenţială.
<?php Noțiuni teoretice
Constrângeri de integritate
Constrângerile de integritate sunt verificate automat de
SGBD atunci când au loc operaţii de modificare a
conţinutului unei tabele (introducere, modificare sau
ştergere de înregistrări). În cazul în care valorile nu sunt
valide operaţia nu se efectuează şi se generează o eroare.
Fiecare constrângere de integritate poate avea asociat un
nume, în cazul în care nu se asociază un nume, sistemul
generează automat unul.
O constrângere poate fi definită în descrierea unei
coloane dacă se referă doar la acea coloană sau la finalul
listei de descrieri a coloanelor.
<?php Noțiuni teoretice
Tipuri de constrângeri
NOT NULL – valorile nu pot fi nule;
PRIMARY KEY – defineşte cheia primară;
UNIQUE – defineşte uncitatea;
FOREIGN KEY – defineşte o cheie externă;
CHECK – introduce o condiţie (expresie logică).
<?php Noțiuni teoretice
Algebra relațională. Teoria mulțimilor
Algebra relaţională este o colecţie de operaţii formale
aplicate asupra tabelelor (relaţiilor), şi a fost concepută de
[Link].
Operaţiile sunt aplicate în expresiile algebrice relaţionale
care sunt cereri de regăsire. Acestea sunt compuse din
operatorii relaţionali şi operanzi.
Operanzii sunt întotdeauna tabele (una sau mai multe).
Rezultatul evaluării unei expresii relaţionale este format
dintr-o singură tabelă.
<?php Noțiuni teoretice
Algebra relațională. Teoria mulțimilor
Operatori pe mulţimi (R1, R2, R3 sunt relaţii (tabele)) sunt:
Reuniunea. R3 = R1 U R2, unde R3 va conţine tupluri din
R1 sau R2 luate o singură dată;
Diferenţa. R3 = R1 \ R2, unde R3 va conţine tupluri din R1
care nu se regăsesc în R2;
Produsul cartezian. R3 = R1 × R2, unde R3 va conţine
tupluri construite din perechi (x1,x2), cu x1 aparţine R1 şi
x2 aparţine R2;
Intersecţia. R3 = R1 ∩ R2, unde R3 va conţine tupluri care se
găsesc în R1 şi R2 în acelaşi timp;
<?php Noțiuni teoretice
Algebra relațională. Teoria mulțimilor
Operatori relaţionali speciali sunt:
Selecţia. Din R1 se obţine o subtabelă R2, care va conţine
o submulţime din tuplurile iniţiale din R1 ce satisfac o
condiţie. Numărul de atribute din R2 este egal cu numărul
de atribute din R1. Numărul de tupluri din R2 este mai
mic decât numărul de tupluri din R1.
Proiecţia. Din R1 se obţine o subtabelă R2, care va conţine
o submulţime din atributele iniţiale din R1 şi fără tupluri
duplicate. Numărul de atribute din R2 este mai mic decât
numărul de atribute din R1.
<?php Noțiuni teoretice
Algebra relațională. Teoria mulțimilor
Joncţiunea este o derivaţie a produsului cartezian, ce
presupune utilizarea unui calificator care să permită
compararea valorilor unor atribute din R1 şi R2, iar
rezultatul în R3. R1 şi R2 trebuie să aibă unul sau mai
multe atribute comune care au valori comune.
<?php Noțiuni teoretice
Normalizarea
Tehnica de normalizare este utilizată în activitatea de
proiectare a structurii BDR şi constă în eliminarea unor
anomalii (neajunsuri) de actualizare din structură.
Normalizarea este o teorie construită în jurul conceptului
de forme normale (FN), care ameliorează structura BDR
prin înlăturarea treptată a unor neajunsuri şi prin
imprimarea unor facilităţi sporite privind manipularea
datelor.
<?php Noțiuni teoretice
Forme Normale (FN)
FN1. O tabelă este în FN1 dacă toate atributele ei conţin
valori elementare (nedecompozabile), adică fiecare tuplu nu
trebuie să aibă date la nivel de grup sau repetitiv. Structurile
de tip arborescent şi reţea se transformă în tabele cu
atribute elementare.
O tabelă în FN1 prezintă încă o serie de anomalii de
actualizare datorită eventualelor dependenţe funcţionale
incomplete. Fiecare structură repetitivă generează (prin
descompunere) o nouă tabelă, iar atributele la nivel de
grup se înlătură, rămânând doar cele elementare.
<?php Noțiuni teoretice
Forme Normale (FN)
FN2. O tabelă este în FN2 dacă şi numai dacă este în FN1 şi
fiecare atribut noncheie al tabelei este dependent
funcţional complet de cheie. Un atribut B al unei tabele
depinde funcţional de atributul A al aceleiaşi tabele, dacă
fiecărei valori a lui A îi corespunde o singură valoare a lui B,
care îi este asociată în tabelă. Un atribut B este dependent
funcţional complet de un ansamblu de atribute A în cadrul
aceleiaşi tabele, dacă B este dependent funcţional de întreg
ansamblul A (nu numai de un atribut din ansamblu).
<?php Noțiuni teoretice
Forme Normale (FN)
FN3. O tabelă este în FN3 dacă şi numai dacă este în FN2 şi
fiecare atribut noncheie depinde în mod netranzitiv de
cheia tabelei. Într-o tabelă T, fie A,B,C trei atribute cu A
cheie. Dacă B depinde de A (A → B) şi C depinde de B (B →
C) atunci C depinde de A în mod tranzitiv. Eliminarea
dependenţelor tranzitive se face prin descompunerea
tabelei iniţiale în două tabele, ambele conţinând atributul
intermediar (B).