Veritabanı: Herhangi bir konuda, birbiri ile ilgili verilerin sistematik şekilde saklandığı modellerdir. Nüfus, Okul, Banka, ERP vb. Veritabanı yönetim sistemi: Veritabanı oluşturmak, tablo oluşturmak, veri girişi yapmak, verileri aramak, verilerden bilgi (veya yeni veri) elde etmek, verileri güncellemek, verileri silmek, yetkilendirme, güvenlik, bakım gibi işlemlerin yapılabildiği yazılımlardır. SQL (1980), T-SQL, PL/SQL MySQl, MsAccess, MsSQL, DB2, PostgreSQL, Oracle vb. Metin, Ses, Resim, Grafik, Video (çoklu ortam VTYS) VTYS Avantajları: Veri tekrarı önlenir (maliyet de azalma) Veriler üzerinde işlemler kolayca yapılabilir (SQL) Veri aynı anda birçok yerde güncellenebilir (tutarlılık - cascade) İşlemler dosya sistemine göre daha hızlıdır Standartlaşma sağlanır Uygulama programlarından bağımsız olarak veri tabanı oluşturulabilir Dil zorunluluğu/Erişim Güvenlik Yedekleme/Bakım İzin/Yetki (paylaşım – aynı anda erişim) VTYS Dezavantajları: İyi tasarlanmamış Bakım zor ve pahalı Veri Modellerine göre VTYS Hiyerarşik (veri tekrarı) Veritabanındaki kayıtlar birbirlerine ebeveyn – çocuk ilişkisi ile bağlıdır o Veri tekrarı o Veri kaybı Ağ (karmaşık) Hiyerarşik modelin geliştirilmiş şeklidir İlişki hiyerarşik yapıdan farklı olarak tek yönlü değildir o böylece veri tekrarı önlenir o fakat daha karmaşık bir model oluşur İlişkisel Veriler, satır ve sütun olmak üzere iki boyutlu tablolarda saklanır Tablolar arasındaki bağlantı, tablolar arasındaki ilişkiler ile sağlanır Tasarlamak ve yazılımlardan erişmek daha kolaydır Nesne (esnek yapı, hız) Veriler sınıflar halinde saklanır Sınıfların özellikleri ve davranışları vardır İlişkisel veritabanı modelinde veriler, satır ve sütun olmak üzere iki boyutlu tablolarda saklanır. Tablolar arasında geçiş fonksiyonları tablolar arasındaki ilişkiler ile kurulur. Tasarlamak ve uygulama programından veritabanına erişmek kolaydır. Nesne Tabanlı veritabanı modelinde veriler sınıflar halinde saklanır. İlişkisel veritabanı modelinde yazılan sorguların sözdizimi Visual Studio gibi program geliştirme ara yüzünde kontrol edilemez iken Nesne Tabanlı veritabanı modelinde yazılan sorguların sözdizimi Visual Studio gibi program geliştirme ara yüzünde kolayca yönetilebilir. Nesne Tabanlı veritabanı modelinde veritabanında yapılacak oluşturma, silme, değiştirme gibi işlemler uygulamadan bağımsız yapılamaz iken, İlişkisel Veritabanı modelinde veritabanında yapılacak bu işlemler uygulamadan tamamen bağımsız gerçekleştirilebilir. Nesne Tabanlı veritabanı modelinde, uygulama yazılımında yapılacak, veritabanı objeleri oluşturma, silme, değiştirme vb. işlemler sonucu, uygulama yazılımının yeniden derlenmesi zaman kaybına neden olurken, İlişkisel veritabanı modelinde mapping zaman kaybına neden olmaktadır. Nesne Tabanlı veritabanı modelinde uygulama yazılımının içerisinde yazılan sorgu veritabanının türüne (Oracle, MSSQL, MySQL vb) bağlı değil iken, İlişkisel veritabanı modelinde uygulama yazılımının içerisinde yazılan sorgunun sözdizimi veritabanının türüne göre farklılaşabilir. Kavramlar: Tablo, Alan, Veri, Kayıt, Anahtar Alan, İlişki (Örneğin Okul Veritabanı) Şema, Tablo,View, Prosedür, Kullanıcı VERİ TABANI TASARIMI İleride çıkabilecek sorunlar dikkate alınmalıdır Değişik yerlerde kullanılabilme esnekliği olmalıdır Fazladan tablolar, alanlar tanımlanabilir Standartlaşma sağlanmalıdır Verilerden elde edilen veriler olabilir Varlık: Tablo haline getirilecek yapılardır. Her bir varlık bir tablo haline getirilir. Nitelik: Bir varlığı tanımlar. Niteliğin ismi varlıkta (mümkünse veritabanı modelinde) eşsiz (tek) ve anlaşılır (anlamlı) olmalıdır. Her nitelik bir alan ismi olur. Anahtar Nitelik: Varlığın her bir örneği eşsiz olmalıdır. Bunun için bir anahtar nitelik kullanılabileceği gibi birden fazla nitelik de beraberce anahtar nitelik oluşturabilirler. Anahtar nitelik yok ise mutlaka oluşturulmalıdır. Anahtar nitelik birincil anahtar olabilir. NORMALİZASYON KURALLARI Tabloda tekrar eden veriler olmamalı, veri uyumsuzluğu bulunmamalıdır (Alpaslan – Alparslan, 54 - Sakarya) Her tabloda tek bir varlığın verileri saklanmalıdır (öğrenci notlarının bulunduğu tabloda, dersin sınıf bilgisi bulunmamalıdır) Tablodaki her alan tek bir veriyi göstermelidir. Her tabloda, o tablodaki kayıtları eşsiz yapacak bir alan bulunmalıdır Tablolarda boş değer (null) taşıyan alanlar mümkün olduğunca az olmalıdır. Birinci normal durum: Tekrar eden alan yok Her varlık ayrı bir tabloda Her tabloda bir birincil anahtar alan var Tablodaki her hücre tek bir veri saklar (bir hücrede birden fazla öğrenci notu yok) Kaynak: T.C. Millî Eğitim Bakanlığı Bilişim Teknolojileri Veri Tabanı Tasarımı 481bb0124 Ders Notları İkinci normal durum: Her varlık ayrı bir tabloda Tablolar yabancı anahtarlar ile ilişkilendirilir Kaynak: T.C. Millî Eğitim Bakanlığı Bilişim Teknolojileri Veri Tabanı Tasarımı 481bb0124 Ders Notları Üçüncü normal durum: Tablodaki alanlar birincil anahtar ile ilişkilidir Birincil anahtar ile ilişkili olmayan alanlar diğer alanlardan elde edilebilirler (bu olay gerçekleştirilemiyorsa, bu alanlar oluşturulan başka bir tabloya aktarılırlar) Kaynak: T.C. Millî Eğitim Bakanlığı Bilişim Teknolojileri Veri Tabanı Tasarımı 481bb0124 Ders Notları VARLIK İLİŞKİ DİYAGRAMI VARLIK İLİŞK İ NİTELİK ANAHTAR NİTELİK İLİŞKİLER 1 1 Kaynak: Veritabanı Tasarımı ve Yönetimi, Uzm. Murat YAZICI Kaynak: Veritabanı Ders Notları, Yrd.Doç.Dr. Buket Doğan ∞ 1 TÜRETİLEN NİTELİK Kaynak: Veritabanı Tasarımı ve Yönetimi, Uzm. Murat YAZICI Kaynak: Veritabanı Ders Notları, Yrd.Doç.Dr. Buket Doğan ∞ 1 Kaynak: Veritabanı Ders Notları, Yrd.Doç.Dr. Buket Doğan ∞ ∞ Kaynak: Veritabanı Tasarımı ve Yönetimi, Uzm. Murat YAZICI Kaynak: Veritabanı Tasarımı ve Yönetimi, Uzm. Murat YAZICI Zayıf Varlık: Varlığı diğer bir varlığa bağlı olan varlıklardır. Niteliklerinin tümü bile bir anahtar alan oluşturamaz. Örneğin fakülteler farklı üniversitelerde aynı isimlerde bulunabilirler. Bu nedenle fakülteler üniversitelere bağlı zayıf varlık kümeleridirler. Kaynak: Veritabanı Tasarımı ve Yönetimi, Uzm. Murat YAZICI VARLIK İLİŞKİ DİYAGRAMLARININ İLİŞKİSEL VERİTABANINA DÖNÜŞTÜRÜLMESİ Varlık ilişki modelindeki her varlık için bir tablo oluşturulur. Eğer varlıkta en az bir anahtar var ise, varlığın nitelikleri direk tablo alanı olarak gösterilir. OGRENCI (OgrNo, Ad, Soyad) DERS (DersKod, DersAd, Kredi) Eğer varlığın anahtar niteliği yok ise (tüm nitelikler birlikte kullanıldığında bile eşsiz kayıt oluşmuyor ise), bu zayıf varlığın niteliklerini tablo alanı olarak oluşturmak yeterli olmayacaktır. Bu durumda tablo alanları oluşturulurken, zayıf varlığın tablodaki alanlarına ek olarak, zayıf varlığın bağımlı olduğu güçlü varlıktan anahtar nitelik de alan olarak bu tabloya eklenir. UNIVERSITE (UniKod, UniAd, UniSehir) FAKULTE (UniKod, FakulteNo, FakulteAd, FakulteYil) Varlık ilişki diyagramındaki her ilişkinin tabloya dönüştürülmesi şart değildir. Eğer ilişki bire – bir veya bire – çok ise, varlıklardan birinin anahtar niteliği diğer tablonun alanlarına eklenir. Yalnızca çoka – çok ilişkiler için tablo oluşturulur. SATTIĞI (MAĞNO, ÜRÜNKODU, MİKTAR) Kaynak : VERİ TABANI YÖNETİMİ, Yrd. Doç. Dr. Altan MESUT, Trakya Üniversitesi, Bilgisayar Mühendisliği Eğer bir ilişki, ikiden çok varlık arasında kurulmuş ise, oluşturulan tabloya (ikiden çok varlık arasındaki ilişki için mutlaka tablo oluşturulmalıdır) her varlığın anahtar niteliğine ek olarak ilişkinin nitelikleri de alan olarak eklenir. KONSER (KONSNO, TARİH, SALON) MÜZİSYEN(MZSNO, ADI, SOYADI) ESER (ESNO, ESADI, BESTECI, ESTÜRÜ) KATILIM(KONSNO, MZSNO, ESNO, GÖREVİ) Dikkat : Yukarıdaki varlıkların ikili ilişkilerinin tamamı çoktan – çoka. Kaynak : VERİ TABANI YÖNETİMİ, Yrd. Doç. Dr. Altan MESUT, Trakya Üniversitesi, Bilgisayar Mühendisliği Birden – çoka veya çoktan – bire (bir yönde işlevsel) ilişkisi olan iki varlık tablolara aktarılırken, ilişki için yeni bir tablo oluşturmaya gerek yoktur. Kaynak : VERİ TABANI YÖNETİMİ, Yrd. Doç. Dr. Altan MESUT, Trakya Üniversitesi, Bilgisayar Mühendisliği BÖLÜM (BNO, BADI) PERSONEL (PNO, ADI, SOYADI, DOĞTAR, BNO, GÖREVİ, GBAŞTAR) Bire – bir ilişki olan (ilişki her iki yönde de işlevsel) iki varlık tabloya aktarılırken, ilişki için yeni bir tablo oluşturmaya gerek yoktur. Varlıklardan birinin anahtar niteliği, ilişkinin nitelikleri ile beraber, diğer varlığın tablosuna alan olarak eklenmelidir. Hangi varlığın anahtar niteliğinin diğer varlığın tablosuna ekleneceği, iki varlık arasındaki ilişkinin anlamına göre seçilebilir. BÖLÜM (BNO, BADI) PERSONEL (PNO, ADI, SOYADI, DOĞTAR, BBNO, GBAŞTAR) Dikkat : BBNO, Başkan olunan bölümün numarası. Ya da BÖLÜM (BNO, BADI, BPNO, GBAŞTAR) PERSONEL (PNO, ADI, SOYADI, DOĞTAR) Dikkat : BPNO, Bölümün başkanının personel numarası. Varlığın kendisine de ilişki tanımlanabilir. Bu varlık ilişki diyagramının ilişkisel veritabanına dönüştürme işlemi, birden çok varlık arasındaki ilişkinin ilişkisel veritabanına dönüştürülme işlemleri ile benzerdir. PERSONEL (SİCİLNO, ADI, GBAŞTAR, GÖREVİ, BÖLÜMÜ, YSİCİLNO) ÜRÜNLER(Ürün ID, Ürün Adı, Alış Fiyatı, Satış Fiyatı, Kategori ID, Firma ID) KATEGORİLER(Kategori ID, Kategori Adı, KDV Oranı) FİRMALAR(Firma ID, Firma Adı, Telefon, Adres) MÜŞTERİLER(Müşteri ID, Adı, Soyadı, Adresi, Telefonu) SİPARİŞLER(Sipariş ID, Müşteri ID, Tarih) SİPARİŞ_DETAY(Sipariş ID, Ürün ID, Adet) Kaynak: Veritabanı Tasarımı ve Yönetimi, Uzm. Murat YAZICI İLİŞKİSEL CEBİR İlişki – Tablo Herhangi bir yorumlayıcıya gerek olmadan, biçimsel olarak yapılan sorgulamadır. Kaynak: http://e-bergi.com/y/Iliskisel-Cebir Seçme (Selection) Bir tablodan belirli kriterlere göre bazı kayıtları seçme sorgusudur. Sonuçta tekrarlar yoktur. Sonucun yapısı kaynağın yapısı ile aynıdır. Sonuç başka bir ilişkisel cebir işlemi için kaynak olarak kullanılabilir. σyil<2001(Ogrenci) σders=mat191Λogretmen=s1112(OgrenciDers) Yansıtma (Projection) Bir tablodan istenilmeyen özeliklerin ve tekrarlı kayıtların çıkarıldığı sorgudur. πOgrNo, OgrAd, OgrSoyad, mail(Ogrenci) πOgrNo, OgrAd, OgrSoyad, mail(σyil<2001(Ogrenci)) Birleşim (Union) Özellik sayıları aynı olan, aynı sıradaki özelliklerinin veri tipleri de aynı olan tablolar üzerinde uygulanabilir. Tablo1 υ Tablo2 πOgrNo, OgrAd, OgrSoyad, mail(Lise) υ πOgrNo, OgrAd, OgrSoyad, mail(Dershane) Kesisim (Intersection) Özellik sayıları aynı olan, aynı sıradaki özelliklerinin veri tipleri de aynı olan tablolar üzerinde uygulanabilir. Tablo1 ηTablo2 πOgrNo, OgrAd, OgrSoyad, mail(Lise) η πOgrNo, OgrAd, OgrSoyad, mail(Dershane) Fark (set – difference) Özellik sayıları aynı olan, aynı sıradaki özelliklerinin veri tipleri de aynı olan tablolar üzerinde uygulanabilir. Tablosonra – Tabloonce πOgrNo, OgrAd, OgrSoyad, mail(KayitSon) - πOgrNo, OgrAd, OgrSoyad, mail(KayitOnce) Kartezyen Çarpım (Cross – product) (χ) Farklı iki tabloya uygulanır. Kartezyen çarpımı işlemi yapılır. Tablo1 χ Tablo2 Tablo1 A B a 1 b 2 Tablo2 C c d e D 1 2 3 E f g h Tablo1 X Tablo2 A B C a 1 c a 1 d a 1 e b 2 c b 2 d b 2 e D 1 2 3 1 2 3 E f g h f g h Şartlı Birleştirme (Conditional Join)( (⋈c) İkili bir işlemdir. İki tabloda en az 1 ortak alan olmalıdır. Eşit Birleştirme (Equijoin)( ⋈e) Doğal Birleştirme (Natural Join)( ⋈) Bölme (Division) İkili bir işlemdir. İki tabloda en az 1 ortak alan olmalıdır.