Proiect Baze de Date Necula [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

PROIECT

GESTIUNEA UNUI MAGAZIN GSM Student: Necula Radu Adrian Anul 1, Informatica Universitatea din Pitesti

Introducere SQL: SQL este limbajul standard pentru accesarea și modificarea bazelor de date. Întrebuințări SQL:  SQL poate executa interogări la baza de date  SQL poate extrage date din baza de date  SQL poate insera înregistrări în baza de date  SQL poate actualiza înregistrări în baza de date  SQL poate crea noi baze de date  SQL poate crea noi tabele în baza de date  SQL poate crea proceduri stocate, funcții, triggere  SQL poate crea vizualizări în baza de date  SQL poate stabili permisiuni asupra entităților din baza de date SQL este un standard … DAR …  Cu toate că SQL este standard ANSI, există mai multe versiuni ale limbajului SQL  Totuși, cel puțin comenzile principale (SELECT, UPDATE, INSERT, DELETE) sunt permise într-un mod aproape unitar de toate implementările, pentru compatibilitate.

Introducere baze de date: Prin bază de date înţelegem o colecţie de date elementare şi interdependente, structurate şi organizate astfel încât să fie accesibile unei comunităţi de utilizatori.

Bazele de date sunt concepute pentru a prelucra volume mari de informaţii. Organizarea datelor în unul sau mai multe fișiere stocate în memoria externă este în concordanță cu această definiție. Conceptul de bază de date a apărut în 1964 în cadrul primului raport CODASYL prezentat la lucrările unei conferinţe pe probleme de limbaje de gestiune a datelor “Development and Management of Computer – centered datebase”. La această conferinţă a fost lansată ideea organizării datelor prin intermediul unui fişier de descriere globală, numit dicţionar de date care are menirea de a asigura independenţa programelor faţă de date şi a datelor faţă de programe . Baza de date conţine nu numai datele operaţionale ale organizaţiei, ci şi o descriere a acestora. De aceea ea este definită şi ca o colecţie autodescrisă de înregistrări integrate. Această descriere a datelor este cunoscută sub denumirea de catalog de sistem sau dicţionar de date sau meta-date (date despre date). Natura autodescriptivă a bazelor de date este cea care determină independenţa program-date. Accesul utilizatorilor la informaţiile despre structura unei baze de date se realizează prin intermediul dicţionarului de date. O bază de date SQL Server este compusă din trei tipuri de fişiere: un fişier cu extensia .mdf, zero sau mai multe fişiere cu extensia .ndf şi unul sau mai multe fișiere cu extensia .ldf În fişierul cu extensia .mdf sunt stocate obiectele bazei de date precum tabelele, indecșii, vederile etc. împreună cu definiţiile lor. Fişierele cu extensia .ndf sunt fişiere secundare ce conţin numai date, iar fişierul cu extensia .ldf conţine jurnalul de tranzacţii. Orice bază de date are asociat un jurnal de tranzacţii. Actualizarea unei înregistrări a bazei de date presupune memorarea în jurnalul de tranzacţii a conţinutului înregistrării dinainte şi după actualizare. Jurnalul de tranzacţii este folosit pentru restaurarea bazei de date în situaţia în care apare o eroare ce necesită anularea sau reluarea unor operaţii înregistrate. Incepând cu versiunea SQL 7.0, a fost introdus conceptul de nume logic. Există câte un nume logic pentru fiecare fisier .mdf, .ndf, .ldf. Implicit, pentru

fisierul .mdf, numele logic coincide cu numele fișierului fizic(fără extensie) iar pentru fisierul .ldf numele logic coincide cu numele fișierului fizic(fără extensie) completat cu _log. Numele logice sunt utilizate de funcțiile de administrare ale sistemului SQL Server pentru identificarea fișierelor și nu trebuie neapărat schimbate când se schimbă denumirea bazei de date. Tema aleasă pentru proiect: Am creat o bază de date referitoare la gestiunea unui magazin GSM. Proiectul este realizat în Microsoft® SQL Server® 2012 Express/86 biti. Baza de date conține informații referitoare la produsele aflate în magazin ( tProduse ), la angajații din magazin ( tAngajați ), la clienți ( tClienți ), la bonurile eliberate ( tBonuri ) și la detalii bonuri eliberate ( tDetaliiBon ).

Structura tabelelor: Reguli de gestiune: -

Un bon emis pentru un singur client. Unui client îi pot fi emise mai multe bonuri. Un bon face referire la mai multe produse. Un produs este obiectul mai multor bonuri.

Create table tAngajați

( CodAngajat char(10) primary key, Nume varchar(25) not null, Prenume varchar(30) not null, CNP char(13) not null unique, DataNasterii as convert (smalldatetime,substring(cnp,2,6),12), CodDepartament char(10) not null, CodFunctie char(6) not null, DataAngajarii smalldatetime not null, Salariu int not null )

create table tClienti

(

CodClient char(10) primary key, NumeClient varchar(25) not null, CodJudet char(2) not null, Localitate varchar(10) not null, Strada varchar(10) not null, RestAdresa varchar(25) not null )

create table tBonuri

( NrBon char(10) primary key, DataBon smalldatetime default getdate(), CodClient char(10) not null foreign key references tClienti(CodClient), CodAngajat char(10) not null foreign key references tAngajati(CodAngajat) ) create table tProduse

( CodProd char(10) primary key, DenProd char(25) not null, UM char(6) not null, pret decimal(7,2) not null ) create table tDetaliiBon

(

NrBon char(10) constraint fk_NrFact foreign key references tBonuri(NrBon), CodProd char(10) constraint fk_CodProd foreign key tProduse(CodProd), Cantitate decimal(8,3) not null, constraint pk_DetFact primary key(NrBon,CodProd) )

Crearea bazei de date

Utilizarea bazei de date

Crearea tabelelor

Inserarea datelor în tabel

Extragerea de date

Filtrarea datelor

Actualizarea datelor în tabel

Ștergerea datelor din tabel

Regăsirea datelor dintr-o bază de date

Sortarea datelor după un anumit criteriu

Combinarea instrucțiunilor SELECT

Determinarea celei mai mari valori dintr-o coloană

Determinarea celei mai mici valori dintr-o coloană

Calculul valorii medii pe coloană numerică

Gruparea datelor

 Constrângeri  Se folosesc pentru a limita tipul datelor care pot ajunge în tabelă  Se pot specifica la crearea tabelei (în instrucțiunea CREATE TABLE) sau după ce a fost creată tabela (cu instrucțiunea ALTER TABLE)  NOT NULL  UNIQUE  PRIMARY KEY  FOREIGN KEY  CHECK  DEFAULT  Constrângerea NOT NULL  Implicit o tabelă poate conține în câmpurile sale valori NULL  NOT NULL va determina ca această valoare să nu fie acceptată în coloana asupra căreia se aplică constrângerea

 Cu această constrângere nu se vor putea adăuga înregistrări sau nu se vor putea actualiza fără a specifica o valoarea pentru câmpul respectiv  CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )  Constrângerea UNIQUE  Folosită asupra unei coloane în care nu se vor permite date duplicate  UNIQUE și PRIMARY KEY oferă garanția de unicitate pentru o coloană sau mulțime de coloane  O constrângere de tip PRIMARY KEY are întotdeauna definită și o constrângere UNIQUE  Putem avea mai multe constrângeri UNIQUE dar o singură constrângere PRIMARY KEY Constrângerea UNIQUE - exemplu  CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255),

