SQL Server'da Constraintler'i İnceleyelim

K3YL0CK3R

Katılımcı Üye
24 Eyl 2016
594
0
24
Ankara
Arkadaşlar öncelikle merhabalar . Şimdiden Ramazan bayramınızı kutlar büyüklerimin ellerinden küçüklerimin gözlerinden öperim .

Şimdi konumuzun olan SQL Server'da CONSTRAIN'lere geçelim . Constraint kelime anlamı ile kısıtlama demektir .

Constraint bir sınırlayıcıdır . Tablo ya da sütunda yer alır . Verinizin doğruluk kurallarının karşılığında emin olmanızı sağlar .

Şimdi size Constraint Tiplerinden bahsetmek istiyorum .
Constraint Tiplerinde birden fazla uygulama yöntemi vardır . Bu yöntemler 3 ana kategoride toplanır : " Entity , domain ve Referential Integrity Constraint'leri " olmak üzeredir .
Aşagıdaki kendi çizimim olanan , word'den çizdiğim , resimde size bu konuyu anlatmaya çalışacağım ..
7DbE8L.png
Saygıdeğer arkadaşlarım şimdi o 3 katogerideki constraintleri inceleyelim .

Domain Constraint'leri
Bir ya da birden fazla sütun ile ilgilidirler . Belirli sütunların kriterlere uygun olmasını sağlar . Bir satır ekler veyahut güncellerseniz , tablodaki diğer satırlara bağlı kalmadan o sütunun verisine constraint uygulanır .

Resmimden örneklerle yola çıkacak olursak . Birim Fiyat sütunundaki verileri sıfır ya da sıfıırn üstünde olacak şekilde sınırlandırmayı istiyoruz bunun için " Domain Constraint" kullanırız . 0'ın altında bir değer reddedilir ! böylece kaç sütun vaarsa değerlerin constraintlere uygun olduğundan emin olabiliriz .

şimdi sırada ikinci constraintimiz olan :

Entity Constraint'leri

*Entity tek tek satırlarla ilgilidir resimde okla belirttiğim üzere .
Constraint'in bu türü bütün olarak sütunla ilgili değilde özel olarak satırla ilgili olarak düşünebiliriz .
Bunun en iyi örneği olarak ; sütundaki ya da sütun kombinasyonlarındaki her satırın unique değere sahip olmasıdır.

Şimdi bilenler diyecektir ki Unique değere sahip sütun mu ? veya Bu alan constraint anlamına mı geliyor ? bilen arkadaşlardan bu soruları duymak gayet normal hemen bunları cevaplayayım .

hayır , gelmiyor .
Bir sütundaki verilerin , bir değerden büyük ya da küçük olması gibi belirli bir formatta olması gerekiyor diye birşey söylemedim veya anlatmadım ben size . Yalnızca bir satırdaki değerin başka bir satırdaki değerden farklı olması gerektiğini söyledim . ( umarım kafanızı karıştırmamışımdır )

Son constraintimizden de bahsedip konumu yavaşça bitiriyorum :

Referential Integrity Constraint'leri

*Referential Integrity bir sütundaki değerin aynı tablodaki veyahut farklı tablodaki diğer bir sütundaki veri ile eşleştiği zaman oluştururuz .

Şimdi size çok farklı bir şekilde anlatacağım bu konuyu . Kredi kartları ile .. Başlayalım .
Kredi kartı ile ürün siparişi aldığımızı düşünelim Bankadan kredi kartı için onay almamız gerektiğini hepimiz biliyoruz . İşçilerinizin onay verilmeyen kredi kartlarını reddetmesini istemekteyiz . İşte tam da bu anda "veri tutarlığı constraint'i" ortaya çıkar, alan ya da arama tablosu oluşturmanızı sağlar.
Alan tablosu , kabul edilebilir verilerin sınırlı bir listesini sağlayan tablodur . Bu tablo ile aşağıda örneğini yapacağım şekilde tablolar oluşturabilirsiniz :
MDy5DN.png
Şimdi size son olarak burayı da anlatayım . Alan tablosundaki KrediKartID sütununu referans alan tablolar oluşturabilirsiniz . Bu demek oluyor iframe ile aynı mantık . Veri tutarlılığı oluştuktan sonra KrediKartıID sütununu referans alan siparişler ( bu tabloyu da oluşturduk sayalım ) tablosu , KrediKarti tablosundaki KrediKartıID ile eşleşmek zorundadır . Siparişler tablosuna her yeni satır eklediğimizde , alan listesinde de bir değer vermek veyahut almak zorundadır .

Arkadaşlar bir konumun daha sonuna geldik sizlere ufakta olsa bir şeyler öğretebildi isem ne mutlu bana ..
 
Ü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.