Tablolarda Data Bütünlügü

Yazar: Cengiz Atilla
Kategori: SQL Server
Eklenme Tarihi: 7.1.2010 10:30:27



Merhaba arkadaşlar bugunku makalemizde tablolar uzerinde veri bütünlügü kavramını inceleyecegiz ... Primary key unique default check foreing key constraintlerini inceleyecegiz ...

Merhaba arkadaşlar bugunku makalemizde tablolar uzerinde veri bütünlügü kavramını inceleyecegiz ...

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

 

evet arkadaslar databutunlugunden kısa bir sekilde bahsettik uygulamalarımıza baslamadan once hatta 2 3 hafta onceden database semalarımızı cıkartıp ilgili dokumanları saglarsak inanın bu dokuman hazırlama sureci codu yazarken sizi daha cok hızlandırıcaktır .

Runtime girilen projeler bitmez ...!

Arastırma yapmalı diagramlar cıkartılmalı mantıklar tartısılmalı daha sonra yazım asamasına gecilmelidir .


Cengiz Atilla

Cengiz Atilla 02.11.1984 / İstanbul doğumludur . Nahit Menteşe Endüstri Meslek Lisesi Programcılık bölümünden mezun olmuştur .  2 yıllık Bursa Uludağ Unv Bilgisayar Programcılığı bölümünü bitirmiştir .

MCPD ve MCT ünvanlarına sahiptir.

atilla@cengizatilla.com
cengiz.atilla@hotmail.com
www.cengizatilla.com

Bu makaleye ilk yorum yapan siz olun.

Yorumunuz