Tebrikler..

muazzam.. Amd-x tarafından 19/Eyl/12 01:59 tarihinde düzenlenmiştir

Oracle Veritabanında Kısıtlayıcılar Oracle 11g sürümünde kullanılabilen bes adet kısıtlayıcı bulunur : Primary Key kısıtlayıcısı Foreign Key kısıtlayıcısı Unique kısıtlayıcısı Not Null kısıtlayıcısı Check kısıtlayıcısı Bu türlerden herhangi birisini tabloya eklerken ona bir de isim vermemiz gerekir. Bunun icin sistematik bir sıra olusturmanız, sonradan veritabanını incelediginizde size karısıklık cıkarmaması icin iyi bir yazılım kuralı olacaktır. Kısıtlayıcıları tek tek inceleyelim. 1-) Primary Key Primary Key'ler iliskisel veritabanları icin vazgecilmez bir unsurdur. Birazdan deginecegim Unique ve NOT_NULL kısıtlayıcıları birleserek Primary Key'i olusturur. Bu bir sütundaki verilerin zgün ve kesinlikle bir deger icermesini saglar. Tablodaki her satırın, veritabanı icinde zgünce kaydedilmesini, bylelikle mutlaka bir deger iceren bu verilere kolayca erisimimize yardımcı olur. Resimdeki rnekle daha iyi anlayacaksınız. UYE_NO sütununda "1" degerini tasıyan satır "HolyOne"a aittir, yani "1" degeri sadece ona ait olabilir. NICK sütununda baska bir "HolyOne" daha olabilir ancak onun UYE_NO degeri "1" olmayacaktır. Bir de su tabloya gz atalım. 6. sıradaki underzero'nun UYE_NO degeri "6"dır ve e-mail adresi yasli_amca@tahribat.com'dur. altındaki cakma underzero'nun UYE_NO degeri ise "7"dir ve mail adresi de farklıdır, yani bu kisi database icinde farklı bir kisi olarak gzükür. zetlemek gerekirse, UYE_NO degeri farklı olan her bir kisi, Oracle 11g veritabanı icin farklı bir kayıttır. 2-) Foreign Key Tek cümleyle acıklayacak olursak, Foreign Key, bir tablodaki sütunu, baska bir tablodaki sütunla etkilesime almaya yarar. Kaynak sütunun oldugu tabloya "parent", hedef sütunun oldugu tabloya "child" tablo denir. Resim üzerinden rnek verelim. Child tablomuz bu olsun : Simdi bu tablodaki DEPARTMAN_ID sütununa Foreign Key atayıp asagıdaki tablonun DEPARTMAN_NO sütununa bagladıgımızı düsünelim. Parent tablomuz : Child tablomuza yeni satır eklerken DEPARTMAN_ID verilerinden birinin, Parent tablosunda DEPARTMAN_NO sütunundaki verilerden birisiyle aynı olması gereklidir. Cünkü ilk tablodaki DEPARTMAN_ID sütunu, Foreign Key aracılıgıyla ikinci tablonun DEPARTMAN_NO sütununa baglanmıstır. Burada bir kuralı gz nünde bulundurmak gerek, eger Parent tablosunda DEPARTMAN_NO sütunundaki degerlerden birisi (rnegin "20"), ilk tablodaki DEPARTMAN_ID sütununda kullanılıyorsa, Parent tabloda yer alan ve DEPARTMAN_NO sütununda bulunan o satırı silemeyiz. Bu resimlerdeki rnege gre ikinci tablodaki "20/Programcılık" ve "30/Kuru Fasulye" satırları silinemez. Cünkü Child tablosunda bu degerler DEPARTMAN_ID sütununda da kullanılmaktadır. Fakat DEPARTMAN_NO verisi "40" olan satırı silebiliriz, cünkü Child tabloda bu deger bulunmamaktadır. Eger DML komutlarından birisini kullanırsak, Foreign Key bu tip bir hatada size hata mesajı verecektir. Es gecilmemesi gereken bir baska konu da, Child-Parent tablolarında atama yaparken, kaynak ve hedef sütunun veri türü ve veri genisligi de aynı olmalıdır. Yani VARCHAR2 tipindeki bir sütuna NUMBER ataması yapılamayabilir. 3-) Unique Kısıtlayıcısı Adı da üzerinde oldugu gibi, Unique kısıtlayıcısını bir sütuna eklememiz durumunda, o sütunun alabilecegi degerler sadece bir kere mahsus, zgün degerler olacaktır. Bir tablonun UYE_NO sütununa Unique kısıtlayıcısı atadıgımızı farzedelim. "12"-"34"-"56" seklinde giden verilerde herhangi bir hata yoktur, cünkü her bir satırın UYE_NO degeri zgündür. Eger Unique atamıs olsaydık, tablo asla su sekilde olamazdı : Burada "doguhan" ve "Treasure" isimli kullanıcılara ait UYE_NO degerleri 34 olarak gzükmektedir. Oysa UYE_NO sütununa Unique kısıtlayıcısı atadıgımız icin byle bir tablo asla olamaz. Aynı tablo üzerinden gidecek olursak, asagıdaki tabloda hata yoktur : Cünkü "Treasure" isimli kullanıcının UYE_NO degeri yoktur, deger olmaması demek, "0" anlamına degil, NULL deger anlamına gekir. Unique kullanılmıs bile olsa, o sütun NULL deger alabilir. 4-) Not_Null Kısıtlayıcısı Eger bir sütundaki alanlara mutlaka bir deger girilmesini istersek, NOT_NULL kısıtlayıcısını kullanırız. Tabloyu inceleyelim. UYE_NO sütununda NOT_NULL kısıtlayıcısı mevcutsa, byle bir tablonun varlıgı da olasıdır, cünkü bos deger yoktur. Aynı durum asagıdaki tablo icin de gecerlidir : UYE_NO tablosunda zgünlük aranmaz, yani Unique kısıtlayıcısının olup olmaması, NOT_NULL kısıtlayıcısını baglamaz. Dolayısıyla 2 ve 3. satırdaki veriler, NOT_NULL kullanımını destekler. Kabul edilemeyecek tek durum su sekildedir : UYE_NO tablosuna NOT_NULL ataması yapıldıgı icin, "Treasure" verisinin UYE_NO blümü kesinlikle bos olamaz, NULL deger alamaz. Yani byle bir tablo, UYE_NO sütunu icin NOT_NULL kısıtlayıcısının yokluguna ispattır. 5-) Check Kısıtlayıcısı Eger bir sütuna yazılacak verilerin kendi belirledigimiz sınırların icerisinde olmasını zorunlu kılmak isterseniz bu kısıtlayıcıyı kullanmanız gerekir. Tablomuza bakalım. DEPARTMAN_ID sütununa atanacak bir Check kısıtlayıcısıyla, o sütuna ait verilerin "100"den büyük olmamasını saglayabiliriz. Yani bu sütun icin Check ataması yaparsak, alttaki tablo var olmayacaktır. Cünkü "Treasure" degerini tasıyan satırın UYE_NO degeri asla "100" degerini gecemez. Kısıtlayıcıları, mantıgını anlamak adına elimden geldigince sade anlatmaya calıstım, umarım ihtiyacı olanın isini grür. Sütunlara kısıtlayıcı atama konusunu ayrı bir doküman olarak hazırlamak istiyorum. Eger talep olursa fonksiyonlar icin de bir doküman hazırlayabilirim. Bu doküman Tahribat. Com adına Andrei tarafından yazılmıstır. %40 indirimli olarak "Centos Sistem ve Sunucu Ynetimi" adlı kitabımızı satın alarak, Linux üzerine yapılacak olan devam projeleri icin destekte bulunabilirsiniz : http://www.hepsiburada.com/centos-sistem-ve-sunucu-yonetimi-oku-izle-dinle-ogren-p-KKODLAB01579

Bu linki mail atta dkümanlara ekleyim hocam Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

destek'e mail attım. dün gremeyenler icin son bir up olsun. %40 indirimli olarak "Centos Sistem ve Sunucu Ynetimi" adlı kitabımızı satın alarak, Linux üzerine yapılacak olan devam projeleri icin destekte bulunabilirsiniz : http://www.hepsiburada.com/centos-sistem-ve-sunucu-yonetimi-oku-izle-dinle-ogren-p-KKODLAB01579