VERİTABANI Veritabanı Tasarımı VERİTABANI TASARIMI TASARIM BASAMAKLARI Güçlü ve performanslı bir veritabanı için gerçekçi ve disiplinli bir tasarım oluşturulmalıdır. Veritabanı oluşturulurken belirli kurallara uyulması gerekir. Bu kurallara uyulması, iyi bir veritabanı oluşturmak için çok önemlidir. Çünkü veritabanında tasarımdan kaynaklanan sorunların giderilmesi daha sonra oldukça zordur. Bu nedenle veritabanı oluşturulmadan önce hangi özelliklere sahip bir veritabanı oluşturulmak istendiği iyi saptanmalı ve bu şekilde tasarımı yapılmalıdır. Veritabanı tasarımı yapılırken veri tekrarı olmamasına ve veri bütünlüğünün sağlanmasına dikkat edilmelidir. Çünkü veri tekrarı hafızada fazladan yer kaplayacağı gibi aynı zamanda raporlama ve ekleme, silme, güncelleştirme gibi diğer işlemlerde hatalara ve tutarsızlıklara neden olacaktır. Eğer veri bütünlüğü sağlanamazsa istenilen veriler raporlandığında yanlış bilgiler içerecek ve kullanıcılar yanlış bilgilendirilmiş olacaktır. VERİTABANI TASARIMI İyi bir veritabanı tasarımı, verileri veri tekrarını önlemek için gruplandırarak tablolara böler. Bu tablolar arasındaki ilişkileri kurarak, gerektiğinde tüm bilgilere doğru ve eksiksiz ulaşılmasını sağlar. Veri bütünlüğünü koruyarak istenilen işlemlerin ve raporlamaların yapılmasını gerçekleştirir. Kullanışlı ve yararlı bir veritabanı oluşturması için tasarım aşamasında aşağıdaki sorular yanıtlanmalıdır. • Veritabanı oluşturmaktaki amaç nedir? • Hangi verileri içerecektir? • Hangi tablolardan oluşacaktır? • Oluşturulan tablolarda hangi alanlar bulunacaktır? • Hangi alanlar anahtar alan olacaktır? • Tablolar arasındaki ilişkiler nasıl olacaktır? • Normalizasyon kuralları geçerlimi? VERİTABANI TASARIMI VERİTABANI OLUŞTURMAKTAKİ AMAÇ Veritabanının oluşturulmasındaki tasarımındaki en önemli aşamadır. amacın belirlenmesi, veritabanı Genel anlamada veritabanı, el ile yapılan işlemlerin bilgisayar ortamında daha hızlı ve güvenli şekilde yapılmasını amaçlamaktadır. Bu nedenle öncelikle el ile yapılan iş ve işlemler analiz edilmeli, bu iş ve işlemlerde kullanılan tüm bilgi ve belgeler toplanmalı, iş ve işlemlerin sıralaması ve önemi belirlenmelidir. Veritabanında istenilen veriler ve raporlamaların neler olduğu, veritabanını kullanacak kişiler ile ortak çalışılarak onların isteklerine göre belirlenmelidir. Toplanılan tüm bu bilgiler ve yapılan analizler ile veritabanı oluşturmaktaki amaç ortaya çıkar. Veritabanının amacının belirlenmesi, tasarımdaki diğer aşamalar için de yol gösterici olacaktır. VERİTABANI TASARIMI VERİTABANI OLUŞTURMAKTAKİ AMAÇ Örneğin Nüfus ve Vatandaşlık İşleri Genel Müdürlüğünün adres kayıt sistemi kapsamında bir veritabanına gereksinim duyulduğunu varsayalım. Bu veritabanının kurulmasındaki amaç, kişiler ile adreslerinin elektronik ortamda tutulmasını sağlamak olacaktır. Oluşturulan veritabanından kişiler ve adreslerinin sorgulanabilmesi, ikametgâh belgesi, nüfus cüzdanı örneği vb. belgelerin verilmesi de bu veritabanının kurulma amaçlarından olabilir. VERİTABANI TASARIMI VERİTABANI TASARIMI VERİTABANI TASARIMI KULLANILACAK VERİLERİN BELİRLENMESİ Veritabanının oluşturulma amacı belirlendikten sonra bu amaç doğrultusunda veritabanının hangi verileri içereceği belirlenmelidir. Örneğin Nüfus ve Vatandaşlık İşleri Genel Müdürlüğünün adres kayıt sistemi kapsamında oluşturacağı veritabanında, adres bilgileri ve kişi bilgileri bulunacaktır. Ancak bu veriler hedeflenen amaç doğrultusunda belirlenmelidir. Önceden el ile hazırlanan tüm belgeler incelenmeli ve her belgede bulunması gereken veriler saptanmalıdır. VERİTABANI TASARIMI KULLANILACAK VERİLERİN BELİRLENMESİ Adresin doğru bir şekilde belirlenebilmesi için ; Ülke Bulvar/ Cadde/Sokak İl Kapı No İlçe Blok Köy Daire No Mahalle Posta Kodu gibi verilere gereksinim vardır. Bu nedenle tüm bu verilerin veritabanında yer alması gereklidir. VERİTABANI TASARIMI Örneğin el ile hazırlanan nüfus cüzdanı örneği incelenerek hangi verilerin gerekli olduğu kolayca belirlenebilir. VERİTABANI TASARIMI VERİTABANI TASARIMI VERİTABANI TASARIMI TABLOLARIN OLUŞTURULMASI Veritabanında bulunması gerekli olan veriler belirlendikten sonra veri tekrarı olmayacak ve veri bütünlüğünü bozmayacak şekilde veriler gruplandırılmalı ve tablolara bölünmelidir. Veritabanındaki tabloların belirlenmesi veritabanı tasarım sürecinde en zor adım olabilir. Veritabanı oluşturduktan sonra hangi verilere hangi sıklıkla gereksinim duyulacağı, hangi formların ve raporların oluşturulacağı gibi soruların yanıtlarını bilmek tabloların oluşturulması aşamasında tasarımcıya çok faydalı olacaktır. Örneğin Nüfus ve Vatandaşlık İşleri Genel Müdürlüğünün adres kayıt sistemi kapsamında oluşturacağı veritabanında kişinin kimlik bilgileri ile adres bilgileri tek bir tabloda tutulabilir. Fakat bu şekilde oluşturulacak tablo, veri tekrarlarına neden olur. Çünkü aynı adreste birden fazla kişi oturuyor olabilir ve tabloda bulunan bu kişilerin hepsinde aynı adres bilgisi yer alacaktır. Bu nedenle adres ve kimlik olmak üzere iki tablo oluşturulması gereklidir. VERİTABANI TASARIMI VERİTABANI TASARIMI VERİTABANI TASARIMI VERİTABANI TASARIMI ALANLARIN BELİRLENMESİ Veritabanındaki tabloların alanlarını belirlemek için tabloda hangi verilerin bulunacağına karar vermek gereklidir. Belirlenen verilere göre tabloda alanlar oluşturulur. Oluşturulan alanların isimleri açıklayıcı olmalıdır. Örneğin kişinin adının bulunduğu alanın ismi "ADI" şeklinde olabilir. Bu şekilde tanımlanan alan içindeki verilerin neler olduğu çok daha kolay anlaşılır. VERİTABANI TASARIMI Veritabanında bulunan tablolarda aynı verileri içeren alanlar mevcut ise bu alanların isimlerinin de aynı olması gereklidir. Örneğin T.C. Kimlik numarasını içeren tüm tablolardaki alanların isimleri "T_C_KIMLIK_NO" şeklinde olmalıdır. Ayrıca alanlar isimlendirilirken alanın başına veya sonuna eklenecek açıklayıcı bilgiler o alanda hangi verilerin bulunduğunun anlaşılmasında kolaylık sağlayacaktır. Örneğin personel ve müşterilerin kaydedildiği bir tabloda personelin adının olduğu alan "PER_ADI" ve müşterinin bulunduğu alan "MUS_ADI" şeklinde isimlendirilebilir. Veritabanmda tablolardaki alanların isimleri belirlenirken Türkçe karakterlerin, özel işaretlerin ('/', '%', '&' vb.) ve veritabanı yönetim sistemi yazılımı tarafından kısıtlanmış olan sözcüklerin kullanılmamasına dikkat edilmelidir. Tablolarda tekrarlayan alanların bulunması, veri tekrarına neden olacağından tekrarlayan alanlar da bulunmamalıdır. VERİTABANI TASARIMI Tabloda bulunan bir alan içerisinde birden fazla veri bulundurabilir. Ancak bu şekilde oluşturulan alanlarda veri tutarsızlıkları oluşmaktadır. Bu nedenle birden fazla veri içeren alanlar mümkün olduğu kadar çok alana bölünmeli, her alanda sadece tek bir veri olacak şekilde oluşturulmalıdır. Örneğin kişinin adı ve soyadı tek bir alanda tutulabilir. Fakat kişinin çift isimli olduğu veya kişinin çift soyisimli olduğu durumlarda, bu alandan elde edilecek veride karmaşıklıklar oluşacaktır. Bu nedenle bu alan, adı ve soyadı olmak üzere iki alan şeklinde oluşturulmalıdır. Aynı şekilde adres alanını ele alalım. Adres ülke, il, ilçe, mahalle, cadde, sokak, kapı no, daire no vb. verilerin birleşmesinden oluşmaktadır. Eğer adres tek bir alanda tanımlanırsa veriler arasında tutarsızlık olur. VERİTABANI TASARIMI Örneğin iki kişinin adresleri tabloya kaydedilmiş, ancak tek bir alanda kayıt yapıldığı için iki adres arasında kullanıcı girişinden kaynaklanan hatalar oluşmuştur. Birinci kişinin adresinde ilçe bilgisi yazılmamış, ikinci kişide ise mahalle bilgisi daire bilgisinden sonra yazılmıştır. Bu nedenle adres ülke, il, ilçe, mahalle, cadde, sokak, kapı no, daire no vb.şekilde mümkün olan en fazla alana bölünerek, kullanıcı hataları en aza indirilebilir ve veritabanında sorgulama işlemleri çok daha kolay bir şekilde yapılabilir VERİTABANI TASARIMI Alanlar oluşturulurken, bu alanların içinde bulunacak verilerin tiplerine göre tanımlanmalıdır. Örneğin T.C. Kimlik Numarası 11 rakamdan oluşan bir sayıdır. Bu nedenle T.C. Kimlik Numarasının bulunduğu alan, 11 karakter uzunluğunda bir sayı olarak tanımlanmalıdır. Alanlar oluştururken diğer verilerden hesaplanarak elde edilen veriler için alan oluşturulmamalıdır. Örneğin kişinin doğum tarihi alanı tabloda oluşturulmuşken, yaşı alanının da oluşturulması doğru olmaz. VERİTABANI TASARIMI ANAHTAR ALANLARIN BELİRLENMESİ Tablo, her satırı tanımlayan özellikli bir alan içermelidir. Bu alan genellikle kimlik numarası, ürün numarası gibi benzersiz verilerden oluşur. Bu alan birincil anahtar olarak adlandırılır. Birden fazla tablodaki verilere ulaşmak için, tablolar arasında ilişkilendirmelerde birincil anahtar alan kullanılır. Birincil anahtar alanın benzersiz olması gereklidir. Örneğin kimlik tablosunda T.C. Kimlik Numarası her kişi için farklıdır ve birincil anahtar olarak tanımlanabilir. Ancak ad alanı benzersiz veriler içermez. Aynı isimli birden çok kişi olabilir. Bu nedenle ad alanı birincil anahtar olarak tanımlanamaz. Ayrıca birincil anahtar alanda her satır için her zaman bir değer olmalı ve değeri değişmemelidir. VERİTABANI TASARIMI ANAHTAR ALANLARIN BELİRLENMESİ Birincil anahtar tabloda bulunan alanlardan olmak zorunda değildir. Örneğin adreslerin bulunduğu tabloda yeni bir alan oluşturup bu alan "ADRES_ID" şeklinde isimlendirilerek her adres için farklı bir adres numarası oluşturularak birincil anahtar alan yaratılabilir. Anahtar alan 1,2,3,4,... şeklinde devam eden otomatik sayı şeklinde de tanımlanarak oluşturulabilir. VERİTABANI TASARIMI ANAHTAR ALANLARIN BELİRLENMESİ Bazı durumlarda bir tabloda bulunan iki veya daha fazla alan, birincil anahtar olarak tanımlanabilir. Bu tip anahtarlara birleşik anahtar denir. Örneğin adı ve soyadı alanları birlikte birincil anahtar olabilir. Burada dikkat edilmesi gereken adı ve soyadı aynı olan kişilerin tabloda bulunmamasıdır. VERİTABANI TASARIMI VERİTABANI TASARIMI TABLOLAR ARASINDAKİ İLİŞKİLERİN TANIMLANMASI Veritabanında veriler, tablolara bölünmüş olarak depolanmaktadır. İstenilen verilere ulaşılması için bazen iki veya daha fazla tablodaki verilerin birleştirilmesi gerekebilir. Bu gibi durumlarda tablolar arasında ilişkiler tanımlanmalıdır. Örneğin adres ve kimlik tabloları olan bir veritabanında Eskişehirli kişileri sorgulamak için adres ve kimlik tabloları arasında ilişki kurulmalıdır. Tablolar arasındaki ilişki, anahtar alanlar yardımı ile yapılır. VERİTABANI TASARIMI NORMALİZASYON İŞLEMLERİNİN UYGULANMASI Veritabanındaki tablolar, alanlar ve tablolar arasındaki ilişkiler tanımlandıktan sonra, örnek veri girişi yapılarak veritabanının normalizasyon kurallarına uyup uymadığı kontrol edilmelidir. Tablo doğru şekilde tasarlanmış ise normalizasyon kurallarına uyacaktır. Uymuyor ise normalizasyon kurallarına göre tekrar düzenlenmelidir. Yaygın olarak kullanılan beş normalizasyon kuralı vardır. VERİTABANI TASARIMI Birinci Normalizasyon Kuralı: Tabloda bulunan her satırdaki, her alanda tek bir veri bulunmalıdır. Örneğin adres alanı tek bir alandan oluşmamak, ülke, il, ilçe, mahalle, cadde, sokak, kapı no, daire no vb. alanlara bölünmelidir. Veritabanındaki tabloların birinci normalizasyon kuralına uyması, veritabanının sorgulama, ekleme, silme, güncelleme gibi işlemleri yapamasında performansı arttırmaktadır. ikinci Normalizasyon Kuralı: Tabloda birincil anahtar olmayan tüm alanlar birincil anahtar alana bağlı olmalıdır. Örneğin kimlik tablosunda birincil anahtar T.C. Kimlik Numarasının bulunduğu alan ise diğer alanlar bu alan ile ilişkili alanlar olmalıdır. Kişinin adı, soyadı, baba adı vb. alanlar kimlik numarasıyla ilişkilidir. Ancak bu tabloda kişinin adresinin yer alması ikinci normalizasyon kuralına aykırıdır. VERİTABANI TASARIMI Üçüncü Normalizasyon Kuralı: Tabloda anahtar alan olmayan alanlar, birbiriyle ilişkili olmamalıdır. Örneğin adres tablosunda il adı ve il plaka kodu alanları bulunmamalıdır. Ayrı bir il tablosu oluşturulmalı, adres tablosunda bu alanlardan sadece bir tanesi bırakılmalıdır. Dördüncü Normalizasyon Kuralı: Tabloda birincil anahtar alan ile diğer alanlar arasından bire-bir ilişki olmalıdır. Birden çok ilişki durumunda ayrı bir tablo oluşturulmalıdır. Beşinci Normalizasyon Kuralı: Veritabanında bulunan tüm tablolar mümkün olduğu kadar küçük parçalara bölünmelidir. Bu şekilde veri tekrarları önlenmiş olur.