Veritabanı Tasarımı ve Normalizasyon Kuralları | Turkish Tutorial

in #ukrayna7 years ago (edited)

Veritabanı Tasarımı
Bunun için evrensel geçerliliği olan metotlar yoktur. Bazı kurallarla tasarım işlemi kolaylaşır.

Nesneleri Tanımlayın

Herhangi bir proje önümüze konduğunda öncelikle nesneleri tanımlamak gerekir. Nesne, çeşitli özellikleri bulunan bir varlıktır. Başlangıçta özelliklerini düşünülmeyecek. Tablolara isim verirken mümkünse tekil isimler kullanın. Böyle yaparsanız hem daha anlaşılır bir tasarım yapmış olursunuz hem de daha sonra kodlama aşamasında karışıklığın önüne geçmiş olursunuz.

Her Nesne için Bir Tablo Oluşturun

Her bir nesne için bir tablo oluşturun ve her bir tabloya içereceği veriyi en iyi anlatan bir isim verin. Tablo oluşturma işini, bir kağıt üstünde sembolik olarak gösterebilirsiniz veya doğrudan SQL Server, MySQL, Oracle ...gibi kullanmakta olduğunuz VTYS üstünden de oluşturabilirsiniz. Ama tüm proje bitinceye kadar bu tablolar üstünde muhtemel değişiklikler olacaktır.

Her Bir Tablo için Bir Anahtar Alan Seçin

Veritabanındaki herhangi bir veriye erişmeden önce tabloya erişilir. Bu aşamada, tabloda yer alacak her bir kaydı bir diğerinden ayırabilecek bir sütuna ihtiyaç duyarız. Anahtar alan seçerken, sizi kısıtlamadığı sürece, doğal alanlar seçmeye dikkat etmenizde fayda vardır. Öğrenci tablosu için, öğrenci numarası doğal bir anahtar alandır çünkü aynı okulda, aynı numaradan bir öğrencinin daha bulunması söz konusu değildir.

Nesnelerin Gerekli Her Bir Özelliği için Tabloya Bir Sütun Ekleyin

Tablo adlarını tamamladıktan ve anahtar adlarını belirledikten sonra, tablolarınıza sıradan adını veren nesnenin her bir özelliği için bir alan(sütun) ekleyin. Bu aşamada bizden istenen projeye göz atmak nesne özellikleri bulma konusunda bize yardımcı olucaktır. En başa birincil anahtar olarak belirlediğiniz alanı eklemek bir kural değildir, ancak tablonuzun anlaşılırlığı ve göze hoş görünmesi açısından tercih etmenizin yararınıza olacak bir tekniktir. Genellikle, yapay birincil anahtar alanlar tablo adı ile başlar ve sonunda İD vardır, öğrenci tablosu için ogrencilD gibi.

Tekrarlayan Nesne Özellikleri için Ek Tablolar Oluşturun

Aklınızda hep şu olmalı, veri tekrarı olacak mı? Veri tekrarı olacaksa bir yerlerde hata yapıyorsunuzdur. Elinizdeki tablonun en az bir tabloya daha ayrılması gerekiyor demektir.

Anahtar Alana Bağlı Olmayan Alanları Belirleyin

İlişkisel veritabanında, tablodan herhangi bir tek kayda erişmek için mutlaka bir farklı özellik sağlanmalıdır ve bu özellik de anahtar alan tarafından sağlanır. Ancak bazen, anahtar alan ile aynı satırda yer aldığı halde, anahtar alan ile birebir ilişkisi olmayan bir alan yer alabilir. Bu türden alanları ayrı tablolara ayırmak gerekir.

Tablolar Arasındaki İlişkileri Tanımlayın

Her biri bir nesneye dair özellikleri barındıran tabloların tümünü gözönüne alın ve birbirleri ile olan ilişkilerini tanımlamaya çalışın. Örneğin her öğrenici veya öğretim elemanının bulunduğu bölüm vardır. Bu durumda, öğreci tablosu ve öğretime elaemanı tablosu ile bölüm tablosu arasında ilişki vardır.

Farklı tablolardaki iki alan aynı veriyi tutuyorsa, iki alana da aynı adı vermek, karışıklığa yol açabilir gibi görünse de aslında daha düzgün bir yapı ortaya çıkar. Örneğin çalışan_No çalışanlar ve izinliler tablosunda da çalışan numarasını tutmaktadır. Bu alanlarının birine çalışan_No diğerine izinli_Çalışan_No demek ileride özellikle ilişkileri ayarlarken kafa karışıklığına neden olabilir.

Veritabanı Normalizasyonu Kuralları

  1. Bir satırdaki bir alan yalnızca bir tek bilgi içerebilir

  2. Bir tablo için, anahtar olmayan her alan, birincil anahtar olarak tanımlı alanlara bağlı olmak zorundadır.

  3. Bir tablo için, anahtarı olmayan bir alan, anahtarı olmayan başka hiç bir alana bağlı olamaz.

  4. Birincil anahtar alanlar ile anahtarı olmayan alanlar arasında, birden fazla bağımsız bire-çok ilişkisine izin verilmez.

  5. Tekrarlamaları ortadan kaldırmak için her bir tabloyu mümkün olduğunca küçük parçalara bölmek gerekir.

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.028
BTC 59774.28
ETH 2422.19
USDT 1.00
SBD 2.44