SQL Tablo İlişkileri

Excel Çalışma Tablolarından Veritabanı Tablolarına Geçiş

Sınav Notları isimli bir Excel çalışma tablomuz olsun. Bu çalışma tablosunu veritabanı tablosuna dönüştüreceğiz. Veritabanı tablomuz bir Hareket (Transaction) tablosu olacak. Bu hareket tablosundaki tekrar eden Öğrenci ve Sınav bilgilerini veritabanında ayrı ayrı tablolara yazdıracağız. Bu tablolar birer Referans tablosu olacak. Bu referans tablolarındaki bir çeşit kayıt numaraları olan ID kolonlarını, hareket tablomuzda referans kolonu olarak kullanacağız. 

Referans tablosundaki ID kolonlarında bilgiler tekrar etmeyecek ve bu kolonda boş (Null) kayıt olmayacak. Bu kolondaki bilgiler, aynı zamanda indeksli olacak ve bu indeks sayesinde kayıtlara hızlı erişim sağlanabilecek. Böyle kolonları, Primary Key olarak tanımlıyoruz. 

Bu ID kolonlara referans eden kolonlarda bilgiler tekrar edebilecek ve indeksli olacak. Referans eden kolonları, Foreign Key olarak tanımlıyoruz. Bu Foreign Key, aynı zamanda referans tablosunda belirtilen bilgi yoksa, referans eden kolona belirtilen bilginin yazılmasına izin vermez. Foreign Key, Referans tablosundaki bir kayda, bir tabloda referans gösterilmişse, o kaydın silinmesine de izin vermez. 

Foreign Key tarafından sağlanan kontroller sebebiyle, tabloların oluşması sırası olarak, önce referans tablosu oluşturulur ve sonra bu tabloya referans eden tablo oluşturulur. Kayıt oluşturma sırası da aynı şekilde olur, yani önce referans kaydı oluşturulur ve sonra referans eden kayıt oluşturulur. 

Tablo silme sırası ise, oluşturma sırasının tersidir. Yani, önce referans eden tablodan kayıt silinir ve daha sonra referans tablosundan kayıt silinir. Tablo silmesinde de önce referans eden tablo, sonra referans tablosu silinir. 

















Özel bir durum olmadıkça tablo isimleri çoğul, kolon isimleri ise tekil tanımlanır. Örneğin 'Personel' sözcüğünün çoğulu yazılması yanlış kabul edildiği için çoğul yazılmaz, 'Düşünce' yerine çoğulu 'Düşünceler' sözcüğü kullanılması gerektiği için de tekil yazılmaz. 

Veritabanında tablo ve kolon adlarında, şekilde görüldüğü gibi Türkçe'ye özgü harf kullanılmamakta, kelimeler birleşik yazılmakta ve kelimelerin ilk harfleri büyük diğer harfleri küçük olmaktadır. 

Aşağıdaki tablo ve kolon adlarını, şekildeki tablo ve kolon adlarından farklı olarak, Türkçedeki gibi yazdım. Bunda amacım, konuyu kavramsal olarak anlaşılır kılmaktır. 


Yukarıdaki tablolarda referans ilişkileri şöyledir: 
Kişiler tablosu Öğrenciler tablosu için, 
Öğrenciler tablosu Sınav Notları için, 
Dersler tablosu Sınavlar tablosu için, 
Sınavlar tablosu Sınav Notları için birer referans tablosudur.  

Öğrenciler tablosu, Kişiler tablosuna, 
Sınavlar tablosu, Dersler tablosuna, 
Sınav Notları tablosu, Öğrenciler ve Sınavlar tablolarına referans etmektedir. 

Select cümlesinde tabloların bağlanma sırası şöyledir: 
Sınav Notları
 Sınavlar 
   Dersler 
 Öğrenciler 
   Kişiler 

Bu tablolar arasındaki ortak (bağlantı) kolonları ise aşağıdaki gibidir: 
Sınavlar ile Sınav Notları arasında: Sınav ID, 
Dersler ile Sınavlar arasında: Ders ID, 
Öğrenciler ile Sınav Notları arasında: Öğrenci ID, 
Kişiler ile Öğrenciler arasında:Kişi ID 

Tablodan Kayıt seçmek için kullanılan Select fiili ile ilgili ilk örneklerimizin bulunduğu İlk SQL Sorgu Cümlelerimiz sayfasını okumanızı tavsiye ediyorum. 

Konu ile ilgili diğer sayfalar: 

Liste ile Rapor Farkı 

SQL Cümleleri Hakkında 


Bu blogdaki popüler yayınlar

Power BI'da Yeni Sütun Eklemek

Power BI Kullanımına Giriş

Power BI Üzerinde Fonksiyon Oluşturma ve Kullanma

Kümülatif Toplam

Ağırlıklı Ortalama Hesabı

SQL'de Group By Yaparak Rapor Oluşturmak

SQL'de Birden Fazla Tablodan Listeleme Yapmak

ETarihli Fonksiyonu

Bir Ürünün En Son Tarihli Fiyatının Bulunması