Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica

Sql


Qdidactic » stiinta & tehnica » informatica » sql
Introducere in SQL Server - tehnologia bazelor de date - tab-ul Indexes/Keys



Introducere in SQL Server - tehnologia bazelor de date - tab-ul Indexes/Keys


Laborator 1 – Introducere in SQL Server

Tipuri de date in SQL Server

Principalele tipuri de date definite in SQL Server sunt urmatoarele:

NVarChar/VarChar— String de lungime variabila. Campurile VarChar pot contine maxim 255 caractere, cele de tip nVarChar putand atinge 64KB caractere in lungime. De regula este utilizat tipul nVarChar. Avantajul acestui tip de date rezida in faptul ca utilizeaza doar spatiul necesar pentru stocarea datelor. Un camp nul nu va ocupa spatiu deloc.

Char/nChar—Acestea reprezinta campuri text cu lungime fixa. Daca lungimea textului stocat este mai mica decat lungimea predefinita pentru campul respectiv, spatiul ramas va fi completat automat cu spatii goale.

Int/BigInt/SmallInt/TinyInt— Tipuri de date intregi. Int este stocat pe 4 octeti, BigInt pe 8 octeti, SmallInt pe 2 octeti, iar TinyInt pe 1 octet.

Bit— Campurile de tip Bit sunt campuri true/false.Un camp de tip Bit poate lua doar valorile 0 sau 1. Nu pot fi utilizate pentru creearea indecsilor. Daca aveti nevoie sa indexati o valoare true/false, utilizati un camo Char(1) si definiti-l ca avand valorile 0 sau 1.

Decimal/Numeric— Numere zecimale. Un numar zecimal este un numar intreg urmat de un numar fix de zecimale. Difera de un numar real prin faptul ca numerele reale nu au parte intreaga.



Money— Tip numeric cu 4 zecimale.

Float/Real—Fractii pozitive sau numere reale. Sunt utilizate in special in aplicatiile stiintifice. Nu este recomandat sa utilizati acest tip de date pentru a retine informatii financiare sau cantitati. Utilizati tipuri de date intregi sau numeric pentru acest scop. Este posibil ca doua numere reale care par a avea valori egale sa pice testele de egalitate deoarece nu reprezinta acelasi numar.

DateTime/Smalldatetime—Stocheaza valori de tip data/ora.

Text/nText— Pointer catre o cantitate mare de date de tip text. Dimensiunea textului este limitata doar de spatiul disponibil pe disc.

Image/nImage/Binary— Pointer care o cantitate mare da date binare, cum ar fi poze sau sunete. Dimensiunea este limitata doar de spatiul disponibil pe disc.

TimeStamp— Camp special utilizat de sistem pentru a marca momentele de timp in mod secvential.

UniqueIdentifier— Valoare speciala ce stocheaza un GUID (globally unique identifier). Este utilizat pentru a asigura unicitatea inregistrarilor.

Coloana Length este disponibila doar in cazul sirurilor de caractere si a campurilor numerice. Stabileste dimensiunea maxima a datelor ce vor popula tabelul. Coloana Allow Nulls stabileste daca sunt admisa sau nu valori NULL in campul respectiv.

Partea inferioara a ecranului contine diverse atribute ale fiecarui camp ce pot fi stabilite pe langa tipul de date.

Description— Puteti introduce o descriere a campului. Este recomandat sa utilizati acest camp intrucat va va fi de folos cand veti documenta structura bazei de date.

Default value— Valoarea 'default' pentru orice camp este Null. Nu este nicio problema daca ati definit campul ca acceptand valori NULL. In caz contrar, este recomandat sa definiti o valoare default pentru a putea adauga inregistrari in tabel fara a retine care campuri nu permit valori NULL. Putei folosi si o precedura stocata sau functie pentru a defini valoarea default.Exista o situatie in care TREBUIE sa definiti o valoare default: atunci cand modificati structura unui tabel existent prin adaugarea unui camp si il definiti Not Null (nu accepta valori NULL). Intrucat SQL Server trebuie sa poata stoca o valoare nenula in campul respectiv, trebuie sa stabiliti o valoare default cu care sa fie incarcate valorile acestui nou camp in tabel.

Precision si scale— Aceste doua atribute sunt active doar pentru tipurile de date numeric si decimal. Precizia este numarul maxim de digiti permis. Scala defineste numarul de zecimale.O scala de 0 semnifica inexistenta zecimalelor.


