BTP 209 SİSTEM ANALİZİ VE TASARIMI VERİ TABANLARI VE VERİ TABANI YÖNETİMİ Dr. Önder EYECİOĞLU 2012 VERİ TABANI VE VT YÖNETİMİ Veri Tabanı (DB), birbiriyle ilişkili verileri yönetmek ve sunmak için kullanılan tablolar, formlar, veri erişim sayfaları, sorgular ve raporlardan oluşan nesneler topluluğudur. Veriler ve bunlar arasındaki ilişkileri de içerir. Veri hiyerarşisinin en üstündeki yapıdır. Veri yönetimi yaklaşımları Verinin yönetilmesinde iki yaklaşımdan söz edilebilir. i) Geleneksel Yaklaşım ii) Veritabanı (VT) Yaklaşımı i. Geleneksel yaklaşım: Bu veri yönetimi yaklaşımı, dosya kökenlidir. Bu yaklaşımda her bir uygulama kendi dosyalarıyla yürütülmektedir. Veri yönetimi yaklaşımları Geleneksel yaklaşımın dezavantajları. Veri tekrarlılığı, Dosyalar arası kopukluk, Program/veri bağımlılığı ii.) Veritabanı (VT) yaklaşımı: Bu yaklaşımda, her bir uygulama, birleştirilmiş veri dosyalarını kullanmaktadır. Yani veri dosyaları birleştirilmiştir. Bu yaklaşım, verinin birden fazla programca kullanılmasına izin veren bir yaklaşımdır. Veri yönetimi yaklaşımları Veri yönetiminde, VT yaklaşımın kullanmak için ilave bir yazılım yani Veri Tabanı Yönetim Sistemi gerekir. VTYS, bir organizasyonun, veriyi merkezileştirmesine, onları etkin bir şekilde idare etmesine ve saklanmış veriye uygulama programlarınca erişilmesine olanak tanıyan bir yazılımdır. VTYS, uygulama programları ile fiziksel veri tabanı arasında bir arayüz olarak görev yapmaktadır. • Filemaker • MySQL • PostgreSQL • Oracle • Sybase • MsSQL • Berkeley • Firebird • Ms access VERİ TABANLARI (DB) VT Faydaları • Verileri tekrarını ortadan kaldırır • Kaynakların daha verimli kullanılmasını sağlar. • Sorgulamaya olanak sağlar • Veri bütünlüğü sağlar ve veriler arası ilişkiyi gösterir. VT uygulamaları iki temel türe ayrılır. • Düz-dosya VT • İlişkisel (Relational- RDBMS) 1. Düz - Dosya VT 2. İlişkisel VT İlişkisel veri tabanı, birbirinden farkı tablolara yerleştirilmiş olan verilerin birbirleri ile belirli alanlara göre ilişkilendirilerek düzenlenen veri tabanlarıdır. İlişkisel veri tabanı günümüzde en yaygın olarak kullanılan veri tabanı türüdür. İlişkisel veri tabanlarında veriler tablolarda birbirleri ile ilişkili bir şekilde saklanmaktadır. İlişkisel VT ; • Tablolar • Formlar • Veri Erişim sayfaları • Sorgular • Raporlar dan oluşur İlişkisel veri tabanları birden fazla tablodan oluşabilir. Tablolar ise satır ve sütunlardan oluşur. Tablolarda satır ve sütunların kesiştiği noktaya ise “hücre” adı verilir. Tablo içerisindeki satırlar tablonun kayıtlarını oluşturur. Anahtar alan ise tablonun tanımlayıcısı niteliğindedir. 2. İlişkisel VT Tabloların özellikleri. • Tablolar satır ve sütunlardan oluşur. • Her sütunun alacağı isim birbirinden farklı olmalıdır. • Her satır birbirinden farklı olmalıdır yani birbiri ile tamamen ayni olan iki kayıt kullanılmamalıdır. • Satırların ve sütunların sırasının nasıl olacağı önemli değildir. • Hücrelerdeki veriler atomik olmalıdır. 2. İlişkisel VT İlişkiler: Varlıklar arasındaki bağlantıdır. Bir yada daha fazla varlık arasında olabilir. 2. İlişkisel VT İlişkilerin Türleri: • Birden - Bire • Birden - Çoğa • Çoktan - Bire • Çoktan - Çoğa 1. Birden – bire İlişki: 2. İlişkisel VT 2. Birden – Çoğa İlişki: 3. Çoktan – Bire İlişki 4. Çoktan – Çoğa İlişki: 2. İlişkisel VT Kısıtlamalar Bir veri tabanında depolanan bilgiler arasında bir bütünlük olması yani verilerin birbirleri ile uyumlu olması gerekmektedir. Böylelikle veriler arasında kopukluk olmayacak, geçerli bir veritabanı oluşturulmuş olacaktır. Bütünlük kısıtlamaları, veri tabanında depolanacak verileri kısıtlayan koşullar olarak adlandırılır. Bir veritabanına kısıtlamalar uygulanarak sadece geçerli verilerin depolanmasını sağlayabiliriz. 1.3.2.1. Anahtar Kısıtlamaları Birincil anahtar(primary key) veya yabancı anahtar(foreign key) türlerinden birisi seçilerek kısıtlamaların gerçekleştirilmesi sağlanmaktadır. 2. İlişkisel VT İlişkisel yapıyı kullanan veritabanlarının diğer temel özellikleri: • Sorgulama özelliği bir uygulama programı kullanılmaksızın bir üst düzey dilin özel komutları ile veri tabanından bilgi çekilmesini sağlar. • Raporlama özelliği sorgulama sonuçlarının sorgulama sonuçlarının ekran görünüşlerini ya da rapor formatının düzenlenmesini sağlar. NORMALİZASYON • İlişkisel veri tabanları tasarlanırken verilerin gereksiz tekrarını, bilgilerin kaybını önlemek amacıyla normalizasyon işlemi uygulanması gerekir. Normalizasyon işlemi uygulanarak da ilişkilerin normal forma getirilmesi sağlanır. • İyi tasarlanmamış olan bir veri tabanında güncelleme, ekleme veya silmeden kaynaklanan sapmalar nedeniyle birtakım kullanım zorlukları meydana gelmektedir. Normalizasyon, veri tabanı tasarımında bu tür sapmaların da ortadan kaldırılmasını sağlayan bir süreç olarak da adlandırılabilir. • Normalizasyon genel anlamda, veri tekrarını önlemek ve veri tutarlılığını yükseltmek için verilerin tek bir tabloda toplanması yerine mantıksal bütünlüğe sahip verilerden oluşan bir alt tablolar oluşturup bunları anahtar sütunlar ile birbirleri ile ilişkilendirmektir. • Normal formların 1NF, 2NF 3NF …. Gibi safhaları vardır. Her normal form daha güçlü yani daha az veri tekrarı içerir. • Temel ilişkisel VT da hedef 3NF dir. NORMALİZASYON Veri Fazlalığı: Veri fazlalığı, mutlak veri fazlalığı ve gereksiz veri tekrarı olarak ortaya çıkar.. 1. Mutlak Veri Fazlalığı: NORMALİZASYON İşlevsel Bağımlılık • R bir ilişki şeması, X ve Y nitelik kümeleri ise R’nin alt kümeleri olsun (X ⊆ R, Y ⊆ R). • Eğer X nitelik kümesinin değerleri Y nitelik kümesinin değerlerini belirliyorsa (X’in her farklı değeri Y’nin belirli bir değerine karşılık geliyorsa); “Y niteliği X niteliğine işlevsel bağımlıdır” denir ve “X → Y” şeklinde gösterilir. • X’ten bir nitelik çıkarıldığı halde bu bağımlılık hâlâ geçerli ise kısmi bağımlılık (partial dependency) söz konusudur. NORMALİZASYON 1NF Normalleşmemiş Tablo • Aynı tablodaki yinelenen grupları kaldırın. • Her bir ilgili veri kümesi için ayrı bir tablo oluşturun. • Her bir ilgili veri kümesini bir birincil anahtarla tanımlayın. müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 1,2,3,4,6 300,200,400,200,100 2 6 Ankara 1,2 300,400 3 6 Ankara 2 200 4 34 İstanbul 2,4,5 200,300,400 şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 1 300 1 34 İstanbul 2 200 1 34 İstanbul 3 400 1 34 İstanbul 4 200 1 34 İstanbul 6 100 2 6 Ankara 1 300 2 6 Ankara 2 400 3 6 Ankara 2 200 4 34 İstanbul 2 200 4 34 İstanbul 4 300 4 34 İstanbul 5 400 1NF Tablo müşteri_no NORMALİZASYON 1NF 1NF Özellikleri • Tüm anahtar özellikler tanımlanmıştır • Tabloda tekrarlanan gruplar yoktur Yani her satır ve sütunun kesiştiği noktada sadece bir değer bulunmaktadır. • Tüm özellikler birincil anahtara bağımlıdır 1NF Sorunları • Satır ekleme sorunu: • Satır Silme Sorunu: • Güncelleştirme sorunu: NORMALİZASYON 2NF Veri tabanı tasarımı sırasında birinci normal formun neden olduğu birtakım sorunları çözmek için 1NF daki tabloyu başka normal tablolara bölmemiz gerekir. Tablolar bölünürken fonksiyonel bağımlılık göz önünde bulundurulmalıdır. • Birden çok kayıt için geçerli olan değer kümeleri için ayrı tablolar oluşturun. • Bu tabloları bir yabancı anahtarla ilişkilendirin. • Kayıtlar bir tablonun birincil anahtarı (gerekirse bir bileşik anahtar) dışında bir öğeye bağımlı olmamalıdır. • İlişkisel tablonun her bir anahtar olmayan sütunu birincil anahtara kısmi bağımlı değil, tam işlevsel bağımlı olmalıdır. NORMALİZASYON 2NF müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 3 4 müşteri_no gönderi_no miktar 1 1 300 Ankara 1 2 200 6 Ankara 1 3 400 34 İstanbul 1 4 200 1 6 100 2 1 300 2 2 400 3 2 200 4 2 200 4 4 300 4 5 400 müşteriler miktarlar DAĞITIM(müşteri_no, şehir_kodu, şehir_adı, gönderi_no, miktar) MÜŞTERİLER(müşteri_no, şehir_kodu, şehir_adı) MİKTARLAR(müşteri_no, gönderi_no, miktar) NORMALİZASYON 2NF NORMALİZASYON 2NF 2NF Özellikleri 2NF’de,1NF’den farklı olarak tablolar tekrarlı verilerden arındırılmış olup, anahtar olmayan tüm sütunlar, birincil anahtara tam işlevsel bağımlıdır. 2NF Sorunları İkinci normal formda ekleme ve silme işlemleri sırasında birtakım sorunlarla karşılaşılabilmektedir. Birinci normal formdaki güncelleme sorunu 2NF’ye dönüştürme işlemi ile çözülmüştür. • Satır ekleme sorunu: Satır Silme Sorunu NORMALİZASYON 3NF • Kısmi işlevsel bağımlılıklar ortadan kaldırılarak birinci normal formdaki sıkıntıları çözmüştük. İkinci normal form ile ortaya çıkan sıkıntıları çözebilmek için ise nitelikler arasındaki geçişli fonksiyonel bağımlılıkları ortadan kaldırmamız gerekmektedir. . • Bir tablodaki veriden başka bir tabloda bulunan aynı veri üzerinden ilişkili diğer bir veriye ulaşıp, ulaştığımız veriyi kullanarak üçüncü bir tabloda farklı bir veriye erişebiliyorsak bu işlemi geçişli fonksiyonel bağımlılık olarak adlandırırız. NORMALİZASYON 3NF miktarlar şehirler şehir_kodu şehir_adı müşteri_no gönderi_no miktar 6 Ankara 1 1 300 34 İstanbul 1 2 200 35 İzmir 1 3 400 1 4 200 1 6 100 müşteriler müşteri_no şehir_kodu 2 1 300 1 34 2 2 400 2 6 3 2 200 3 6 4 2 200 4 34 4 4 300 5 35 4 5 400 NORMALİZASYON 3NF NORMALİZASYON 3NF 3NF Özellikleri 3NF özelliğindeki tablolar hem 2NF’nin özelliklerine sahip olmalı hem de geçişli fonksiyonel bağımlılığı bulunmamalıdır. ÖZEL DURUM: Üçüncü normal form teorik olarak istense de her zaman uygulanabilir değildir. Bir Müşteriler tablonuz varsa ve tüm olası alanlar arası bağımlılıkları kaldırmak isterseniz şehirler, posta kodları, satış temsilcileri, müşteri sınıfları ve birden çok kayıtta yinelenebilecek tüm diğer öğeler için ayrı tablolar oluşturmalısınız. Teorik olarak, normalleştirme yapılması doğrudur. Ancak çok sayıda küçük tablo nedeniyle performans düşebilir veya açık dosya ve bellek özellikleri yetersiz kalabilir. Üçüncü normal formun yalnızca sık sık değişen verilere uygulanması daha uygun olabilir. Bazı bağımlı alanlar kalacaksa, uygulamanızı kullanıcıdan herhangi bir alan değiştiğinde tüm ilgili alanları doğrulamasını isteyecek biçimde tasarlayın. NORMALİZASYON 3NF 3NF Sorunları • Tablodaki ilişki 3NF şeklinde olup birtakım sorunları mevcuttur. Bir öğrenci birden çok ders alabileceği gibi, bir derse birden fazla öğretmen girebilmektedir. Öğrenci birden çok ders alabileceği için, ÖğrNo anahtarı Dersi belirleyemeyecektir. Aynı şekilde ÖğrNo anahtarı da Ders Öğretmenini belirleyemeyecektir. • 3 NF’de karşılaşılan sorunları önlemek için Boyce-Codd normal formunu (BCNF) elde etmeye çalışmamız gerekir. NORMALİZASYON Boyce-Codd Normal Formu • Her belirleyicinin bir anahtar oluşu halidir. • Örnek olarak aşağıdaki ilişkiyi düşünelim: ÖĞRENCİ(ÖğrNo, Bölüm, Danışman) öğrenci ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN NORMALİZASYON 1NF ? 2NF ? 3NF ? Boyce-Codd Normal Formu ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN EVET (bütün niteliklerin aldığı değerler atomik) EVET (kısmi bağımlılık yok) EVET (geçişli bağımlılık yok) NORMALİZASYON • • 1. 2. Boyce-Codd Normal Formu ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN Her üç normal formu da sağlıyor. Sorun var mı? EVET 456 numaralı öğrenci silinirse Biyoloji ve K.SÖNMEZ yok olacak Bir öğrenci Matematik bölümüne kayıt olana kadar bu bölüm var olmayacak. NORMALİZASYON Boyce-Codd Normal Formu Çözüm: Belirleyicileri anahtar yap • Birincil Anahtar: – (ÖğrNo, Bölüm) • Aday Anahtar: – (ÖğrNo, Danışman) • İşlevsel Bağımlılıklar: – (ÖğrNo, Bölüm) → Danışman – Danışman → Bölüm Belirleyiciler ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN NORMALİZASYON Boyce-Codd Normal Formu öğrenci_danışman öğrenci ÖğrNo Bölüm Danışman 123 Fizik A. ERCAN 123 Kimya M. AKINCI 456 Biyoloji K. SÖNMEZ 789 Fizik A. ERCAN 999 Kimya B. ÖZKAN ÖğrNo Danışman 123 A. ERCAN 123 M. AKINCI 456 K. SÖNMEZ 789 A. ERCAN 999 B. ÖZKAN danışman_bölüm Danışman Bölüm A. ERCAN Fizik M. AKINCI Kimya K. SÖNMEZ Biyoloji B. ÖZKAN Kimya NORMALİZASYON ÖZET • NF: Normal olmayan form • 1NF: Bütün alan değerleri atomik ise R 1NF’de • 2NF: R 1NF’de ise ve anahtar olmayan tüm nitelikler anahtara tam bağımlı ise R 2NF’de • 3NF: R 2NF’de ise ve anahtar olmayan tüm nitelikler anahtara geçişsiz bağımlı ise R 3NF’de • BCNF: Her belirleyici bir aday anahtar ise R BCNF’de Belirleyici: Başka bir niteliğin tam işlevsel bağımlı olduğu nitelik NORMALİZASYON Örnek Ö.NO Ö.AD Ö.SOYAD DERS_NO DERS_ADI VIZE FINAL H.NO H.AD H.SOYAD 2001001 Ahmet Solmaz 202 Matematik 2 70 60 11 Özlem UÇAR 2001001 Ahmet Solmaz 203 Fizik 2 80 40 11 Özlem UÇAR 2001001 Ahmet Solmaz 204 Bilgisayar Mühendisliğine Giriş 2 60 45 3 Aydın CARUS 2001001 Ahmet Solmaz 205 Atatürk İlkeleri ve İnkılap Tarihi 2 90 95 9 Zeki DURMUŞ 2001001 Ahmet Solmaz 206 Türk Dili 2 70 75 12 Nebahat YILDIZ 2001005 Seyhan Gülmez 202 Matematik 2 80 95 11 Özlem UÇAR 2001005 Seyhan Gülmez 203 Fizik 2 80 70 11 Özlem UÇAR 2001005 Seyhan Gülmez 204 Bilgisayar Mühendisliğine Giriş 2 60 70 3 Aydın CARUS 2001002 Selim Solmaz 702 Veri Tabanı Yönetimi 60 50 6 Altan MESUT 2001003 Ahmet Vardar 702 Veri Tabanı Yönetimi 60 60 6 Altan MESUT 2001004 Sezai Kantar 702 Veri Tabanı Yönetimi 65 55 6 Altan MESUT NORMALİZASYON Örnek • Verilen şema 1. Normal Formda (atomik değerler) – OKUL (Ö.No, Ö.Ad, Ö.Soyad, Ders_No, Ders_Adı, Vize, Final, H.No, H.Ad, H.Soyad) • 2. NF’ye geçerken kısmi bağımlılıklar ortadan kaldırılır – NOTLAR(Ö.No, Ders_No, Vize, Final) – ÖĞRENCİLER(Ö.No, Ö.Ad, Ö.Soyad) – DERSLER(Ders_No, Ders_Adı, H.No, H.Ad, H.Soyad) • 3. NF’ye geçerken geçişli bağımlılıklar ortadan kaldırılır – NOTLAR(Ö.No, Ders_No, Vize, Final) – ÖĞRENCİLER(Ö.No, Ö.Ad, Ö.Soyad) – DERSLER(Ders_No, Ders_Adı, H.No) – HOCALAR(H.No, H.Ad, H.Soyad)