curs sql.pdf

29
1 BAZE DE DATE realizate cu ACCESS 2010 Anul universitar 2011-2012

Upload: hyperol123

Post on 15-Feb-2015

298 views

Category:

Documents


12 download

DESCRIPTION

SQL

TRANSCRIPT

Page 1: Curs SQL.pdf

1

BAZE DE DATErealizate cu

ACCESS 2010Anul universitar 2011-2012

Page 2: Curs SQL.pdf

Cerinţe examen� 20% proiect prezentat la laborator� 20% teste în timpul orelor de lab.� 10% teme de control platforma� 50% examen SCRIS� Bibliografie: materiale cursuri, seminarii şi

Baze de date – Access 2007, proiectare şi realizare pas cu pas, Tamaş Ilie, etc., Editura Infomega 2010, Bucureşti

2

Page 3: Curs SQL.pdf

Teoria generală a bazelor de date� Datele reprezintă o colecţie de premise, care constau în

cuvinte, numere, imagini, etc.� Informaţia poate fi definită într-o formă generală, ca

fiind totalitatea datelor pentru care se face o referire,adică date accesibile public (dar securizate), înconcordanţă cu interesul pentru organizaţie.

� Cunoştinţele gestionează o experienţă complexă,câştigată din diferite perspective. Totalitatea ideilor,noţiunilor, informaţiilor pe care le are cineva într-undomeniu reprezintă cunoştinţe.

� Învăţarea reprezintă capacitatea de a transmitesistematic cunoştinţe şi deprinderi dintr-un domeniuoarecare, a iniţia pe cineva, a dobândi cunoştinţe prinstudiu, a memora, a câştiga experienţă.3

Page 4: Curs SQL.pdf

4

TRECUT VIITOR

Page 5: Curs SQL.pdf

Teoria generală a bazelor de date

�� Baza de dateBaza de date este:� Un ansamblu de date structurate� Legate funcţional� Stocate pe suporturi tehnice adresabile� Accesate de mai mulţi utilizatori de o

manieră selectivă şi într-un timp oportun

5

Page 6: Curs SQL.pdf

6

Câmpuri calculateÎntregistrare (Tuplu)

Câmpuri (Atribute / Proprietăţi / Rubrici)

Domeniu

Valoare

Baze de date Excel

Page 7: Curs SQL.pdf

7

Clienţi1 Facturi

n

Page 8: Curs SQL.pdf

8

ClienţiCod_clientCod_client

Nume_client

Adresă

Localitate

ProduseCod_produsCod_produs

Denumire_produs

Preţ_unitar

FacturaNr_factură

Data_factură

Data_scadenţei

Cod_client (CF)

Conţinut FacturăCod_ProdusCod_Produs

Nr_FacturăNr_Factură

Cantitate

Page 9: Curs SQL.pdf

9

Modelul Modelul RELAŢIONALRELAŢIONAL

� Un model de organizare bidimensională a datelor în tabele

� Implementează schema relaţională (MRD)� Tabele� Relaţii între tabele� Reguli de validare

� Algebra relaţională (Operatori relaţionali) � Operatori de asamblare (Reuniunea, Intersecţia, Produsul

cartezian, Diferenţa)� Operatori unari (Proiecţia, Selecţia)� Operatori de extensie (Compunerea, Diviziunea)

� Un limbaj standard de gestiune a BDR

Page 10: Curs SQL.pdf

10

Modelul Modelul RELAŢIONALRELAŢIONAL�� R(XR(X11,X,X22,....X,....Xnn))

� unde, pentru fiecare element Xi se defineşte un domeniu de valori�� DomeniulDomeniul reprezintă mulţimea valorilor posibile care definesc o

anumită proprietate.�� Atributul Atributul / C/ Câmpul / Proprietate âmpul / Proprietate reprezintă mulţimea valorilor

existente într-o coloană a relaţiei. �� RelaţiileRelaţiile se reprezintă prin tabele care sunt supuse următoarelor

restricţii:� În fiecare coloană, toate valorile sunt de acelaşi tip;� Ordinea liniilor (tuplurilor sau înregistrărilor) nu este predefinită;� Nu sunt admise înregistrări duplicate� Coloanele sunt identificate prin nume distincte (atribute sau proprietăţi)

�Tuplurile unei relaţii se pot identifica de o manieră unică prin intermediul valorilor unuia sau mai multor atribute care joacă rol de CHEIE PRIMARĂ a relaţiei respective

Page 11: Curs SQL.pdf

