|
|||
Sql' de Veri Bütünlüğü
Veri bütünlüğü, bir tabloda veri güncelleme, silme veya ekleme gibi işlemler yapılırken diğer tablo ya da tablolardaki verilerin birbirleriyle uyum içinde olması, dolayısıyla veri tutarlılığının kaybolmamasının garanti altına alınması demektir. Veri bütünlüğünü sağlamak iki yöntemle olabilir:
A.Tanımlanabilir Veri Bütünlüğü
Nesnelerin kendi tanımları dolayısıyla elde edilen veri bütünlüğüne tanımlanabilir veri bütünlüğü denir. Bu veri bütünlüğünün; Constraint’ler (kısıtlayıcılar), Rule’lar (kurallar) ve Default’lar (varsayılanlar) olmak üzere üç çeşidi vardır.
Tanımlanabilir Veri Bütünlüğü Esasları
Constraint (Kısıtlayıcı)
Constraint Türleri
Constraint Oluşturma: 1.NULL Constraint Oluşturmak CREATE TABLE Persons
( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) ) NOT NULL contraint NULL değer girilmesini kabul etmez ve bilgi girişine sütun zorlar.Yukarıda SQL 'p_id " ve Soyadı "sütunlarına NULL değer girilmesini kabul etmez ve bilgi girişine sütun zorlar.
2.SQL PRIMARY KEY Constraint Oluşturmak: CREATE TABLE OKUL(
ogrno int not null, adi varchar(20), soyadi varchar(20), sinifi varchar(10), tckimlik varchar(11), CONTRAINT pkc_ogrno primary key(ogrno)) --primary key contraint bu şekilde oluşturulur ogrno alanı constraint primary key olarak tanımlanmış oldu. Bir tabloda birden fazla primary key tanımlanabilir.Fakat sadece 1 tane constraint primary key tanımlanabilir. CREATE TABLE OKUL(
ogrno int not null, adi varchar(20), soyadi varchar(20), sinifi varchar(10), tckimlik varchar(11), CONTRAINT pkc_ogrno primary key(ogrno,tckimlik)) --Tablomuzda iki tame primary key oluşturmuş olduk. Data önceden oluşturulmuş tablolarda ise; ALTER TABLE Persons
ADD PRIMARY KEY (P_Id) yada ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) silmek için: ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID
3.SQL UNIQUE Constraint Oluşturmak: NIQUE ve PRIMARY KEY sınırlaması o kolondaki yada birden çok seçilmiş kolonlardaki tüm kayıtların kendi aralarında eşsiz yani her biri birbirinden farklı değer girme sınırlaması getirmektedir.Primary keyden farkı Unique Key Constraint şeklinde tanımlanmış bir alan NULL değerler alabilir. Eğer,
bu alan NULL olmayacak yani değer alacaksa daha önce girilmiş olan bilgilerden mutlaka CREATE TABLE Persons
( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName) ) Data önceden oluşturulmuş tablolarda ise; ALTER TABLE Persons
ADD UNIQUE (P_Id) yada ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName) silmek için: ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
4.SQL FOREIGN KEY Constraint Oluşturmak: Bir tablodaki bir sütuna ait değerlerin, başka bir tablonun belli sütunundan gelmesini denetler. Bir tabloya girilebilecek değerleri başka bir tablonun bir belli alanında yer alabilecek veri grubu ile sınırlandırmaya ve en önemlisi de ilişkilendirmeye yarar. CREATE TABLE Orders
( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) ) yada CREATE TABLE Orders
( O_Id int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, P_Id int FOREIGN KEY REFERENCES Persons(P_Id) ) Data önceden oluşturulmuş tablolarda ise; ALTER TABLE Orders
ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) yada ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) silmek için: ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders
5.SQL CHECK Constraint Oluşturmak: Tabloda belirtilen bir sütuna istenilen şartlara göre değer girilebilmesini ve bunların kontrolünü sağlayan kısıtlayıcıdır. Aynı sütun için birden fazla Check Constraint kullanılabilir. CREATE TABLE Persons
( P_Id int NOT NULL CHECK (P_Id>0), LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
CREATE TABLE Persons
( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes') )
tabloya sonradan ekleme yaparsak: ALTER TABLE Persons
ADD CHECK (P_Id>0) ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes') silme ALTER TABLE Persons
DROP CONSTRAINT chk_Person
6.SQL DEFAULT Constraint Oluşturmak:
Bir tabloya veri girişi esnasında o alanın alacağı varsayılan bir değerin tanımlanması için kullanılan kısıtlayıcıdır. Tabloda bulunan tarih alanına bir değer girilmemesi durumunda bulunulan günün tarihini o alana aktarma işlemi en güzel örnektir. SQL’de bu işlem GETDATE() fonksiyonu kullanılarak yapılır. CREATE TABLE Orders
( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, OrderDate date DEFAULT GETDATE() ) CREATE TABLE Persons
( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) DEFAULT 'Sandnes' ) ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'SANDNES' ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT
|