SQL Veritabanı

İlişkisel Veritabanı Yönetim Sistemleri (RDBMS)

Veritabanı konusuna giriş yaptıktan sonra asıl konumuz olan SQL’e geçmeden biraz tanıyalım. SQL ilişkisel veritabanı yönetim sistemleri çeşitlerinden biridir. Peki ilişkisel veritabanı ne demek. İlişkisel veritabanı, organize edilmiş verilerin tablolarda saklanması ve bu tablolar arasında kurulan bağ ile oluşan veritabanı çeşitidir. Tablolar satır ve sütunlardan oluşur, üzerinde verileri saklayabilir, ekleyebilir, silebilir ve güncelleyebiliriz.  Her satır aynı sütunlara yani alanlara sahiptir. Her bir sütun o tabloda bulunması gereken ortak özellikleri yansıtır. Tablo üzerinde ki her bir satıra ise kayıt diyoruz. Örneğin resimdeki tabloda First Name alanında her kayıt için kişilerin isimleri bulunmaktadır. Bu alana daha sonra değineceğimiz bir veri tipi tanımlaması yapılmıştır. Yani bu alana isim dışında mesela int tipinde olan yaş bilgisi girmek hataya yol açacaktır.

table

Tablolar arasında kurulan ilişkiler ile verileri organize bir şekilde işlemek mümkün. İlişkiler, bir sorgu oluşturduğumuzda bir çok bilgiye aynı anda ulaşmamızı sağlar. Resimde birçok tablo arasında bir veya birden çok ilişki olduğunu görebiliyoruz.

IC78016

Tabloların nasıl oluşturulacağı düzgün veritabanını oluştururken en kritik noktalardan biridir. Bir örnek üzerinden konuyu anlatmaya devam edelim.

table

Yukarıda kendi oluşturduğumuz bir mağazada satılan ürünlerin hangi personel tarafından kime satıldığı kaydının tutulduğu bir tablo bulunuyor. Bu tablo her ne kadar normal gözükse de doğru değildir. Eksiklerle başlayalım:

Normalizasyon

Veritabanı oluştururken tabloların doğru tasarlanması önemlidir. Her tablo birbiriyle alakalı özellikleri içermelidir ve mümkün olduğunca bir işi yapmalıdır. Tıpkı metotlarda olduğu gibi. Yukarıdaki örnekte bir tabloda hem müşteri bilgileri hem aldığı personel bilgileri tutulmaktadır. Olması gereken ise iki farklı tabloda bu bilgileri tutup daha sonra bu tablolar arasında ilişki oluşturmaktır. Buna normalizasyon denir. Şimdi normalizasyon işlemi uyguladığımız tabloları görelim:

Adsız-6

Adsız-3

Primary Key

Tablolara girilen her kayıt birbirinden farklıdır. Her biri için ayrı işlemler yapılmaktadır. Ancak yukarıdaki yapı bunun için sağlıklı değildir. Mesela Ahmet Sarı isimli kişi farklı zamanlarda farklı iki ürün almış olsun. Ve biz bu kayıtlara ulaşmak isteyelim. İşimiz zorlaşacaktır. Benzer olaylar personel içinde geçerlidir. Olayı bir kademe daha zorlaştıralım ve farklı Ahmet Sarı’ların olduğunu düşünelim. Bu iki ayrı kişi aynı ürünü almış olsun. Biz kayıta ulaşmak istediğimizde hangisinin doğru kişi olduğunu nasıl anlarız. Sonuç: Kaos. Bu yüzden her bir kayıt kendine has bir numaraya sahip olmalıdır. Buna primary key denmektedir. İlişkisel veritabanınında tablolar arası ilişkiler kurulması açısından kritik bir görevi de bulunuyor. Primary key, benzersiz ve biribirinden farklı değerler alır. Aşağıda, birinci tabloda gözümüze yeni bir alan(personel_id) çarpıyor. Bu alan iki tablo arasında ilişki kurmamız için eklenmesi gereken bir alan. Bir sonraki yazıda geniş şekilde açıklayacağım. Yeni tablolarımızı görelim:


Adsız-5

Adsız-2

İlişki (Relation)

Tabloları böldük ve anahtarları atadık. Bunda sonra yapmamız gereken işlem tablolar arasında bağ kurmak ve birbirine bağlamaktır. Bu işleme ilişki diyoruz. Tablolar arasında ilişki kurarak birden fazla tabloya aynı anda ulaşıp, üzerlerinde işlem yapma imkanı buluyoruz. İlişki kurarken doğru alanlar arasında kurmaya dikkat etmeliyiz. Örneğimiz üzerinden gidersek birinci tablomuza müşteri ikinci tablomuza da personel tablosu diyelim. İlişki kurabilmek için id’leri kullanacağız. Bir sonraki yazıda ilişki türlerini işlediğimizde bu konu tamamen anlaşılacaktır. Şimdi ilişkili kurulan tabloları görelim:

tablo

Foreign Key

Tablolar arası ilişkiler kurulurken birinci tablodaki primary key’i ikinci tabloda ki başka bir primary key‘e bağlıyoruz. İşte bu ikinci key’e foreign key diyoruz.

Kısaca ilişkisel veritabanını anlatmaya ve anlamaya çalıştık. Bir sonraki yazıda ilişki çeşitlerini inceleyeceğiz. Şimdilik görüşmek üzere 🙂

İstanbul’un amatör seyyahı. Kod yazmak hayat felsefesi. Android, Java, C# ve Javascript’le yakından, tüm teknoloji dünyasıyla uzaktan ilgileniyor. Drone meraklısı ama sahibi değil.