Professional Documents
Culture Documents
Bölüm İlişkili Tablo
Bölüm İlişkili Tablo
Bölüm İlişkili Tablo
İlişkili Tablolar
Bu Bölümde
İlişkili Tablo Nedir? 418 Kitabımızın genişletilmiş 2.baskısında daha detaylı
Neler Öğrendik? 431 olarak yer vermeyi planladığımız ilk bölüm ilişkili
tablolardı.
Bu bölümde ilişkili tablo kavramını türleriyle beraber
daha detaylı bir şekilde somut örnekler üzerinden
oluşturduğumuz bir veritabanı ve tablolarla
kullanarak öğreneceğiz.
418 Bölüm 22 İlişkili Tablolar
Öğrenci Kulüp
Mahiye Kitap
Mehmet Bilişim
Seda Kitap
Beyza Kitap
Mesut Bilişim
Ali Satranç
Öğrenci Ders
Mahiye Biyoloji
Mehmet Türkçe
Mehmet Biyoloji
Beyza Biyoloji
Didem Türkçe
Didem Biyoloji
Didem Matematik
Şekildeki 1. görseldeki gibi database alanımıza sağ tuşla tıklayıp yeni bir verita-
banı oluşturalım. Veritabanımızın ismi DBNotSistemi olsun.
Daha sonra id identity alanını sağ tarafındaki kutucuktan yes olarak değişti-
riyoruz. Bu durum otomatik artan özelliğini etkin hale getirecektir. Sol tarafta
bulunan increament ve seed kelimelerini açıklayalım. increament kelimesi
miktar anlamına gelmektedir yani artış değeri kaçar kaçar olacak diye soruyor
bize SQL. Varsayılan değer olarak da 1’i atamış durumda.
424 Bölüm 22 İlişkili Tablolar
Böylece tablomuzda id değerleri birer birer artacaktır. Seed ise kök, tohum ma-
nasındadır buradaki ifadesinde ise başlangıç anlamı taşıyor. Yani id değeri kaç-
tan başlayacak ve kaçar kaçar artacak kalıbını önümüze sunmakta.
Id değerimizle ilgili son olarak bu sütunu birincil anahtar yapalım. Bunun için id
alanımız üzerinde sağ tuşla tıklayıp birincil anahtar alanını seçelim.
NOT char sabit, varchar değişken uzunluklu veriler için kullanılan veri türüdür.
NOT char sabit, varchar değişken uzunluklu veriler için kullanılan veri türüdür.
Kulüp tablomuzda id ve kulüp adı olmak üzere yalnızca 2 tane alan bulunmak-
tadır. Kulüp sayımız çok fazla olmayacağı için tinyint veri türünü seçmemiz ye-
terli olacaktır. Kulüp adı için değişken uzunluktaki verileri tutan varchar türünü
tanımlayıp karakter sayısını 20 olarak belirledik. Şimdi tablomuzun id alanını
birincil anahtar yapıp ismini TBLKULUPLER olarak verelim.
Tablomuzun ismini TBLDERSLER olarak yazıp son tablomuz olan notlara geçelim.
Son olarak notlar tablomuzu oluşturalım. Notlar tablomuz aşağıdaki gibi olacaktır.
Not id alanımız her bir öğrenci için ilgili ders üzerinden işlem yapmamızı
sağlayacak olan alanımızdır. Dersler tablomuzda ders id alanımızı tinyint türünde
tuttuğumuz için notlar tablomuzda ad bu alanı tinyint olarak tanımladık. Zira
ilişkilerde ilişkiye alınacak sütunların aynı veri türünde olması gerekmektedir.
Öğrenciler tablomuzda öğrenci id değerleri int olduğu için notlar tablomuzda
da int türünde tanımladık.
Sınav notlarımız 0-100 arasında tam sayı türünde olacağı için tinyint kullanımı
en uygun veri türü olacaktır. Öğrencilerin ortalaması küsuratlı olabileceği için
ondalıklı türde veri tutan decimal kullanımı bu alan için uygun olacaktır. Decimal
veri türünün kullanımı ile ilgili detaylı bilgiyi kitabımızın SQL kısmının veri türleri
alanında vermiştik. Durum veri türünde ise öğrencilerin ortalamalarına göre
ilgili dersi geçip geçemedikleri ile ilgili değerleri tutacağız. Eğer ortalamaları
İlişkili Tablo Nedir? 427
Şimdi geldik ilişkiler kısmına. İlişki kurma işleminde de birden fazla yöntem bu-
lunmaktadır. Biz bunların ilki ve en basiti olan diyagram üzerinden ilişki kurma
yöntemini kullanacağız. Diyagramımızı oluşturmak için database diagrams üze-
rinde sağ tuşla tıklayarak yeni diyagram oluşturma seçeneğine tıklayalım.
2 tablomuz arasında ilişki işlemi yapıldıktan sonra yukarıdaki gibi bir görüntü
karşımıza çıkacaktır. Anahtar sembolü kulüpler, sonsuz sembolü ise öğrenciler
tablomuzun üzerinde bulunmaktadır. Bunun anlamı bu tabloda bire çok ilişki
bulunduğudur. Anahtar bir, sonsuz sembolü çok anlamındadır. Yani sözümüzü
toparlayacak olursak bu tablonun karşılığı bir kulüpte birden fazla öğrencide
bulunabilir yani bilişim kulübü sadece 1 öğrencide değil pek çok öğrencide ola-
bilecektir. Eğer bir kulüp sadece tek bir öğrencide olsaydı o zaman tablomuzun
ilişki belirtecinde sonsuz sembolü olmayacak her iki tarafta da sadece anahtar
sembolü bulunacaktı. Şimdi not-
lar tablomuz üzerindeki ilişkileri-
mizi kuralım. İlk olarak dersler ile
notlar tablomuzu ilişkilendirelim.
Bunun için ders id alanımızı seçip
notlar tablomuzda bulunan ders
alanının üzerine ekleyelim.
Örnek ders girişlerimizi yaptık. 5 nolu dersimiz olan Atatürk İlke İnkılap karak-
ter sayısı olarak aradaki boşluklarıyla beraber tam 20’dir. Dersin adını uzatmak
istersek tablomuzun tasarım kısmına gidip varchar(20) olarak tanımladığımız
alanın boyutunu arttırmamız gerekecektir.
Gelelim işin en önemli noktası olan ilişkili tablolar arasında veri girişi yapmaya.
Şimdi 3 tane öğrenci girelim ve bu öğrencilerin kulüp kısımlarına kulüp tablo-
muzda var olan id değerlerinden bir tanesini girerek veri girişlerini sağlayalım.
Neler Öğrendik? 431
Yukarıda gördüğümüz tablodaki gibi 3 tane öğrenci girişi yaptık. Ekin’e bilişim,
Burak’a satranç ve Baran’a kitaplık kulübünü atadık. Tablolarımızın ilgili sütun-
ları arasında ilişki olduğu için kulüp adları yerine sadece isimlerini yazdık. Şimdi
şöyle basitçe birkaç başlığı ele alalım. Biz burada ilişki kullanmasaydık ne ola-
caktı? Her tabloda kulüp adlarını yazmak durumunda kalacaktır. Ortalama bir
kulüp adının 6 karakter olduğunu varsayarsak 3 tane öğrenci için 18 karakterlik
hata verecektir. Böylece bölümümüzün sonuna geldik. Bir sonraki bölümde iliş-
kili tablolar üzerinden sorgulama işlemlerini, birleştirmeleri ve prosedür kulla-
nımlarını detaylı olarak göreceğiz.
Neler Öğrendik?
Bu bölümde ilişkili tabloları, neden gerekli olduklarını, ilişkili tablo türlerinin neler
olduğunu, diyagramların ve modellemelerin oluşturulmasını, bire-bir, bire-çok
ve çoka-çok ilişki türlerinin hangi durumlarda kullanıldığını, ilişkili tablolarda
veri girişinin id değerlerine göre nasıl yapılacağını öğrenmiş olduk. Bir sonraki
bölümde ilişkili tablolarımızda birleştirme işleminin nasıl yapılacağını göreceğiz.