Identity, identity seed, identity increment— Aceste atribute sunt active doar pentru tipurile de date intregi. Un camo identity este utilizat pentru a identifica in mod unic fiecare inregistrare din tabel. Prin definitie, nu are nicio alta semnificatie. Puteti defini campuri identity care atribuie automat urmatoarea valoare incrementala cand o noua inregistrare este introdusa in tabel. Atributul Identity ii spune SQL Server ca doriti ca respectivul camp sa fie un camp de identificare unica a inregistrarilor. Identity seed este numarul de la care doriti sa inceapa numerotarea inregistrarilor. Increment specifica pasul de incrementare. Este posibila definirea unui singur camp identity pentru fiecare tabel. Ca practica generala se recomanda setarea unui astfel de camp drept cheie primara a tabelului.

IsRowGUID— Acest atribut este activ doar la campurile definite drept Unique-Identifiers si stabileste faptul ca acea coloana este unica in mod global pentru inregistrarea respectiva. Nicio alta inregistrare din orice baza de date din lume nu va avea acel GUID. Aceasta proprietate este utilizata in special  la replicarea bazelor de date.

Formula— Permite definirea campurilor obtinute in urma unor calcule. Este similar cu o coloana calculata din

Collation— La SQL Server 2000 si versiuni ulterioare. Reprezinta secvente de sortare. Este activ doar la campurile de tip sir de caractere.

Tab-ul Indexes/Keys

Indecsii sunt structuri de date aditionale utilizate pentru a asigura un acces rapid la date. Indecsii pot fi unici, fiecare valoare a campului fiind unica pentru inregistrarea pe care o reprezinta, sau nonunici, mai multe inregistrari putand avea aceeasi valoare pentru campul pe baza caruia este creat indexul.

Pentru a creea un index, dati click pe butonul New. Sistemul va defini automat un nume pentru index. Apoi selectati primul camp pentru index. Puteti selecta oricat de multe campuri doriti, insa trebuie tinut cont de faptul ca actualizarea va fi cu atat mai greu de facut cu cat indexul este mai mare.

Apoi decideti daca indexul va fi unic. Un index unic poate avea cel mult o inregistrare cu o anumita valoare. In mod predefinit, cheia primara este un index unic. Daca vreti sa va asigurati ca fiecare inregitrare va avea valori diferite pentru un camo anume, folositi o constrangere de unicitate.

Ignore Duplicate Key spune SQL Server sa nu intrerupa o tranzactie atunci cand introducerea unei inregistrari ar creea chei duplicate. Inregistrarea nu va fi introdusa in baza de date, insa va fi posibila efectuarea altor comenzi din tranzactie. Altfel, SQL Server va efectua roll-back pentru tranzactia respectiva.

Tab-ul Relationships

Din cadrul acestui tab puteti crea relatii (legaturi) intre tabele si puteti asigura integritatea referentiala. Este important sa remarcam diferenta dintre cele doua notiuni mentionate mai sus:

Relatiile descriu legaturile ce exista intre tabele folosind cheile externe

Integritatea referentiala spune ce actiuni au loc in momentul in care un camp de legatura intre tabele este introdus in table sau actualizat. Let's look at these in more detail.

Relatii si chei externe

Inainte de a impune integritate referentiala bazei de date trebuie sa stabilim relatiile dintre tabele. Doua sau mai multe tabele pot fi relationate daca impartasesc atribute comune. De exemplu, daca avem un tabel care descrie departamentele diontr-o companie si un tabel care descrie angajatii companiei. Desigur, mai multi angajati vor fi afiliati aceluiasi departament. Sa presupunem ca atribuim cate o valoare unica pentru a identifica fiecare departament al companiei. O numim DepartamentID. Ulterior, stocand DepartamentID pentru fiecare inregistrare aferenta unui angajat, vom crea o legatura intre fiecare angajat si departamentul in cadrul carui isi desfasoara activitatea. DepartamentID este cheie primara in tabelul Departamente si cheie externa in tabelul Angajati.

Tipuri de relatii

Exista trei categorii de relatii intre tabele:

One-to-one (1:1) — O inregistrare din tabelul A este corelata cu o singura inregistrare din tabelul B. In functie de setarile pentru integritatea referentiala este posibil ca o inregistrare din tabelul A sa nu fie corelata cu niio inregistrare din tabelul B sau invers.

One-to-many (1:N) — Pentru fiecare inregistrare din tabelul A sunt 0 sau mai multe inregistrari in tabelul B care au aceeasi cheie externa