Address varchar(255), City varchar(255), UNIQUE (P_Id) )  Constrângerea UNIQUE – cu ALTER TABLE  Definirea unei constrângeri de unicitate după ce tabela a fost creată  MySQL / SQL Server / Oracle / MS Access  ALTER TABLE Persons ADD UNIQUE (P_Id)  ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)  Eliminarea unei constrângeri  MySQL  ALTER TABLE Persons DROP INDEX uc_PersonID

 Constrângerea PRIMARY KEY  Identifică în mod unic fiecare înregistrare din tabelă  Cheia primară trebuie să conțină valori unice  Nu poate conține valoarea NULL  Fiecare tabelă trebuie să aibă o cheie primară și numai una  Crearea unei constrângeri de cheie primară după crearea tabelei

 ALTER TABLE Persons ADD PRIMARY KEY (P_Id)  În acest caz coloanele ce fac parte din cheia primară trebuie să fi fost definite anterior astfel încât să nu accepte valoarea NULL

 Instrucțiunea ALTER TABLE  Folosită pentru a adăuga, modifica, șterge, coloane dintr-o tabelă  Adăugarea unei coloane  ALTER TABLE table_name ADD column_name datatype  Ștergerea unei coloane  ALTER TABLE table_name DROP COLUMN column_name  Schimbarea tipului de date pentru o coloană  ALTER TABLE table_name ALTER COLUMN column_name datatype  Eliminarea coloanei adăugate anterior  ALTER TABLE Persons DROP COLUMN DateOfBirth

 Date calendaristice  Forma datei pe care încercăm să o inserăm trebuie să se potrivească cu formatul coloanei de tip dată din tabelă

 Atunci când apare și partea de timp/oră lucrurile se complică  Există o serie de funcții predefinite pentru procesarea informațiile legate de dată/oră

 NULL  Reprezintă date lipsă/necunoscute/inaplicabile  Implicit o coloană poate conține valoarea NULL  Operatori pentru NULL:  IS NULL  IS NOT NULL  Când valoarea unei coloane este opțională putem adăuga o înregistrare sau o putem actualiza fără a specifica o valoare pentru coloana respectivă  În acest caz se va salva valoarea NULL  Valoarea NULL este tratată diferit față de restul valorilor  Se folosește ca un marcator pentru date necunoscute/inaplicabile  NULL și 0 (zero) nu sunt echivalente sau comparabile

 Extragem înregistrările cu adresa NULL SELECT LastName, FirstName, Address FROM Persons WHERE Address IS NULL

 Extragem înregistrările cu adresa completată

SELECT LastName, FirstName, Address FROM Persons WHERE Address IS NOT NULL

 Subinterogarea În SQL, subinterogările ne permit să aflăm o informaţie care ne este necesară pentru a obţine informaţia pe care o vrem. O subinterogare (subquery) este o instrucţiune SELECT care este inclusă în clauza unei alte instrucţiuni SELEC Subinterogarea poate fi plasata în una din următoarele clauze: WHERE HAVING FROM Subinterogarea se execută prima dată, iar rezultatul este folosit pentru obţinerea rezultatului de către interogarea principală (outer query). Reguli de folosire a subinterogarilor O subinterogare se pune între paranteze rotunde O subinterogare este plasata în partea dreaptă a unei condiţii de comparare Interogarea exterioară şi subinterogarea-ul pot prelua date din tabele diferite Într-o instrucţiune SELECT se poate folosi o singură clauză ORDER BY şi, dacă se foloseşte, trebuie să fie ultima clauza a interogării principale. Un subquery nu poate avea propria clauză ORDER BY. Singura limită a numărului de interogări este dimensiunea buffer-ului folosit de interogare.

Dacă subinterogarea returnează null sau nu returneaza nici o linie, atunci interogarea exterioară nu va returna nimic. Sunt două tipuri de subinterogări(subqueries): 1) single-row subqueries – care folosesc operatorii single-row: >,=,>=,