Sunteți pe pagina 1din 10

D-nul Veniamin Bulat

pentru a activiza baza de date (pentru a executa implicit comenzile)


use NumeleBazei go

o bază de date este un ansamblu structurat de date, înregistrat pe suporturi


accesibile calculatorului,pentru a satiface simultan cerințele mai multor
utilizatori într_un mod selectiv și în timp util.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>13:10 21.09.2016
Algebra relațională
operațiile pot fi executate doar pe tabele compatibile

operații:
selecția
proiecția
diviziunea
juncțiunea
(Sigma) condiție (R)
ex:
select nume_elev , adr_elev from nume_tabel WHERE nume_elev like A*

alias - poreclă
juncțiuni externe
outer join - se iau 2 tabele afișarea totală a conținutului

Tema: Tipurile de dependență funcționale


Reguli de inferență (axiomă)

tipuri de dependenț funcționle


totale triviale, parțiale multiple

dependențele funcționale sunt constrângeri

prin dependențe funcționale se subânțelege dacă oicărui element a unei mulțimi (A)
i se pune în corespondență un element y care primește aceleași valori pentru
aceleași valori a lui x (valorile x și y pot fi dferite)

o dependență funcțională poate fi reprezentată printr-un tabel grafic sau diagramă

DEF: Dependența funcțional definește relația dintre un atribut sau mai multe ale
aceluiași tabel sau a altui tabel depind de un câmp sau mai multe câmpuri ale altui
tabel

fdependențe funcționale este un grup de constrângeri ce asigură integritatea


datelor din baza de date și practic au fost primele constrângeri față de baza de
date
Atributul de care depinde un alt atribut (x->y) se numește determinant
iar atributul care este determinat se numește determinat

elevi( cod_personal_al_levilor, nume, prenume, adresa, id_grupa)

Constrângerele dependențelor funcționale nu pot fi demonstrate, dar sânt niște


legături(cerințe) logice între atribute
stabilit atât de viață cât și de administratorul bazei de date.

Constrângeri:
cheie primară cheie externă
check ( <sau>)
default (introduce cv implicit)
NULL / NOT NULL
tipul de date

Cluster

Normalizarea datelor
Normalizarea BD (Descompunerea)
Formele normale FN1-FN5 F3 ~ FNBC - reguli impuse față de tabel
Algoritmi de normalizare prin descompunere, de verificare

Formele Normale
Se elimină datele redundante

FN1 cere ca tate atributele tabelului să fie atomice (să aibă o singură valoare, să
nu poate fi descompus în alte atribute, să nu fie atribute compuse)
FN2 un atribut care nu este cheie, să depindă de înrteaga cheie.
FN3 dacă tabelul satisface FN2 și nu existăă atribute trnzitive

În proiectarea formelor normale, proiectarea se efectuează în 2 moduri,


descompunerea tabelului utilizând formele normale

descompunerea tabelelor îîn mai multe tabele, utilizând matricea dependențelor


funcționale.

Pentru descompunerea tabelelor (realizarea procesului de normalizare) există


algoritmi speciali de descompunere a tabelelor în FN3 FNBaseCod FN4 și FN5

La fel există și algoritmi de verificare dacă la descompunere nu a avut loc


pierdere de date
Join fără pierderi

Nume client
Denumirea marfă
cantitatea
prreț
adresă client
fiecare client poate comanda mai multe produse
fiecare produs poate fi comandat de mai mulți clienți

PA! Lucrarea de control

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<13:06 19.10.2016
Tema:

Crearea bazei de date, tabele, limbaj de manipulare a datelor


operații aritmetice, expresii, funcții

CREATE DATABASE Colegiu

DROP DATABASE Colegiu


CREATE TABLE Produse
(id_produs int,
nume_produs char(50),
id_producator int,
pret decimal(10,2),
Descriere_produs text/memo );

să se scrie instrucțiunea de creare a tabelului produse cu câmpurile id_produs de


tip int, nume_produs de tip char(50), id_producator de tip int, câmpul preț de tip
decimal/money, descriere_produs de tip text(memo)

în baza faptului că nu a fost indicată constrângerea NULL sau NOT NULL, implicit se
consideră NULL

să se creeze tabelul comenzi cu câmpurile nr_comanda,


data_comandă, id_client, toate câmpurile cu constrângerea NOT NULL, câmp nr_comandă
int

CREATE TABLE Comenzi