Definiţii ale cheilor existente într-o tabelă� Cheia unei tabele reprezintă un ansamblu minim de atribute

care identifică o înregistrare dintr-o tabelă. � Cheia poate fi formată dintr-un singur atribut şi se numeşte

cheie simplă sau din mai multe atribute şi se numeşte cheie compusă.

� într-o tabelă pot exista mai multe atribute cu proprietatea că pot identifica o înregistrare şi sunt numite chei candidate.

� Cheia primară va identifica în mod unic o înregistrare din tabelă.

� Dacă într-o tabelă un atribut sau ansamblu de atribute ia valori în acelaşi domeniu ca şi cheia primară a unei tabele, atunci acest ansamblu de atribute se numeşte cheie externă.

11

Page 12: Curs SQL.pdf

12

Modelul Modelul RELAŢIONALRELAŢIONAL�� CHEIA CHEIA EXTERNĂEXTERNĂ: Fiind două relaţii R1 şi R2, cu

atributele A1 şi A2 chei primare definite pe acelaşi domeniu primar D, se spune că în relaţia R1, A2 este cheie externă dacă, utilizând o parte din valorile ei sau toate, pot fi regăsite tuplurile relaţiei R2

� (altfel spus, un atribut al unei relaţii este cheie externă, dacă se regăseşte pe post de cheie primarăîn altă relaţie)

R1(A1,B1,C1,D1,A2A2) R2(A2,B2,C2,D2)

Relaţii

Chei primare

Cheie externă

Page 13: Curs SQL.pdf

13

Modele de date: modelul RELAŢIONALmodelul RELAŢIONAL

R1(A1,B1,C1,D1,A2A2) R2(A2,B2,C2,D2)

Relaţii

Chei primareClienţiCod_clientCod_client

Nume_client

Adresă

Localitate

FacturaNr_facturăNr_factură

Data_factură

Data_scadenţă

Cod_client Cod_client

Cheie externă

Factura(Nr.Factura,Data_f,Data_s,Cod clientCod client)

Clienti(Cod client,Nume_cl,Adresa,Localitate)

Page 14: Curs SQL.pdf

14

Dictionar Date+Reguli Gest NORMALIZARE MRD

Normalizarea Bazelor de Date:Procesul de normalizare

NormalizareaNormalizarea este un demers ce conduce la construirea modelului relaţional al bazei de date

Se descompune o tabelă complexă în subtabele mai mici şi mai uşor demanipulat

SCOP: Normalizarea garantează coerenţacoerenţa bazei de date în timpul operaţiilor de actualizare de date, evitând redundanţeleevitând redundanţele

REZULTAT: Un model nedecompozabil ce respectă regulile de definire semantică şi de integritate a datelor

Page 15: Curs SQL.pdf

15

� Există o dependenţă funcţională între 2 atribute atunci când cunoscând valoarea luată de către un atribut, se furnizează sistematic valoarea pentru celălalt atribut�� A A --> B> B (B depinde funcţional de A, dacă la orice valoare a lui A

corespunde în orice moment o valoare unică a lui B)�� ExempleExemple de dependenţe funcţionale:

� Cod Produs -> Denumire produs� Cod Produs -> Preţ de referinţă� Număr Comandă -> Dată Comandă� Număr Comandă -> Cod Client -> Nume Client

� -> Cod Fiscal

Dependenţa funcţională : Dependenţele sunt legături logice, ce se stabilesc între

câmpurile modelului relaţional.

Dacă un atribut sau un grup de atribute dintr-un tabel determină funcţional celelalte atribute ale tabelului, rezultă că atributul sau grupul de atribute constituie cheia primară a tabelului

TranzitivitateTranzitivitate:

Dacă A -> B şi B -> C, atunci

A A -->C>C

Page 16: Curs SQL.pdf

16

� Reprezentarea grafică a dependenţelor funcţionale

Normalizarea Bazelor de Date:Diagrama dependenţelor funcţionale

Cod Produs Denumire, UM, Preţ de referinţă

NrComandă

Cod Produs

Dată comandă, Cantitate

comandată

Page 17: Curs SQL.pdf

17

� Dependenţe Inter-Tabele (1-1)� Când la o valoare a atributului Cheie primară dintr-o tabelă, se

asociază o singură valoare a atributului Cheie primară dintr-o altă tabelă, se poate spune că există o dependenţă funcţională între tabele, exprimată prin dependenţa funcţională dintre atributele chei primare aferente celor două tabele

Normalizarea Bazelor de Date:Dependenţe Inter-Tabele şi Multivaloare

CodProfesor NumeProfesor

� Dependenţe Multivaloare (1-n) (n-m)� În cazul în care la o valoare a atributului Cheie primară dintr-o

tabelă, corespund mai multe valori ale altui atribut dintr-o altă tabelă, se poate spune că există o dependenţă funcţională multivaloare

Nr.factură Cod Produs

CodProfesor Cod Carte

Page 18: Curs SQL.pdf

18

� Dicţionar de date şi Reguli de gestiune� Potrivit regulilor de gestiune coroborate cu

analiza informaţională referitoare la aplicaţia de informatizat se declară într-un tablou toate atributele disponibile (Identificatorul + Denumirea în clar)

Normalizarea Bazelor de Date : Formele normale 1, 2, 3

DD+RG

1FN2FN

3FN

�� 1 FN1 FN� O relaţie R este în 1FN atunci când atributele sale nu pot fi

descompuse în unităţi mai mici�� 2 FN2 FN

� O relaţie R este în 2FN, dacă este în 1FN şi toate dependenţele între cheia primară a lui R şi celelalte atribute a lui R sunt elementare (atributele nu depind de o parte din cheie)

�� 3 FN3 FN� O relaţie R este în 3FN, dacă este în 2FN şi dacă sunt eliminate

toate dependenţele funcţionale tranzitive (dacă nu există nici o dependenţă funcţională între atributele non-cheie)

Page 19: Curs SQL.pdf

19

� Formalizarea procesului de normalizare este operaţională prin Matricea Dependenţelor Funcţionale: � MDF are pe linie toate atributele dicţionarului de date� MDF are pe coloană toate atributele sau numai atributele

care pot avea rol de cheie primară� Se notează 1 la intersecţia liniei cu coloana pentru care

există dependenţă funcţională� Se notează cu „M” dependenţa multiplă� Se notează 1T dependenţele funcţionale tranzitive

� Liniile care NU AU 1 desemnează fie atribute care nu sunt dependente funcţional de un identificator simplu, fie desemnează atribute parametru

Normalizarea Bazelor de Date:Matricea Dependenţelor Funcţionale

Page 20: Curs SQL.pdf

20

�� Inventarierea atributelorInventarierea atributelor (se vor selecta toate atributele referitoare la facturile primite)� Număr factură� Dată factură� Cod furnizor� Denumire furnizor� Adresa, etc.

Normalizarea Bazelor de Date:Exemplul I Etapele procesului de NORMALIZARE

�� Se specifică regulile de gestiune şi algoritmii de calcul asociaţi Se specifică regulile de gestiune şi algoritmii de calcul asociaţi (se vor specifica diversele restricţii şi condiţii impuse datelor)� O factură este emisă de un singur furnizor� Codul materialului este unic� O factură conţine mai multe produse aprovizionate� Furnizorii pot fi numai persoane juridice

� Algoritmii de calcul: (Val_mat_fact=Cant_facturată*Preţ_unitar)

Page 21: Curs SQL.pdf

21

�� Se întocmeşte dicţionarul datelorSe întocmeşte dicţionarul datelor

� Un atribut poate fi înscris o singură dată în dicţionar

� Se elimină atributele sinonime (de ex. Cod furnizor = Simbol furnizor)

� Dicţionarul datelor nu admite atribute derivate sau calculate (Valoare, TVA)

Normalizarea Bazelor de Date:Etapele procesului de NORMALIZARE

Nr.crt Atribut În clar1 CodFz Cod Furnizor2 DenFz Denumire Furnizor3 AdrFz Adresă Furnizor4 NrFact Număr Factură5 DataFact Dată Factură

Page 22: Curs SQL.pdf

22

�� Se stabilesc Se stabilesc dependenţele funcţionaledependenţele funcţionale între atribute prin între atribute prin MDFMDF

�� Toate atributele sau grupurile de atribute determinante, Toate atributele sau grupurile de atribute determinante, devin devin CHEI CANDIDATECHEI CANDIDATE (posibile chei ale relaţiei). Cheile (posibile chei ale relaţiei). Cheile candidate aparţinând aceleiaşi relaţii sunt caracterizate prin candidate aparţinând aceleiaşi relaţii sunt caracterizate prin dependenţe funcţionale reciproce.dependenţe funcţionale reciproce.

�� Se stabilesc Se stabilesc CHEILE PRIMARECHEILE PRIMARE dintre cheile candidatedintre cheile candidate

Normalizarea Bazelor de Date:Etapele procesului de NORMALIZARE

CodFz DenFz AdrFz NrFact DataFactCodFz NU 11 11DenFz NUAdrFz NU

