Pomoću ograničenja se kontrolišu tipovi podataka koje korisnik može da unese u tabelu. Postoji sedam osnovnih kategorija ograničenja:
Primarni ključ je kolona ili skup kolona pomoću kojih se jedinstveno identifikuje red tabele. Iako primarni ključ možete da definišete nad više polja, svaka tabela može imati samo jedan primarni ključ.
Svaka tabela baze podataka treba da ima primarni ključ. Osim toga, najbolje bi bilo da primarni ključ bude:
Definisanje primarnog ključa
U tabeli se na sledeći način definiše primarni kjuč:
Napomena: Ako se Primary key sastoji od dve kolone iz tabele, neophodno je selektovati obe kolone, i tek onda klikniti na Set Primary Key.
Slika 5.12.1 - Kreiranje primarnog ključa
Strani ključ se sastoji od kolone ili skupa kolona koje učestvuju u zavisnosti sa primarnim ključem tabele. Primarni kjluč se nalazi „jedan“ zavisnosti, dok se strani ključ nalazi na strani „više“ zavisnosti. Tabela može imati samo jedan primarni kluč, ali zato može imati više stranih ključeva. Strani ključ se odnosi na različite primarne ključeve drugih tabela. SQL Server traži vrednost stranog ključa u primarnom ključu tabele kako bi u tabelu dozvolio unošenje samo validnih podataka.
Primer kreiranja stranog ključa:
CREATE TABLE NazivSTRANOG_KLJUCA
(
ProductID int IDENTITY NOT NULL
PRIMARY KEY,
ProductCategoryID int NOT NULL
FOREIGN KEY REFERENCES SalesLT.ProductCategory(ProductCategoryID),
ProduktDate smalldatetime NOT NULL,
ProduktName nvarchar(50) NOT NULL
)
Naredba za informacije o ograničenjima:
exec sp_helpconstraint NazivSTRANOG_KLJUCA
Unapred definisana ograničenja su vrednosti koje SQL Server automatski upisuje u neka polja tabele. Unapred definisana vrednost može biti konstanta, vrednost Null ili funkcija. Sva polja, osim polja identiteta i polja sa oznakom vremena, mogu sadržati unapred definisane vrednosti, svaka kolona može imati jedno unapred definisano ograničenje. Unapred definisano ograničenje zadaje pomoću atributa polja slika 5.12.2.
Primeri: Izraz getdate(), Null, 6, ’ok’
Slika 5.12.2. - Unapred definisana ograničenje
U nekim situacijama ćete od korisnika zahtevati da u polje unese podatak. Ograničenje Not Null vam omogućava da zahtevate unošenje podataka. Da biste mogli da zadate ograničenje Not Null, morate ukloniti znak potvrde iz polja Allow Nulls slika 5.12.3.
Slika 5.12.3. - Tip polja imaju Null vrednost
Ograničenja provere limitiraju opseg vrednosti koje korisnik može da unese u kolonu. Za kolonu možete da zadate koliko god želite ovakvih ograničenja. SQL Server proverava ograničenja u redosledu u kojem ste ih zadali. Da biste zadali ograničenja ovakvog tipa, treba da uradite sledeće:
Slika 5.12.4 - Dijalog za zadavanje ograničenja
Kolone identiteta u tabeli obezbeđuju vrednost koja se automatski uvećava. Ovakvu kolonu koristite kao polje primarnog ključa u kojoj ne postoji kratak, stabilan i jednostavan prirodan primarni ključ. Kolone identiteta su najčešće tipa podatak int. Pomoću atributa polja kolonu označavate kao kolonu identiteta, za kolonu možete zadati početnu vrednost i način uvećavanja vrednosti. Početna vrednost (Identity Seed) je vrednost koja se prva upisuje u polje. Način uvećavanja vrednosti (identity increment) je vrednost koja se automatski dodaje vrednosti koja se uvećava. Na primer, polje identiteta za koje je zadata početna vrednost 100, a vrednost uvećavanja 5, ima vrednosti 100, 105, 110 itd.
Korišćenje kolona čije vrednosti se izračunavaju
Kolona čije se vrednosti izračunavaju je kolona koja se zasniva na podacima drugih kolona. SQL Server automatski ažurira kolonu čije vrednosti se izračunavaju kada se ažuriraju kolone na osnovu čijih podataka se izračunava vrednost kolone.
Primer:
Price * Quantity, (Price * Quantity) * (1-Discount),
FirstName ’ ’+Lastname ...
Koriščenje tipova podataka koje definišete
Tipovi podataka koje definišete vam omogućava da preradite tipove podataka koji postoje u SQL Server-u. Tipovi podataka koje definišete su kombinacija tipa podataka, veličine, Null ograničenja, unapred definisane vrednosti i pravila. Pošto definišete tip podataka, možete ga koristiti u svakoj tabeli koju budete pravili. Tip podataka se definiše na sledeći način:
Slika 5.12.5 - Kreiranje User-a
Koriščenje definisanog tipa podataka
Tip podataka koji ste definisali ćete zadati kao tip podataka polja tako što ćete uraditi sledeće:
Slika 5.12.6. - Definisanje tipa podataka
Prilikom definisanja tipa podataka možete da zadate pravilo. Ukoliko prilikom definisanja tipa podataka zadate pravilo, onda ga lako možete primeniti na polja za koja taj tip podataka zadajete. Prvo morate napraviti pravilo. Pravilo zatim birate iz spiska Rule koji se nalazi u okviru za dijalog User-Defined Data Type Properties.
Pravljenje i menjanje indeksa
Indeksi se koriste radi poboljšavanja performansi pretraživanja polja. Iako je bolje napraviti previše indeksa, nego premalo, ipak treba da znate da indeksi imaju nedostatke. Indeksi ubrzavaju pretraživanje, sortiranje i grupisanje podataka. Nedostatak indeksa jeste to što zauzimaju prostor na hard disku i usporavaju menjanje, dodavanje i uklanjanje podataka. Iako su u većini slučajeva prednosti indeksa takve da se nedostaci mogu zanemariti, ipak ne treba da pravite indekse za svako polje svake tabele. Indekse pravite za polja ili kombinavije polja po kojima će korisnik obavljati pretraživanje, sortiranje ili grupisanje podataka. Nemojte praviti indekse za kolone u kojima se podaci često ponavljaju.
Opšte pravilo je da indekse pravite za polja koja se redovno koriste prilikom pretraživanja i sortiranja.
Da biste napravili ili izmenili indeks, treba da uradite sledeće:
Važno je da se za sve tabele zadaju sva neophodna svojstva i da potom između njih uspostave zavisnosti.