(Nr_comanda INT NOT NULL PRIMARY KEY,
Data_comandă DATE NOT NULL DEFAULT GETDATE( ), - (Cu valoareaa implicită ce
întoarce data sistemului)
Id_client INT NOT NULL
Constraint Fk-CLientID Foreign Key (Id_client) Refereces Client(Id_client)
);
Crearea unui tabel cu instrucțiunea create table poate fi efectuată cu
instrucțiunea create table, și alter table
Cu instrucțiunea create table descriem câmpurile iar cu instrucțiunea alter
descriem constrângerile
Majoritatea SGBD dispun de asistenți de crearea bazelor de date, dar poate fi
creată și prin metode de progrmare cu a fost descris mai sus
Sintaxa instrucțiunilor SQL poate devia puțin de la SGBD sin care motiv se
recomndă:
1)să menținem limbajul stardartului SQL a ANSI
Instrucțiunile limbajului pot fi scriese într-un rînd dar se recomandă formatele
aduse în exemplele de mai sus
Limbaj de modificare
Modifiacarea se efectuează cu ajutorul instrucțiunii ALTER TABLE dar este
recomandat să se efectueze cât mai rar

Să se efectueze o proiectare corectă și reușită


Majoritatea SGBD-urilor permit un număr limitat de modificări a structurii
tabelelor și unnumăr și mai llimitat după popularea vazei de date
majooritatea sgbd-urilor permit adăugarea unui câmp nou, modificarea tipului (într-
un tip compatibil, doar mărind lungimea )

să se scrie instrucțiunea ce modifică structura tabelului comenzi prin adăugarea


câmpului info client de tipul char (100) cu cnstrângerea NULL

ALTER TABLE Comenzi ADD InfoClient char(100) NULL ;

să se modifice câmpul introdus prin majrarea lungimii pînă la 200 caractere


Pentru modificări mai serioase a a structurii tabelelor se recomandă efectuarea
următoarelor acțiuni în mod "manual"

1)Se cerază un tabel cu structuradorită


2)Se copie datele doritte din alt tabel cu instrucțiunea insert Into tabel_nou -
Select ceva tabel_vechi
3)se nimicește tabelul vechi
4)se modifică numele tabbelului tabelului vechi
5)Se modifică declanșateoarele, tranzacțiile corespunzătoare dacă necesită.

Ștergerea unui câmp se efectuează DROP COLUMNS

să se scrie instrucț ce elimină cheia primară la câmpul datacomenzi, tabelul


Comenzi

ALTER TABLE Comenzi DROP CONSTRAINT PkComenzi


instrucțiunea va fi corectă doar în cazul când cheia primară a câmpului nr_comandă
va avea numele PkComenzi
pentru atribuirea de nume a cheii primare, constrângerea primary key trebuie să fie
declarată fie la sfârșitul declarării tuturor câmpurilor îîn instrucțiunea create
table fie cu instrucțiunea ALTER TABLE după cuv Cheie CONSTRAINT

să se scrie instrucțiunea de dezactivare a constrângerii cheii primare a tabelului


comenzi
ALTER INDEX PkComenzi ON Comenzi DISABLE

Redenumirea tabelelor sau a câmpurilor dacă sunt acceptate se efectueză fie cu


instrucțiunea rename dar majorittea SGBD utilizează procedura SP_RENAME

Unele SGBD pot cere numele vechi și numele nou SP_RENAME 'Comenzi' , 'ComenziNOU'

Să se schimbe numele câmpului nrcomandă în numele NumărComandă

SP_RENAME 'Comenzi.Nrcomandă', 'NumărCOmandă' column

este de dorit ca la crearae structurii tabelelor să se utilizeze la maximum


constrângerile, dar, asta poate du ce la creșterea timpului de execuție a
modificărilor bazaei de date, ceea ce ne impune să alegem varianta opttimală, să
găsim un compromis între timpul de execuție și numărul de constrângeri pentru
verificare

Un exemplu de instrucțiune cu verificări la maximum a corectitudinii datelor.

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<8:08 24.10.2016
tema: Instrucțiunile de interogare
să se creeze baza de date Librarie Utilizând comenzile tranzact SQL să se
introducă câte 2 îînregistrări în tabel
Tabelele și câpurile în viziunea personală,

Comanda alter table : pentru adăugarea unui câmp, pentru modificarea unui câmp,
adăugarea unei constrângeri

exemple de instrucțiuni drop table,update,delete

