Sunteți pe pagina 1din 26

Laborator 2 Introducere in MS SQL Server 2005

1. Versiuni de licentiere SQL Server 2005 SQL Server Enterprise Edition

SQL Server 2005 Enterprise Edition este o platforma care intruneste toate cerintele necesare procesarii trazanctiilor online si aplicatiilor de data warehousing. SQL Server Standard Edition Standard Edition este o platforma de management si analiza a datelor dedicata oragnizatiilor de dimensiuni mici si medii. Include functionalitatile necesare pentru solutii e-commerce, data warehousing si line-of-business. Are solutii integrate de business intelligence. SQL Server Workgroup Edition Workgroup Edition este o solutie de management al datelor dedicata organizatiilor mici, care au nevoie de o baza de date fara limitari in ceea ce priveste dimensiunea si numarul de utilizatori. Poate fi folosit drept front-end pentru un server Web sau pentru a gestiona operatiunile derulate in cadrul unui departament al unei companii. Contine toate functionalitatile de baza ale SQL Server si se poate face upgrade la versiunile Standard sau Enterprise. SQL Server Express Edition SQL Server 2005 Express Edition este urmasul MSDE, si este o versiune gratuita a SQL Server 2005. Este usor de folosit si poate fi usor integrata in aplicatii. SQL Server Developer Edition Developer Edition permite dezvoltatorilor sa contruiasca si sa testeze orice tip de aplicatie cu SQL Server pe platoforme pe 32 biti, ia64 si 64 de biti. Include toate functionalitatile Enterprise Edition, dar este licentiat doar pentru dezvoltare, testare si utilizare demonstrativa. Fiecare licenta SQL Server Developer Edition da dreptul unui singur utilizator sa foloseasca acest sofware pe oricate sisteme doreste. Daca se doreste folosirea pentru SQL Server Developer Edition pentru

uz comercial, se poate face upgrade la verisunea Enterprise Edition. SQL Server Compact Edition

SQL Server Compact este o versiune gratuita a motorului de baze de date, care permite dezvoltatorilor sa contruiasca aplicatii mobile sau Windows Desktop robuste, capabile sa ruleze pe toate platformele Windows: Windows XP, Vista, Pocket PC, si Smartphone.

2. Componente SQL Server 2005 Pentru a selecta componentele care doriti sa fie instalat, folositi pagina Feature Selection din SQL Server Installation Wizard. Niciuna dintre aceste component nu este selectata implicit pentru instalare.

Componente Descriere server SQL Server Include motorul de baze de date, elementrul central pentru Database stocarea, procesarea si securizarea datelor, replicare, cautare fullEngine text, instrumente pentru gestionarea datelor XML si relationale. Analysis Services Include instrumente pentru crearea si gestionarea online analytical processing (OLAP) si pentru aplicatii de data mining. Include component server si client pentru crearea si gestionarea rapoartelor in format tabular, matriceal si grafic. Reporting Services este o plaforma extensibila care poate fi utilizata pentru aplicatii de raportare. Notification Services este o platform pentru dezvoltarea aplicatiilor care trimit periodic informatii personalizate abonatilor, pe diferite dispozitive. Integration Services este un de instrumente grafice si obiecte programabile folosite pentru mutarea, copierea si modificarea datelor.

Reporting Services

Notification Services

Integration Services

Componente Descriere client Componente Instaleaza component pentru comunicarea intre client si server,

de conectare Instrumente de gestiune SQL Server Management Studio 1

precum si biblioteci pentru DB-Library, ODBC si OLE DB. Descriere SQL Server Management Studio (SSMS), nou in Microsoft SQL Server 2005, este un mediu integrat pentru accesarea, configurarea, gestionarea, administrarea si dezvoltarea tutror componentelor SQL Server. SSMS reuneste trasaturile din Enterprise Manager, Query Analyzer, si Analysis Manager, din versiunile precedente ale SQLServer.

SQL Server SQL Server Configuration Manager asigura managementul Configuration configurarilor pentru serviciile SQL Server, protocoale server si Manager protocoale client. SQL Server Profiler SQL Server Profiler ofera o interfata grafica pentru monitorizarea unei instante Database Engine sau Analysis Services.

Database Database Engine Tuning Advisor ajuta la crearea unui set optim Engine Tuning de indecsi, vederi indexate si partitii. Advisor 1 Internet Explorer 6.0 SP1 este necesar pentru instalarea SQL Server Management Studio. Instrumente de dezvoltare Descriere

Business Intelligence Development Studio este un mediu de Business Intelligence dezvoltare integrat pentru solutii Analysis Services, Development Studio Reporting Services si Integration Services.

Documentatie si Descriere exemple SQL Server Books Documentatie pentru SQL Server 2005. Online SQL Server Samples Modele de cod pentru Database Engine, Analysis Services, Reporting Services siIntegration Services.

3. Crearea bazei de date Instructiunea folosita pentru crearea unei baze de date este: CREATE DATABASE nume_baza_de_date In MS SQL Server 2005, bazele de date se pot crea in mod vizual. Pasii care trebuie urmati sunt:

Din Object Explorer, click dreapta pe Databases New Database:

Se va deschide urmatoarea fereastra, in care completam numele noii baze de date

In zona Database name introducem numele bazei de date (Companie) si apasam OK. Vom regasi baza de date Companie in lista de baze de date din Object Explorer

Pasul urmator consta in crearea tabelelor.

4. Crearea tabelelor Instructiunea folosita pentru crearea unei baze de date este: CREATE TABLE nume_tabel ( nume_camp1 data_type, nume_camp2 data_type, nume_camp3 data_type, .... )

Restrictii SQL O buna definire a unei baze de date trebuie sa surprinda relatiile intre tabele si restrictiile privind valorile posibile pentru anumite campuri. Acest obiectiv este atins prin specificarea restrictiilor de integritateimpuse structurilor de date tabelare. Tipuri de restrictii:

PRIMARY KEY

Restrictia precizeaza faptul ca un camp sau o asociatie de campuri reprezinta o cheie primara. Un tabel are o singura cheie primara !

UNIQUE

Restrictie impusa oricarui camp prin care nu se accepta valori diferite de NULL identice. Campului cheie primara i se asociaza implicit o constrangere UNIQUE. FOREIGN KEY

Restrictia precizeaza faptul ca un camp este o cheie externa, fiind cheie primara a altui tabel.

NOT NULL

Restrictia precizeaza faptul ca valoare campului nu poate fi NULL pentru nici o inregistrare. CHECK

Restrictie privind valorile posibile ale unui camp, ce poate fi atasata unui camp sau mai multor campuri. DEFAULT

Restrictia DEFAULT este folosita pentru a introduce o valoare implicita (defaullt) pentru un camp. Aceasta valoare va fi adaugata automat in toate inregistrarile, daca nu se specifica explicit alta valoare.

In MS SQL Server 2005, tabelele se pot crea in mod vizual. Pasii care trebuie urmati pentru crearea tabelului Angajati sunt:

In Object Explorer -> Databases, expandam baza de date Companie Click dreapta pe Tables -> New Table In zona de lucru va fi afisata structura specifica pentru crearea unui tabel. Introducem numele campurilor tabelului Angajati si stabilim tipul de date pentru fiecare dintre ele. Pentru a salva tabelul, apasam Save. Se va deschide urmatoarea fereastra:

Introducem numele tabelului si apasam OK. Tabelul va fi salvat in baza de date Companie.

Adaugarea constrangerilor PRIMARY KEY Campul cheie primara este AngajatID (camp de tip integer). Pentru a-i adauga aceasta constrangere se procedeaza astfel : Click dreapta pe campul AngajatID -> Set Primary Key

Pentru a transforma campul AngajatID in camp care se autoincrementeaza, se procedeaza astfel :

Selectam campul corespunzator In zona Column Properties identificam Identity Specification si expandam Selectam Yes in dreptul optiunii Is Identity Folosim Identity Increment pentru a specifica cu cat se va autoincrementa la fiecare noua inregistrare Folosim Identity Seed pentru a specifica valoarea de la care porneste numaratoarea

FOREIGN KEY Campurile FOREIGN KEY din tabelul Angajati sunt SupervizorID si DepartamentID, insa acest lucru va fi marcat in baza de date in momentul in care stabilim relatiile intre tabelul Angajati si tabelele unde acestea sunt chei primare.

NOT NULL Campurile pentru care este obligatoriu sa introducem valori pentru fiecare inregistrare sunt :
-

Nume Prenume CNP Strada Numar Oras Judet Salariu

Pentru aceste campuri vom debifa optiunea Allow Nulls. Pentru campul cheie primara aceasta optiune este debifata automat.

UNIQUE Vom adauga contrangere UNIQUE campului CNP. Pasii sunt urmatorii : Click dreapta pe campul CNP -> Indexes/Keys

Se va deschide o noua fereastra numita Indexes/Keys

In aceasta fereastra, apasam Add Apoi, mergem in zona General -> Columns si selectam campul pentru care vrem sa impunem constrangerea (CNP)

Tot in zona General -> Type, selectam Unique key

Apasam Close.

CHECK Sexul va fi marcat prin M sau F char(1). Pentru a preveni introducerea altor valori pentru acest camp, vom folosi o contragere de tip CHECK in care vom specifica ca singurele valori acceptate sunt M sau F. Vom proceda astfel : Click dreapta pe campul Sex -> Check Constraints

Se va deschide o noua ferestra numita Check Constraints In aceasta ferestra mergem la General -> Expression Se va deschide o noua ferestra in care putem formula constrangerea

Introducem expresia din figura de mai sus pentru constragerea pe care dorim sa o impunem campului Sex

Apasam OK.

DEFAULT Vom utiliza constrangerea DEFAULT pentru campul Sex, caruia ii vom seta valoarea F drept valoare implicita. Selectam campul Sex In zona Column Properties identificam Default Valur or Binding Setam valoarea F ca default

EXERCITII 1. Creati tabelul Departamente avand campurile : DepartamentID, ManagerID, NumeDepartament, CodDepartament. Tabelul va avea urmatoarele constrangeri: PRIMARY KEY: DepartamentID (cu autoincrementare) FOREIGN KEY: ManagerID NOT NULL: NumeDepartament, CodDepartament UNIQUE: CodDepartament

2. Creati tabelul Proiecte avand campurile: ProiectID, DepartamentID, NumeProiect, CodProiect, Buget, DataLimita. Tabelul va avea urmatoarele constrangeri: PRIMARY KEY: ProiectID (cu autoincrementare)

FOREIGN KEY: DepartamentID NOT NULL: NumeProiect, CodProiect UNIQUE: CodProiect

3. Creati tabelul Intretinuti avand campurile : IntretinutID, AngajatID, Nume, Prenume, Sex, DataNasterii. Tabelul va avea urmatoarele constrangeri: PRIMARY KEY: IntretinutID (cu autoincrementare) FOREIGN KEY: AngajatID NOT NULL: Nume, Prenume CHECK: Sex (M, F) DEFAULT: Sex (F)

4. Creati tabelul de legatura AngajatiProiecte avand campurile : AngajatID, ProiectID, NrOreSaptamana. Tabelul va avea urmatoarele constrangeri: PRIMARY KEY: AngajatID + ProiectID (cheie primara compusa) FOREIGN KEY: AngajatID, ProiectID NOT NULL: NrOreSaptamana

5. Crearea relatiilor intre tabele In MS SQL Server 2005, relatiile intre tabele se pot crea in mod vizual. Pentru a stabili relatia intre tabelele Angajati si Departamente (cea care indica apartenenta fiecarui angajat la un anumit departament), urmam secventa de pasi: Click dreapta in zona de lucru a tabelului unde se introduce cheie externa -> Relationships

Se va deschide o noua fereastra numita Foreign Key Relationships

Apasam Add pentru a adauga o noua relatie

