VERİTABANI ve YÖNETİMİ Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü
BİL 301 - Veri Tabanı ve Yönetimi BÖLÜM -4- NORMALİZASYON
Genel Bakış… Veritabanı tasarım aşamaları, Normalizasyon, BİL 301 - Veri Tabanı ve Yönetimi Genel Bakış… Veritabanı tasarım aşamaları, Normalizasyon, Örnek veritabanı.
4.1. Veritabanı Tasarım Aşamaları BİL 301 - Veri Tabanı ve Yönetimi 4.1. Veritabanı Tasarım Aşamaları Kavramsal Tasarım Kavramsal Şema (Varlık-İlişki Modeli) Mantıksal Tasarım Mantıksal Şema (İlişkisel Model) Varlık-İlişki Çizelgesi Oluşturma Normalizasyon (Tasarımı İyileştirme) 4
BİL 301 - Veri Tabanı ve Yönetimi 4.2. Normalizasyon Normalleştirme, bir veritabanında veri kayıplarını engellemek, verinin tekrarını azaltmak, silme, güncelleme ve ekleme işlemlerinde ortaya çıkan zorlukları en aza indirmek için yapılan işlemler topluluğudur. İlişkisel bir veritabanı oluşturmak için normalleştirmeyi çok iyi bilmek gerekir. Normalleştirmenin amacı, bir veritabanına etkinlik kazandırmaktır. GİRİŞ: İlişkisel veritabanının tasarlanması aşamasında, verinin tekrarlanmasını, veri kaybını veya veri yetersizliğini önlemek için normalleştirme işlemi uygulanır. Normalleştirme teorisi normal form kavramına dayanır. İKİNCİ MADDEDEN SONRA: Özet olarak normalizasyonun amacı, veritabanının performansını en üst düzeye getirmektir.
4.2. Normalizasyon (devam…) 6 BİL 301 - Veri Tabanı ve Yönetimi 4.2. Normalizasyon (devam…) Normalizasyon işlemi bir veritabanı tasarlanırken başlı başına bir işlemdir. Normalizasyon gerçekleştirilirken bazı kurallar göz önüne alınarak gerçekleştirilir. Bu kurallar, uyulması kesinlikle zorunlu kurallar değildir. 6
4.2. Normalizasyon (devam…) 7 BİL 301 - Veri Tabanı ve Yönetimi 4.2. Normalizasyon (devam…) Bir satırda yalnızca bir tek benzer bilgi bulunur. Örneğin, kişinin okul bilgileri Okul1, Okul2, Okul3 diye tutulmaz. Bunlar ayrı bir tabloda tutulmalıdır. ÖNEMLİ: Verileri virgül veya bir başka karakter ile ayırıp aynı alana girmek ve daha sonra program içerisinde bu değerleri ayırmak ilişkisel veritabanının doğasına terstir. 7
4.2. Normalizasyon (devam…) 8 BİL 301 - Veri Tabanı ve Yönetimi 4.2. Normalizasyon (devam…) Bir tablodaki tüm alanlar, o tablonun Primary Key (PK) alanına bağlı olmak zorundadır. Yani Kişi tablosu için konuşursak, Kişi tablosunun PK’sı yani indekslendiği alan, KisiNo alanıdır. Örneğin KisiNo’su 1 olan bir kayıtta, KisiNo’su 2 olan birisinin bilgileri bulunamaz. O zaman karışıklık meydana gelir. Ayrıca, Kisi tablosunda Kisi’ye ait olmayan veriler tutulamaz. Bu kural doğal olarak ilişkide bulunulacak her tablonun PK alanının bulunması gerekliliğini de beraberinde getirir. Primary Key alanı olmazsa performanslı bir yapıda olmaz. 8
4.2. Normalizasyon (devam…) 9 BİL 301 - Veri Tabanı ve Yönetimi 4.2. Normalizasyon (devam…) Tabloları tutarlı bir şekilde mümkün olan en ufak boyutta (alan sayısı olarak) tutmak gereklidir. Tablodaki diğer alanları başka tablolara ekleyerek tablolar arasında ilişkiler kurulmalıdır. 9
4.2. Normalizasyon (devam…) 10 BİL 301 - Veri Tabanı ve Yönetimi 4.2. Normalizasyon (devam…) Bir PK ile PK olmayan alanlar arasında bire çok ilişki olmamalıdır. Örneğin kişimizin çalıştığı yerlerin tutulduğu bir tablo daha olsun. Aynı zamanda bizim için önemli olan kişilerin çalıştığı işlerin sektörleri olsun. Bu durumda Sektor diye bir tablo yapıp CalistigiIs tablosuyla ilişkilendirmemiz gerekmektedir. 10
4.2. Normalizasyon (devam…) 11 BİL 301 - Veri Tabanı ve Yönetimi 4.2. Normalizasyon (devam…) Sonuç olarak bir veritabanı tasarlanırken; Veri tekrarı yapılmamalıdır. Boş yer mümkün olduğunca az olmalıdır. İlişkilerin anlamsal bütünlüğü olmalıdır. İlişkilerde veri artıklığı (redundancy) önlenmelidir. Ekleme, silme ve güncelleme problemleri ortadan kaldırılmalıdır. İlişkilerde NULL değerlerden mümkün oldukça kaçınmalıdır Sorgularda bilgi tutarsızlığına yol açan tasarımlardan kaçınmalıdır. 11
4.3. Örnek Veritabanı Çalışması 12 BİL 301 - Veri Tabanı ve Yönetimi 4.3. Örnek Veritabanı Çalışması Problem: Bir okulda öğrencilere ait bilgiler, öğrencinin almış olduğu notlar, ders tanımları ve dersi veren öğretmene ait bilgilerin tutulmasını sağlayan bir veritabanı tasarlanmak isteniyor. Bir sonraki slaytta verilen bilgiler doğrultusunda; Varlık – İlişki diyagramını çiziniz? Normalizasyon işlemini gerçekleştiriniz? 12
4.3. Örnek Veritabanı Çalışması (devam…) 13 BİL 301 - Veri Tabanı ve Yönetimi 4.3. Örnek Veritabanı Çalışması (devam…) Yandaki tabloda verilen nitelikleri ve bu niteliklerin açıklamalarını dikkatlice inceleyin. 13
4.4. Örnek Veritabanı Çalışması 14 BİL 301 - Veri Tabanı ve Yönetimi 4.4. Örnek Veritabanı Çalışması Problem: Bahçe bitkileri satan bir firmaya ait bir veritabanı tasarlanmak istenmektedir. X firması satmakta olduğu ürünleri, farklı birçok firmadan temin etmektedir. Satılan her ürün belli bir kategoride toplanmaktadır. X firması gelen sipariş üzerine çalışmaktadır. Dolayısı ile sistemden alışveriş yapmak isteyen her müşteri, öncelikle sisteme kaydedilmektedir. Her müşterinin, mutlaka bir müşteri numarası olmalıdır. X şirketinin ürünlerinin müşteriye iletilmesini sağlayan çeşitli nakliye firmaları vardır. Bu nakliye firmaları, ürünlerin müşteriye iletilmesini sağlamaktadırlar. X firmasında birçok çalışan personel vardır. Sipariş verildiğinde hangi siparişi hangi personelin aldığı bilinmek istenmektedir. X firmasının satış yapabilmesi için deposunda çeşitli ürünleri stokta tutması gerekmektedir. Bu nedenle firma ürünlere ait bilgileri de saklamak zorundadır. Her ürüne bir ürün kod numarası verilmektedir. Bu ürünlerin tedarik edildiği satıcı firma bilgilerinin de sistemde kayıtlı olması istenmektedir. 14
4.4. Örnek Veritabanı Çalışması (devam…) 15 BİL 301 - Veri Tabanı ve Yönetimi 4.4. Örnek Veritabanı Çalışması (devam…) Bir önceki slaytta verilen probleme ilişkin kavramsal modeli dikkate alarak; Varlık – ilişki diyagramını çiziniz. Normalizasyon işlemini yapınız. SQL Server üzerinde bu veritabanını oluşturarak, tablolar arasındaki ilişkileri belirtiniz. 15