create database instr;


use instr;
go;

Exemple, creeate table, insert, update, delete


Rânduri constrângeri,
create table Carti
(
IdCarte char(8) NOT NULL
NrPag int
Autor char(30)
Editura char (12)
Anul (5)
);

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<13:28 26.10.2016
Tema: Interogarea bazelor de date
clauzele where, group by, order by, having,

Selectarea datelor dintr-un tabel


Folosirea funcțiilor select

from - specifică numele tabelului din care se extrag datele câmpurilor


where - specifică condițiile de filtrare a rândurilor din tabel
dacă where nu este utilizat, vor fi afișate toate rândurile tabelului

group by - permite aranjarea înregistrărilor pe grupe - o grupă este creată din


aceleași valori a câmpului specificat în clauză, gruparea se efectuează după
ultimul câmp dacă se specifică mai multe câmpuri

having - clauza de filtrare pentru setul dinamic - rezultatele instrucțiunii select


este echivalent cu where pentru setul dinamic

order by - ordonează înregistrările conform valorilor câmpurilor specificate în


clauză

clauza where permite specificarea de condiții de filtrare atât utilizând expresii


simple precum și instrucțiuni de tip select

Selectarea uei coloane


Select Nume_Client from Clienți

Seectarea mai multor colone


Select nume_client,Contact_client from clienți order by nume_clienți

Select Nume_Client from Clienți where Contact_Client = 'Joneta Susan';

Select NumeProd, PretProd from Produse


Where NumeProd Like 'R%' / '%eg%' / '%a' / '[R B]%'

Select pretprod from produse where PretProd IN (5.99,8.99,11.99)

Interogări cu câmpuri cu valoare calculată


Select IdProd, PretArtCom*Cant AS Cost
from Articol comandat

Select RTrim from (NumeClient)+'('+ Rtrim(taraclient)+')' from client

Select Sum(PretUnitar*Cant) As SumCost from Articol comadat.


Instrucțiunea select - clauzele

să se creeze baza de date produse


să se execute toate instrucțiunile de la lecția de curs
în caiet de scris instrucțiunea : acțiunea și setul dinamic(rezultatul)

să se scrie instrucțiunea ce afișează numărul de comenzi a clientului la care


contact client este Gicu Jordan

să se afișeze cantitatea totală a fiecărui produs comandat

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<13:06 02.11.2016
Să se scrie instrucțiunea ce afișează numărul maximal de produse a unui producător

Tema: Selectarea datelor din mai multe tabele


2 moduri:
1)Utilizând subinterogări, (interogare utilizată în altă interogare )
2)Utilizând mulțimile
să se scrie interogarea ce afișează numele clienților și contact client care au
comandat RGAN01 utilizând subinterogările
Select Nume_client , Contact_Client From clienti where Id_Client in (select număr
comandă Id_client from comenzi where numar_comanda In (select număr_comanda from
articolcomandat where id_Produs = 'RGAN01'));

1)subinterogare extrage numărul comenzilor

prin utilizarea uniunilr cărora li se dă prioritate la extragera datelor din mai


multe tavele ( se execută mai rapid)
instrucținea vafi mai constrânsă SGBD permit utilizarea următoarelor tipuri de
uniuni

Echiuniuni-interioare utilizează semnul egal între coloanele cheie


Auto-uniuni - unirea tabelului cu el însuși - aceluiași tabel i se atribuie 2
alias-uri diferite care se consideră ca 2 tabele care vor fi unite
Uniuni naturale sunt uniunile ce exclud datele (coloanele) care se repetă în ambele
tabele, pentru aceasta, pentru unul in tabele utilizăm caracterul * în select,
pentru celelalte tabele specificăm câmpurile corespunzătoare (evident care nu se
repetă în prima)

Uniuni extere permite de a extrage înegistrări din mai mule tabele și care nu sunt
corelate

Pentru crearea uniunilor avm mai multe posibilități


a) fie că în clauza from eumerăm tabelele separate prin virgulă iar prin clauza
where specificăm condiția de unire și condiția de filtrare dacp e necesar
b)în clauza from între tabele utilzăm cuvintele inner join pentru echiuniuni
iar outer join(L/R/Full) pentru uniuni externe

să se scrie instrucțiunea ce afișează numele producătorului, nume produs, preț


produs
(nume producător în tabelul pprducător, nume produs, pret prous în produse)

a)Select nume_producator , nume_produs, Pret_produs from Producatori, produse Where


