Tablolarda Data Bütünlügü

Dark-Man

Kıdemli Üye
5 Ocak 2013
4,430
9
I Don't Know
Primary key
unique
default
check
foreing key constraintlerini inceleyecegiz ...
--Primary key constraint : baslangıc anahtarı olarak bilinir . Bir tabloda en fazla bir adet primary key olmalıdır tablomuzda birden fazla unique alan istersek o zaman unique olarak işaretlememiz gerekir ...
create table Personeller
(
Personelid int identity(1,1) primary key,
PersonelAdi nvarchar(30),
PersonelSoyad nvarchar(30),
SicilNumarasi nvarchar(10)
)
create table Personeller
(
Personelid int identity(1,1) ,
PersonelAdi nvarchar(30),
PersonelSoyad nvarchar(30),
SicilNumarasi nvarchar(10)
constraint PK_Personelid primary key (Personelid)
)
alter table Personeller
add constraint PK_Personelid primary key (Personelid)
-- Unique constraint ...
unique key constraint ler primary key constraintlere benzemekdedirler unique key constraint adındanda anasıldıgı gibi tabloda unique olmasını istedigimiz colonlar olldugu zaman kullanırız .
create table Personelbilgi
(
Personelid int identity(1,1) primary key,
PersonelAdi nvarchar(30),
PersonelSoyad nvarchar(40),
TcKimlikNumarasi nvarchar(12) unique,
EmailAdres nvarchar(40) unique
)
alter table Personelbilgi
add constraint Uq_TcKimlikNo unique(TcKimlikNumarasi)
alter table Personelbilgi
add constraint Uq_EmailAdres unique(EmailAdres)
-- Default Constraint
-- Default constraintler tablodaki belirtilen sutuna bir deger girisi olmaz ise otomatik olarak bir deger atamamıza yararlar ornek olark ogrenci bilgileri adında bir tablomuz oldugunu dusunelim ve bu tabloda not bolumunu bos bırakır isek otomatik olark ogrencinin notuna 0 vermesini isteyelim ...
create table OgrenciBilgi
(
Ogrenciid int identity(1,1) primary key ,
OgrenciAdi nvarchar(30),
OgrenciSoyad nvarchar(20),
Not1 int default 0,
Not2 int default 0
)
alter table OgrenciBilgi
add constraint DF_Ogrenci default 0 for Not1
alter table OgrenciBilgi
add constraint DF_OgrenciNot default 0 for Not2
-- Check constraint
-- bir kolona giricek olan bilginin belli sartlara uyması durumunda kabul gordugu constraint dir ...

-------------------------------------------------------------------------------------
create table InsanKaynaklari
(
Kaynakid int identity(1,1) primary key,
Ad nvarchar(50), -- en az 7 en fazla 50 alan olsun
Soyad nvarchar(40),
TelefonNumarasi nvarchar(13), -- sadece numaratik alanlar olsun
constraint CHK_Ad check(len(Ad)>7 and len(Ad)<50),
constraint Chk_TelefınNumarasi check(TelefonNumarasi like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
)
insert into InsanKaynaklari values ('Cengizzzz','Atilla','2221232123212')
---------------------------------------------------------------------------------------------------------
-- foreing key
--cascade : tüm yavru tablolardaki ilgili kaydı siler
-- set null : bos bırakır
-- no action : hic bir sey yapmaz
-- set default : colonlar uzerinde defaut tanım var ise o deger atanır ...
create table tbl_marka
(
Markaid int primary key ,
Marka nvarchar(max)
)
create table tbl_model
(
Modelid int primary key ,
Markaid int,
Model nvarchar(max),
constraint FK_Markaid foreign key (Markaid) references tbl_marka(markaid) on update cascade,
constraint FK_Markaiddelete foreign key (Markaid) references tbl_marka(markaid) on delete cascade
)
insert into tbl_marka values (1,'Renault')
insert into tbl_marka values (2,'Honda')
insert into tbl_model values (1,1,'Clio')
insert into tbl_model values (2,1,'Megane')
insert into tbl_model values (3,2,'Accord')
insert into tbl_model values (4,2,'Civic')
select * from tbl_marka
select * from tbl_model
-- simdi renault verisini silelim bakalım alt tablosun oolan modelleride silinicek mi ...
delete tbl_marka where Markaid = 1
-- evet silindi neden cunku cascade delete dedik ...
-- peki honda nın id sini 2 den 90 a ceklelim bakalım model tablosundaki marka id ler bundan etkilenecek mi ...
update tbl_marka set Markaid = 90 where Markaid = 2
select * from tbl_marka
select * from tbl_model
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.