NrFact 1 1T 1T NU 11DataFact NU

Page 23: Curs SQL.pdf

23

�� Sau se stabilesc dependenţele funcţionale între Sau se stabilesc dependenţele funcţionale între atributeatribute

Normalizarea Bazelor de Date:Etapele procesului de NORMALIZARE

Număr Factură Dată Factură

Cod Furnizor

Denumire Furnizor

Adresă Furnizor

Page 24: Curs SQL.pdf

24

�� Pentru Pentru atributele izolateatributele izolate se vor căuta grupuri se vor căuta grupuri

de atribute ce pot constitui determinanţi ai de atribute ce pot constitui determinanţi ai

acestoraacestora. S. Se vor căuta mai întâi grupuri de chei e vor căuta mai întâi grupuri de chei

primare, apoi grupuri de atribute nonprimare, apoi grupuri de atribute non--cheie, cheie,

iar în final, dacă va fi cazul, se vor adăuga chei iar în final, dacă va fi cazul, se vor adăuga chei

surogat.surogat.

�� Cu fiecare cheie primar㠺i cu atributele Cu fiecare cheie primar㠺i cu atributele

determinate direct (determinate direct (fără tranzitivitatefără tranzitivitate) ) se se

formează o nouă relaţieformează o nouă relaţie..

�� Se stabilesc Se stabilesc CHEILE EXTERNECHEILE EXTERNE

Normalizarea Bazelor de Date:Etapele procesului de NORMALIZARE

Page 25: Curs SQL.pdf

25

�� DacăDacă întreîntre douădouă cheichei primareprimare existăexistă oo dependenţădependenţă

multiplămultiplă (reciprocă(reciprocă)),, atunci,atunci, aceastăaceastă dependenţădependenţă

vava generagenera oo relaţierelaţie..

�� CheiaCheia primarăprimară aa acesteiacestei relaţiirelaţii vava fifi formatăformată dindin

celecele douădouă atribute,atribute, care,care, individualindividual vorvor aveaavea şişi rolrol

dede cheichei externeexterne..

Normalizarea Bazelor de Date:Etapele procesului de NORMALIZARE

FURNIZORFURNIZOR(CodFz, DenFz, AdrFz)

FACTURĂFACTURĂ(NrFact, DataFact, CodFz)

Page 26: Curs SQL.pdf

26

Normalizarea Bazelor de Date:EXEMPLUL II: Evidenţa facturilor emise

CLIENTI

PRODUSE

FACTURINrFact,

DataFact

CodCli, Nume,

Adresa,Tel

CodProd, DenProd,

CantFact, Pret

Page 27: Curs SQL.pdf

27

Normalizarea Bazelor de Date:EXEMPLUL II: Evidenţa facturilor emise

NrFact, DataFact, CodCli, Nume, Telefon, Adresa, CodProd, DenProd, CantFact, Pret

FN1FN1

� Descompunerea atributelor compusecompuse ale dicţionarului de date în atribute simpleatribute simple

� Precizarea identificatorului.

�Dicţionarul datelor �(NrFact, DataFact, �CodCli, Nume, Telefon, Strada, Nr, CodPostal, Localitate, Cod Postal, �CodProd, DenProd, CantFact, PretRef, PretFact)

Page 28: Curs SQL.pdf

28

Normalizarea Bazelor de Date:EXEMPLUL II: Evidenţa facturilor emise

�� FN2FN2

� Fiecare atribut non-cheie să

depindă de întreaga cheie

primară (dependenţe

elementare).

CLIENTICLIENTI

FACTURATFACTURAT

FACTURIFACTURI

PRODUSEPRODUSE

FACTURATFACTURAT(NrFact, CodProd, CantFact, PretFact)PRODUSEPRODUSE(CodProd, DenProd, PretRef)

FACTURIFACTURI(NrFact, DataFact, CodCli)

CLIENTICLIENTI (CodCli, Nume, Telefon, Strada, Nr, CodPostal, Localitate)

Page 29: Curs SQL.pdf

29

Normalizarea Bazelor de Date:EXEMPLUL II: Evidenţa facturilor emise

•• FN3FN3Eliminarea dependenţelor tranzitive

CLIENT (CodCli, Nume, Telefon, Fax, Strada, Nr, CodPostal)FACTURA(NrFact, DataFact, CodCli)PRODUS(CodProd, DenProd, PretRef)FACTURAT(NrFact, CodProd, CantFact, PretFact)LOCALIZARELOCALIZARE(CodPostal, Localitate)