Produse.Id_prod=Producatori.Id_prod ; - uniune interioară

b)Select nume_producator , nume_produs, Pret_produs from Producatori Inner Join


Produse ON Produse.Id_prod=Producatori.id_Prod;

Sistemul Oracle nu admite nu admite ASC Louterjoin Comenzi


ă se scrie lista clienților și a producătorilor corespunzători, produsele cărora au
fost comandate

Pentru a extrage date din mai multe tabele avem o altă posibilitate - utilizzarea
interogărilor combinate
Intergorările combinate sunt interogările care între ele se semnează operatorul
union except
Pentru a scrie intergări combinate este deajuns să scrim prima interogare apoi
UNION/EXCEPT apoi altă interogare

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<9:35 07.11.2016

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<13:14 09.11.2016
Numele prod produsele cărora au fost comandate în comanda 20008

nr comenzii efectuată de clientul la care contact client este Gicu Jordan

select numarcomanda from Comenzi,Clienți where comenzi.Id_client=Clienti.Id_Client


AND Clienti.contact_client='Jicu Jordan'

Interogări de modificarea affatelor


Interogări cu acțiuni
Import Export

Modificarea dateor întro bază de date se efectuează Update(interogări cu acțiuni)


în comanda update specificăm numele tabelului,cuv cheie sau comanda set, numele
câmpului(coloanei) = valoarea noua a câmpului
În comanda update poate fi utilizată și clauza where și se recomandă mai mult ca
atât, ca condiție de filtrare este recomandat să se utilizeze cheia primară a
rândului.
Dacă clauza where nu este atunci cu valoarea specificată în set vor fi modificate
valorile tuturor rândurilor

Valoarea câmpului e-mail clienți


Să se scrieinstrucțiunea ce modifică din tabelul clienți câmpul E-mail clientt al
clienților ce nu dispun de e-mail

Update Clienti SET email_client='I3@mail.md' WHERE id_client='100000005'

În baza faptului că în tabelul clienți avem 2 care nu dispun de email, valoarea de


mai sus va fi adresa de email a ambilor clienți, ceea ce este incorect din motiv că
condiția de filtrare n-a fost dată corect
se recomandă de utilizat ca filtru Id_Client

Update Clienti SET email_client='I2@mail.md' WHERE id_client='100000005'

Să se scrie commanda ce modifică data comenzii în data de astăzi și Id_Client


Update Comenzi SET dataComandă=getdate( ), where

să semodifice ăn tab clienți câmpul email_client


Comanda Delete

Pentru lecția la care o să fiu prof


Vederi (Formulare) Avantajele vedrilor
de enumerat cauzele de elbaorare a formularelor
crearea indecșilor
tranzacții
proceduri și funcții
proceduri stocate
triggerii

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<13:02 16.11.2016
Indecși și tranzacții

Indecșii, indecșii se crează pentru tabelele mari, indecșii facilitează căutarea și


mărește vitezea de căutare

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<9:30 21.11.2016
Interogări de acțiuni de modificare a datelor
să se modifice numele producătorului din Anglia din Furdui în Fudul
Să se modifice denumirile produselor la care ID_începe cu Br lăsânduse ca valore
noua ultimu cuv din valoarea veche

să se modifice prețul produsui comandat (preț articol) a produselor la care codul


produsului încep cu BNB, valoarea nouă este reducerea cu 10 %

Din tabelul producător să se șteargă producătorul cu codul JTS01

Din tabelul comenzi să se șteargă înregistrările la care data comandă are anul 2004

în modul interactiv să se creeze index pentru tabelul articol comandat a câmpului


cantitate în ordine crescătoare

să se creeze vederea în modul interactiv


Numele clienților care au comandat produsele producătorului la care țara Nu este RM

să se creeze vederea ce afișează cu numele chetrean ce va afisa comenzile


comandate de Chetrean în anul 2016

să se creeze vederea ce moifică valoarea câmpului stat_CLient în valoarea DB a


clienților 1 și 5

Update

Sa se creeze vederea ce ănsereaza in câmpul email client pentru clientii ce nu


dispun de adresa email

sa se scrie vederea ce afisează adresa clienților în forma


Proceduri stocate
Triggeri
Funcții și proceduri

Limbajul Transact SQL permite ca și orice limbaj de programare de a crea ffuncții


