Ahmet Oğuz Koca

Sosyal olaylar.

Veri tabanı tasarımı için 20 ipucu

1) Tutarlı ve iyi tanımlanmış tablo/sütun isimleri kullanın. ( Okul, Ogrenci, KursNO)

2) Tablo isimleri için çoğul isimler kullanmayın ( Ogrenci/Ogrenciler Student/Students) Tablolar zaten varlık koleksiyonlarını içerirler çoğul kullanmanıza gerek yoktur.

3) Tablo isimlerinde boşluk karakteri kullanmayın. Eğer kullanırsanız veritabanı sunucusu tipine göre sorgularınızda köşeli parantez, süslü parantez gibi ekstra ifadeler kullanmak zorunda kalabilirsiniz bu da kodlama sırasında hatalar yapmanıza sebep olabilir.

4) Tablo isimlendirirken gereksiz ön ek ve son eklerden kaçının (tblOgrenci, OgrenciTbl, OgrenciTablosu)

5) Şifre alanlarını kriptolayarak saklayın. (MD5, SHA1, bazı alanlar için base64 v.s.)

6) Bütün tablolarınıza sayı değeri barındıran bir kimlik sütunu bulundurun (Id alanı). Başlangıçta lazım olmasa bile ilerde lazım olma ihtimali yüksektir. Ayrıca bazı ORM araçlarının tablo üzerinde işlem yapmak için benzersiz bir ‘id’ alanına ihtiyaç duyduğunu aklınızda bulundurun.

7) Index oluşturmak için sayı (integer) tipli alanları tercih edin. Karakter (char/varchar) seçmeniz performans problemlerine neden olabilir.

8) Mantıksal (boolean) veri tipi için ‘bit’ tanımlaması kullanın. Karakter veya sayı kullanmanız gereksiz alan tüketimine sebep olur ayrıca bu alanlar için ‘Is’ öneki kullanabilirsiniz (İngilizce).

9) Veri tabanı için yetkilendirme sistemi kullanın, her kullanıcıya ‘yönetici’ admin rolü vermeyin.

10) Gerekmedikçe tablonuzdaki bütün sütunları seçen, ‘select *’ sorgusundan uzak durun. Sorgunuzda sadece gerekli sütunları isteyin.

11) Uygulamanız büyüdükçe ORM araçları kullanmaya yönelmeseniz. Başlangıçta performans kaybına neden olsa da ince ayar yaparak problemlerin üstesinden gelebilirsiniz.

12) Büyük ölçekli ve fazla kullanılmayan tabloları performans arttırmak amacıyla farklı disklerde tutmaya çalışın.

13) Büyük, hassas ve kritik önemi olan veritabanlarınız için yedekleme ve data güvenlik sistemleri kullanın (failover clustering, auto backups, replications)

14) Data bütünlüğünü sağlamak amacıyla alan kısıtlamalarını kullanın bütün denetleme işini uygulamanıza bırakmayın.

15) Varlık yapınızı, tablo ilişkilerinizi dokümente edin. Kullandığınız tetikleyicilerde (trigger) ve saklı prosedürlerde (stored procedures) yorum satırları ile yaptıklarınızı anlatın.

16) Büyük tablolar üzerinde çok kullandığınız sorgular için indexlemeye gidin. Analiz araçları hangi alanlarda indexlemeye gitmeniz gerektiği konusunda size yardımcı olabilir. Büyük çapta sonuç döndüren sorgular için ‘clustered index’ler, tekil sonuç döndürenler için ise ‘non-clustered’ indexler genellikle daha iyidir.

17) Veritabanı sunucusu ile web sunucusunu (uygulama sunucusu) farklı fiziksel makinalarda tutmaya çalışın. Bu hem performası (farklı cpu ve disk alanı kullanımından dolayı) artırır hem de daha fazla güvenlik sağlar (hack ataklarına karşı)

18) Sık kullanılan tablolarda resim (image) alanına yer vermeniz performans problemlerine sebep olabilir. Bu alanları farklı tablolarda tutmaya çalışın.

19) Gerektiğinde performansı arttırmak için normalizasyon (http://tr.wikipedia.org/wiki/Normalizasyon) yapmalısınız. Normalizasyonun az ya da çok olması performans problemlerine sebep olabilir.

20) Veritabanı modelleme ve tasarımı için daha fazla zaman ayırın. Eğer ayırmazsanız bu sizi bakım işlemleri sırasında aşırı vakit harcamak ve tablolarınızı yeniden dizayn etmek zorunda bırakabilir Orjinal Makale

 

 

Orjinal Makale 

 

20 Database Design Best Practices

 

http://codebalance.blogspot.com/2011/07/20-database-design-best-practices.html