In zona General -> Table And Columns Specification dam click pe butonul cu 3 puncte pentru a selecta campurile prin intermediul carora se stabileste relatia. Se deschide o noua ferestra numita Tables and Columns In aceasta fereastra specificam ce tabel intra in relatie cu tabelul Angajati, precum si campurile care definesc relatia. In cazul Angajati Departamente, relatie de tip 1:N, cheia primara a tabelului Departamente este introdusa in structura tabelului Angajati, unde devine cheie externa. Astfel, in zona Primary Key Table vom selecta tabelul Departamente, iar dedesupt selectam campul cheie primara DepartamentID. In zona Foreign Key Table este deja selectat tabelul Angajati (nu poate fi modificat). Noi vom selecta campul care cheie externa provenit din tabelul Departamente, respectiv DepartamentID.

Apasam OK.

Nota: Numele relatiei este generat automat pe baza tabelelor selectate, insa poate fi modificat.

Integritate referentiala Integritatea referentiala este proprietatea bazei de date care garanteaza ca oricare valoare a unei chei straine se regaseste printre valorile cheii corespunzatoare din relatia referita. In MS SQL Server 2005, in fereastra Foreign Key Relationships, putem specifica ce se va intampla cu inregistrarile corespunzatoare din tabelul copil la stergerea sau modificarea unei inregistrari din tabelul parinte. Astfel, in zona INSERT and UPDATE Specification, exista categoriile Delete Rule si Update Rule.

Pentru fiecare dintre cele 2 categorii exista urmatoarele optiuni disponibile: No Action: nu permite stergerea sau modificarea in tabelul parinte atata timp cat exista in tabelul copil inregistrari care referentiaza acea cheie primara. Cascade: permite stergerea sau modificarea inregistrarilor din tabelul parinte si, dupa caz, actioneaza astfel: o La stergere: sterge toate inregistrarile din tabelul copil care referentiaza inregistrasrea stearsa din tabelul parinte o La modificare: modifica automat valorile campului cheie straina Set NULL: asigneaza valoarea NULL campurilor cheie straina care referentiaza inregistrarea din tabelul parinte care a fost streasa sau modificata Set Default: asigneaza o valoarea default campurilor cheie straina care referentiaza inregistrarea din tabelul parinte care a fost streasa sau modificata

EXERCITII 1. Creati restul de relatii intre tabelele bazei de date Companie. 2. Identificati constragerile de integritate referentiala si introduceti-le in baza de date.

6. Popularea tabelelor Comanda SQL pentru introducerea unei inregistrari noi intr-un tabel este urmatoarea: INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...) sau INSERT INTO table_name VALUES (value1, value2, value3,...)

In MS SQL Server 2005, popularea tabelelor se poate face si in mod vizual, astfel: In zona Object Explorer, expandam baza de date Companie Expandam Tables Click dreapta pe tabelul in care dorim sa introducem date -> Open Table

In zona de lucru va aparea structura tabelului selectat (impreuna cu datele existente). Datele noi se introduc in campurile aferente.

Nota: Campul cheie primara AngajatID este generat automat de catre MS SQL Server 2005 (este de tip Identity).

EXERCITII 1. Populati tabelele bazei de date Companie, tinand cont de restrictiile impuse.

7. Erori posibile Incalcarea restrictiei NOT NULL In tabelul Angajati, campul Salariu nu accepta valori NULL. Daca incercam sa introducem o valoare NULL in acest camp, vom primi urmatorul mesaj de eroare:

Incalcarea restrictiei UNIQUE In tabelul Angajati, campul CNP este definit cu restrictia UNIQUE. Daca incercam sa introducem o valoare duplicat in acest camp, vom primi urmatorul mesaj de eroare:

Incalcarea restrictiei CHECK In tabelul Angajati, campul Sex este definit cu restrictia CHECK astfel incat sa accepte doar valorile M sau F. Daca incercam sa introducem o alta valoare in acest camp, vom primi urmatorul mesaj de eroare:

Incalcarea restrictiei de integritate pentru FOREIGN KEY In tabelul de legatura AngajatiProiecte, campul AngajatID este cheie straina.Daca incercam ca in AngajatiProiecte sa introducem o valoare a AngajatID care nu exista in tabelul Angajati, vom primi urmatorul mesaj de eroare:

In tabelul Angajati, nu exista AngajatID = 4