utilizator practic cu aceleași caracteristici funcția poate dispune de parametri și
funcții standarte
Independent de tipul valorii de bază a vem 2 tipuri de funcții

funcții de tip scalar(funcția ce întoarce o valoare de un tip definit SQL_SERVER)


funcții de tip tabelar(funcții care returnează un set de înregistrări și poate fi
asimilat unui tabel virtual)
Avantajele utilizării funțiilor sunt:
1)Permite utilizatorului de a crea programe structurate
2)Micșorează volumul codului de program
Funcțiile create pot fi uilizate în vederi
Procese de utilizare a funcțiilor în proceduri permite scrierea de coduri
explicite.
Crearea funcțiilor se crează cu instrucțiunea CREATE FUNCTION
FSQL(Listă-parametri)
Blocul funcției

SQL dispune de proceduri de mai multe proceduri cum ar fi


Proceduri rezidente
O procedură Rezident reprezintă un set de instrucțiuni SQL grupate logic și care
efectuează o anumită sarcină (sub algoritm)
Proceduri rezidente sunt obiecte a bazei de date și pot fi utilizate atât în modul
interactiv cât și în proceduri
Proceduri de sistem sunt prceduri definite de utilizatori pe SQL server care sunt
puse la dispoziția utilizatorului și sunt memorate pe baza de date master.
Numele acestor proceduri se încep cu
SP_DATABASES (afișează lista tuturor bazelor de date de pe server
SP_COLUMN (Tabel_Parametru) afișează info despre coloanele tabelului specificat ca
parametru
SP_HELP(Obiect) afișează informația despre obiectul specificat din baza de date
SP_EXECUTE_SQL - permite executarea a unor instrucțiuni sql specificat ca parametru
SP_RENAME permite redenumirea unui obiect
SP_SPACEUSED - afișează numărul de înregistrări și spațiu utilizat de un anumit
tabel sau vedere pe server

Proceduri stocate sunt procedurile create de utilizator și stocate pe serverr cu un


anumit nume care pot fi apelate și se compilează la executare

Proceduri stocate
Oprocedură stocată este un set de instrucțiuni care pot fi utilizate ca un obiect
întreg având prioritatea permmiterea comiterii de erori, executarea corectă a
ordinii instrucțiunilor, Micșorează viteza de executare, mărește eficiența
Pentru a

Create PROCEDURE ProdSQL (listă parametri)

EXEC NUME_PROCEDURĂ(listă param) --execuția


--compilarea procedurii în momentul executării

Triggerii - proceduri 'legate' de un anumi tabel și numite operații de tipul


insert, update. Aceste proceduri se execută automat când se execută operația pentru
operația care a fost creată a tabelului specificat
Utilizarea declanșatarelor permit efectuarea de operații în alte tabele în funcție
de modificările dintr-un tabel, de ex adăuggarea de înregistrări în tabelul
ArticolComandat, dacă s-a itrodus o comandă de înregistrare în tabelul comenzi

Efectuarea de validări suplimentare


Determinareaa coloanelor cu valoare calculată

PA! funcția ce adaugă în tabelul produse un produs nou Meteorit, a producatorului


JTS1, cantitatea și prețul la alegere
De creat triggeri de inserarea unei comenzi în tabelul comenzi (și în tabelul
articol comandat, rândurile corespunzătoare + de creat tranzacții de ștergere a
comenzilor

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<9:30 28.11.2016
Laborator
să se pregătească pentru prezentare sarcina de la lecția precedentă
să se realizeze din proiect cuprins 10.5 10.9 sau din conținut 20-24

Vederi, indecși, tranzacții, triggere

vederile - pentru fiecare obiect a bazei de date să se efectueze descrierea


(definiția, crearea, avantajele, dezavantajele, example)
10.5 vederi . utilizarea vederilor vederile sunt tabele virtuale care reprezintă
setul dinamic a interogării din conținutul ei.
Vederile se utilizează pentru 1-7 câte o vedere pentru fiecare tip de utilizare
Vedderile pot fi create fie în modul interactiv
de spcificat pașii
Fie în modul de programare utilizând instr create view
de descris avantajele și dezavantajele

2 vederi din cele cerute să fie create în modul interactiv


Pentru celelalte obiecte se procedează analog :
definiția, crearea, avantaje dezavantaje, exemple

La exam
de determinat dependențe funcț algebră relațională

3)Interogările crearea popularea


Viziuni proceduri triggere

Întrebări bazate pe proiect

S-ar putea să vă placă și