Many-to-many (N:N) — Pentru fiecare inregistrare din tabelul A sunt 0 sau mai multe inregistrari din tabelul B care au aceeasi cheie externa si pentru fiecare inregistrare din tabelul B sunt 0 sau mai multe inregistrari in tabelul S care au aceeasi cheie externa.

Modul de definire al contrangerilor de integritate referentiala va stabili daca este permis sa fie 0 inregitrari in zona de “many” a unei relatii de tip one-to-many si many-to-many.

Integritate referentiala

Am definit integritatea referentiala ca fiind regulile utilizate de SQL Server la introducerea sau actualizarea inregistrarilor din tabele corelate. Setarile ce pot fi folosite sunt urmatoarele:

Check existing data on creation— Aceasta optiune spune SQL Server sa valideze regulile de integritate referentiala in momentul cand relatia este salvata. Atunci cand se lucreaza cu tabele mari aceata validare poate dura mult.

Enforce relationship for replication— Relatia va fi impusa la replicarea datelor. Daca nu folositi replicarea, aceasta optiune nu va va preocupa. Daca folositi replicarea

Enforce relationship for INSERTs and UPDATEs— Aceasta optiune spune SQL Server sa verifice relatia la introducerea de inregistrari sau la actualizarea inregistrarilor existente. Daca o cheie externa lipseste sau nu corespunde unei valori din tabelul corelat, introducerea sau actualizarea datelor va esua si SQL Server va afisa un mesaj de eroare. Daca aceasta optiune nu este selectata, SQL Server va permite introducerea sau actualizarea datelor cu valori invalide pentru cheia externa. Cand aceasta optiune este selectata, urmatoarele doua elemente sunt active:

Cascade update related fields—Daca un camp relationat este modificat in partea  `one` a unei relatii de tip one-to-many, toate campurile relationate din partea `many` a relatiei vor fi actualizate automat cu noua valoare. Aceasta operatiune poate consuma cauza o scadere a performantelor in cazul unui numar mare de tabele.

Cascade delete related records— Daca o inregistrare este stearsa in partea `one` a unei relatii de tip one-to-many, toate inregistrarile din tabelul relationat cu aceeasi cheie externa (cheia primara a inregistrarii sterse) vor fi de asemenea sterse. Daca aceasta optiune este neselctata, SQL Server va afisa un mesaj de eroare in incercati sa stergeti o inregistrare care are inregistrari corelate in partea `many` a relatiei.


Valorile NULL

Null inseamna nespecificat. Nu inseamna 0, un string gol sau caracterul ASCII zero.

Ce inseamna nespecificat? Inseamna ca valoarea respectiva nu este cunoscuta. Deci, un camp din baza de date care este null are o valoare necunoscuta.

Tinand cont de definitie, rezultatul oricarei operatii cu o valoare null va fi null.

1 + null = null.

2X + 3Y * 12 / null = null

'Numele meu este ' & null = null

Constrangeri Check

Constragerile de tip Check sunt reguli care se aplica campurilor inainte ca acestea sa fie introduse in baza de date. De exemplu, puteti pune conditia ca valoarea unui camp sa  fie mai mica decat 100 sau ca un camp text sa nu contina spatii.


Expresia constrangere trebuie sa returzene o valoare adevarat/fals si nu poate contine expresii agregat.



Cerintele pentru constructia unei baze de date aferenta unei companii, numita COMPANIE sunt urmatoarele:


n      Compania are un numar de angajati organizati pe departamente, si urmareste realizarea unor proiecte.

n      Compania este organizata in departamente, fiecare departament are un nume, un numar de cod, un numar de angajati putind avea mai multe sedii. Fiecare departament are un manager.

n      Un departament este implicat in mai multe proiecte, fiecare din ele are un nume, un numar de cod, si o singura locatie.

n      Se pastreaza pentru fiecare angajat numele, numarul de cod (CNP), adresa, salariul, sex, data de nastere. Orice angajat este afiliat la un departament, insa poate lucra la mai multe proiecte ce nu sunt neaparat coordonate de acelasi departament. Trebuie deci stocat si numarul de ore alocate saptaminal pentru fiecare proiect. De asemenea, fiecare angajat are un sef direct, numit si supervizor.

n      Lista persoanelor in intretinerea fiecarui angajat este importanta intrucit este utilizata la calculul impozitului, lista contine numele, sex, data nasterii.



Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright