İlişkisel veritabanı sistemi, veri bütünlüğünün sağlanması, bilgi tekrarının önlenmesi, verilerin doğru ve etkin biçimde kullanımını sağlar. Veritabanı tasarımı için kullanılabilecek evrensel geçerliliği olan metotlar yoktur. Ancak bilgi, yetenek ve tecrübe ışığında iyi bir vertabanı tasarımı yapılabilir. İlişkisel veritabanını çok iyi bilmek gerekir. Veritabanı normalizasyon kurallarını bilmekte fayda vardır. Bu kurallar, tasarım aşamasında yol göstermek yerine hangi şartlara uygun tasarım yapılması gerektiğini anlatır.

Bazen, bu kurallardan vazgeçmek durumunda kalınsa da veritabanında saklanacak verilerin hacmi arttıkça bu kuralların sağlanmasında fayda vardır.

1. Nesnelerin Tanımlanması:


Bir veritabanı projesinde öncelikle nesneler tanımlanmalı. Nesne, çeşitli özellikleri bulunan bir varlıktır. Örneğin; Öğrenci Bilgi Sistemi projesinde öğrenciler, dersler, eğitmenler birer nesnedir.

2. Tanımlanan Her Nesne İçin Bir Tablo:

Tablo oluşturma, kağıt üstünde sembolik olarak gösterilebilir veya doğrudan MS SQL Server, Oracle, ... gibi kullanılmakta olunan Veritabanı Yönetim Sisteminde de oluşturalabilir. Her bir nesne için oluşturulacak tablo içereceği veriyi en iyi anlatan bir isimle ve tekil isimle oluşturulmalı. Bu daha anlaşılır bir tasarım ve kodlama aşamasında kolaylık sağlayacaktır. Ama proje tamamlanıncaya kadar bu tablolar üstünde muhtemel değişiklikler olacaktır.

3. Her Tablo İçin Bir Anahtar Alan:

Bir veritabanında en çok erişilen nesne genellikle tablolardır. Veritabanındaki herhangi bir veriye erişmeden önce tabloya erişilir. Hangi tabloları oluşturacağına karar verildikten sonra tabloda yer alacak her bir kaydı bir diğerinden ayırabilecek bir sütuna ihtiyaç duyarız. Örneğin bir öğrenci bilgisine erişilmek istendiğinde, bu öğrencinin hangi öğrenci olacağını çok iyi anlatılabilmeli. Öyle ki başka hiçbir öğrenci ile karışmamalı. Bunun için, bir alanı birincil anahtar alan olarak belirlenmelidir.

Anahtar alan seçelirken, doğal alanlar seçilmesinde fayda vardır. Örneğin öğrenciler ile iligili bir tablo yaparken öğrenci numarası anahtar alan olabilir. Çünkü aynı okulda, aynı numaradan bir öğrencinin daha bulunması söz konusu değildir.

4. Diğer Alanların Eklenmesi:

Tablo adı ve anahtar alanı belirlenen nesnenin atmanız hangi özelliklerinin tabloda yer alması gerektiği konusunda karar verdikten sonra her bir özelliği için bir alan (sütun) eklenir.

En başa birincil anahtar olarak belirlenen alanı eklemek bir kural olmasa da tablonun kolay anlaşılması ve göze hoş görünmesi bakımından tercih edilebilir.

Genellikle, yapay birincil anahtar alanlar tablo adı ile başlar. Örneğin öğrenci bilgileri tablosu (OGRENCI) tablosu için OGRENCI_NO gibi.

5. Tekrarlanan Nesne Özellikleri İçin Ek Tablolar:

Veri tekrarı varsa tasarımda hata var demektir. Mevcut tablonun en az bir tabloya daha ayrılması gerekiyor demektir.

Malesef, her projeye uyacak evrensel bir veritabanı tasarım tekniği yoktur. Dolayısıyla her şey belli bazı kurallar etrafında ne kadar detaylı düşünülebilirse o kadar çok başarım sağlanabilir. Her tasarım bir önceki tasarımdan daha da iyi olacaktır. Çünkü bilgi birikimi, yetenek ve tecrübe biraz daha artmıştır.

Örneğin, dersler nesnesi için tanımlanan tabloda zorunlu, seçmeli gibi ders tipleri olsun. Bir ders için birden fazla ders tipi tanımlayabilme:

Bu sorunu çözmek için ilk akla gelen şey, ders için, zorunlu, seçmeli diye iki alan daha eklemek. Ama her ders ya seçmelidir veya sorunludur. İki alanadan biri hep boş kalacaktır. Diğer yandan, yeni bir ders tipi tanımlamak gerektiğinde bu bilgi nereye yazılacak? Aynı alana mı? Ya da her tip için yeni bir alan mı açılmalı? Bunlar, veritabanı tasarımının doğasına terstir.

Veri tekrarı ve veri bütünlüğünün bozulmaması için doğru çözüm ders tipleri için yeni bir tablo oluşturup ders tipi bilgilerini burada tutmaktır.

6. Anahtar Alana Bağlı Olmayan Alanların Belirlenmesi:

İ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ı elimine edip ayrı tablolara ayırmak gerekir.

7. Tablolar Arasındaki İlişki:

Tablolar arasındaki ilişki, her biri bir nesnenin özelliklerini içeren tablolar göz önüne alınarak çıkarılıabilir. Örneğin öğrenci, dersler, harç ve staj tabloları arasındaki ilişki aşağıdaki gibi çıkarılabilir:

OGRENCI.OGRENCI_NO (1)---(N) DERSLER.OGRENCI_NO
OGRENCI.OGRENCI_NO (1)---(N) HARC.OGRENCI_NO
OGRENCI.OGRENCI_NO (1)---(N) STAJ.OGRENCI_NO

İki tablo arasında ilişkiyi sağlayan alanların aynı adda olması zorunluluk değildir. Teorik olarak tabloları istediğiniz herhangi iki alanları üstünden birleştirebilir. Ancak, DERSLER tablosundaki DERS_KODU ile OGRENCI tablosundaki OGRENCI_NO alanını birleştirildiğinde hiçbir işe yaramayacak anlamsız bir ilişki olacaktır.

Bu ilişkileri analiz ederken, her bir alanın hangi tablo için birincil anahtar alan, hangi tablo için yabancı anahtar olduğunu belirlemek, daha sonra fiziksel olarak veritabanını tasarlarken işi kolaylaştıracaktır. Hatta bu bilgiler bir şema üstünde de gösterilebilir. İşte bir çok veritabanı yönetim sistemi tarafından sağlanan örnek bir şema:



Makale içinde kısmen örnek verilen projenin SQL Server 2000 üstünde görünen diyagramından bir kesit

Beğeniler: 1
Favoriler: 0
İzlenmeler: 10595
favori
like
share
bilkontrol Tarih: 01.11.2010 23:53
Teşekkürler
hubele Tarih: 09.04.2010 14:41
Çok güzel açıklama olmuş. Tablo örnekleride olsa harika olurdu.
ipragazbayii Tarih: 17.12.2009 14:26
birinizde düzgün bişey yazın be bu nedir yaa
s0745s Tarih: 28.04.2009 20:52
teşekkürler
emosdfsfefs Tarih: 10.01.2009 14:49
hthfhfthfhfhfhfhft
jebeci Tarih: 02.01.2009 21:07
iyi olmuş baya
oramanager Tarih: 20.09.2008 22:54
teşekkürler
ahmet475 Tarih: 31.08.2008 23:06
tşkler
duhan_58 Tarih: 30.07.2008 14:11
evet ger.ekten çok güzel bir döküman