Dosya Organizasyonu ve Veritabanı Dosya Organizasyonu Dosya (file) aynı yapıya sahip ve birbirleri ile ilişki içerisinde olan kayıtlar (records) topluluğudur. Bir kayıt içindeki ayrı ayrı veri parçalarına alan (field) adı verilir. Örneğin bir öğrenci bilgileri dosyasını ele alırsak, öğrencinin adı, soyadı, numarası, aldığı dersler ve bu derslerden aldığı notlar ayrı ayrı birer alandır. Bir öğrenciye ait bütün bu alanlar bir araya gelerek öğrencinin kaydını oluşturmakta ve tüm öğrencilere ait kayıtlar da bir araya gelerek öğrenci bilgileri dosyasını oluşturmaktadır. Numarası Adı Soyadı Bölümü 122 Nedim Doğan Gazetecilik 456 Ece Mumcu Hukuk 342 Bilge Aydın Bilgisayar Mühendisliği Dosya yapıları veri tabanı denilen ve güncel uygulamalarda kullanılan yapının temelini oluşturur. Alanlar kayıtları, kayıtlar dosyaları oluşturur ve dosyaların bir araya gelmesi ile de veri tabanları oluşmaktadır. Bir veri tabanı sistemi, aralarında kayıt (record) düzeyinde ilişki bulunan dosyaların herhangi bir uygulama için bir araya getirilmesiyle oluşur. Bir yazılım sisteminden beklenen özellikler Hızlı cevap süresi Gerçek zamanlı uygulamalarda performans Geliştirilme için gereken toplam süre Etkin hafıza kullanımı Kullanılabilirlik Dosya organizasyonundaki amaç tüm bu beklentiler ve sınırlamalar altında en iyi performansı elde etmektir. Dosyalar büyük miktarda veriler içerdiklerinden veri depolama ortamlarında saklanırlar ve kullanış amaçlarına göre değişik şekillerde düzenlenirler. Düzenleniş biçimine göre ve veri depolama ortamına bağlı olarak bir dosyaya genel olarak 2 farklı biçimde erişilir: 1. Sıralı erişim: Bir veriye (bellekte, diskte veya kasette bulunan) önceden belirlenen bir sıra izlenerek birbiri ardı sıra ulaşılması anlamına gelir. Bu erişim bazen veriye ulaşmak için tek yoldur (kasetlerde gibi). Örneğin; 500 kayıt bulunan bir dosyada 280. sıradaki kayıta ulaşmak için o kayıta gelinceye kadar olan tüm kayıtların okunması gerekir. 2. Doğrudan erişim: Ulaşılmak istenen bir veriye, diğer kayıtlardan bağımsız olarak doğrudan erişmek mümkündür. Bunun için her bir kaydı diğer kayıtlardan ayıran anahtar (key) tanımlayıcısına ihtiyaç duyulur. Dosya Sistemlerinin Sakıncaları Klasik dosya sistemleri kullanılmaya başlandıktan sonra bazı dezavantajları olduğu ortaya çıkmıştır. Bunlar şöyle sıralanabilir: 1 Veri tekrarı: Aynı veri çeşitli dosyalarda birden fazla yer alabilmektedir buda sistemin hantallaşmasına neden olur. Mesela bir stok dosyasında stok numarası verisinin malzeme dosyasında, fatura dosyasında ve ambar girişi dosyasında yer alması gibi. Verinin birkaç dosyada güncellemesi: Veri birden fazla dosyada tekrar edilebildiği için, verinin bir dosyada güncellenip diğerlerinde güncellenmemesi Veri Bütünlüğünün (Data Integrity) bozulmasına neden olabilir. Buna bağlı olarak birbiri ile çelişen raporlar üretilebilir. Belleğin tekrarlı bilgi nedeniyle israfı: Aynı verinin birden fazla dosya içinde bulunması nedeniyle kullanılan veri hard diskte fazla yer işgal edecektir. Yani hard disk tekrarlı veriler için kullanılmış olacaktır. Sadece belirli bir dilin kullanılması: Verilerin dosya sisteminde saklandığı ortamlar için değişik programlama dillerinden bir tanesi kullanılır. Kullanılan bu programlama dili ise SQL dili gibi esnek değildir. Veritabanı Veritabanı, sistematik erişim imkânı olan, yönetilebilir, güncellenebilir, taşınabilir, birbirleri arasında tanımlı ilişkiler bulunabilen bilgiler kümesidir.1 “Birbiriyle ilişkili veriler” bir kuruluşun çalışabilmesi, işleyebilmesi için kullanılan çok çeşitli verilerdir. Ticari bir şirket için müşteri bilgileri, satış bilgileri, ürün bilgileri, ödeme bilgileri, vb., okul için öğrenci bilgileri, açılan dersler, kimlerin kaydolduğu, öğretmen bilgileri, boş ve dolu derslikler, sınav tarihleri, vb., hastane için hasta bilgileri, doktor bilgileri, yatakların doluluk boşluğu, teşhis-tedavi bilgileri, mali bilgileri, vb … Veri Tabanının Avantajları Gereksiz veri tekrarını önler:Geleneksel veri depolamak için kullanılan dosya sistemlerinde, bazı veriler gereksiz şekilde birçok kez tekrarlanır. Böylece milyonlarca kayıtın tutulduğu geleneksel dosya sistemlerinde dosya büyüklüğü gereksiz şekilde şişer. Örneğin Tablo 1’deki öğrenci kişisel bilgileri ve aldığı ders bilgilerinin geleneksel dosya sistemine göre tek bir tabloda tutulduğu kayıtlara bakılırsa, Koray Aydoğan isimli öğrencinin aldığı her ders bilgisi için, numara, adres, doğum tarihi ve bölüm bilgilerinin gereksiz şekilde tekrarlandığı görülür. Benzer şekilde BTP 108 kodlu dersin adı, o dersi alan bütün öğrenciler için 3 defa gereksiz şekilde tekrarlandığı görülür. Bu bilgileri veritabanına dönüştürülürse, öğrenci ve ders bilgileri ayrı tablolarda tutularak veri tekrarı önlenir. 1 Öğrenci No 08020633 Adı Soyadı Koray Aydoğan Adres 08020633 Koray Aydoğan Kağıthane/ İstanbul 08020633 Koray Aydoğan Kağıthane/ İstanbul 08020669 Tayfun İncereis Ümraniye/ İstanbul 08020669 Tayfun İncereis Ümraniye/ İstanbul Kağıthane/ İstanbul Bölüm Aldığı Ders Ders Adı Aldığı Not kodu Bilgisayar BTP 108 Veritabanı 3,5 Teknolojisi ve Yönetim Programalama Sistemleri Bilgisayar BTP 104 Veri 3,0 Teknolojisi ve Yapıları Programlama Bilgisayar BTP 106 Grafik ve 2,5 Teknolojisi ve Animasyon Programlama Bilgisayar BTP 108 Veritabanı 3,0 Teknolojisi ve Yönetim Programlama Sistemleri Bilgisayar BTP 104 Veri 3,5 Teknolojisi ve Yapıları http://altanmesut.trakya.edu.tr/vt/Ders1.ppt 2 Dönem II II II II II Programlama Bilgisayar BTP 103 Algoritma 2,5 I Teknolojisi ve ve Programlama Program. 08020669 Tayfun Ümraniye/ Bilgisayar BTP 105 Temel 4,00 I İncereis İstanbul Teknolojisi ve Elektronik Programlama 08020660 Orhan Gökçebostan Bilgisayar BTP 108 Veritabanı 3,0 II Yavuz Mh. / Sivas Teknolojisi ve Yönetim Demir Programlama Sistemleri 08020660 Orhan Gökçebostan Bilgisayar BTP 102 Bilgisayar 3,5 II Yavuz Mh. / Sivas Teknolojisi ve Donanımı Demir Programlama 08020660 Orhan Gökçebostan Bilgisayar ING 103 Yabancı 2,5 II Yavuz Mh. / Sivas Teknolojisi ve Dil Demir Programlama 08020660 Orhan Gökçebostan Bilgisayar BTP 104 Veri 4,00 II Yavuz Mh. / Sivas Teknolojisi ve Yapıları Demir Programlama Veri güvenliği sağlar: Bazı uygulamaları ürettiği verilerin güvenliğini sağlamak önemli konudur. Veritabanı kullanıcılarının veritabanının içerdiği tüm bilgilere kolayca erişmesi istenilen bir durum değildir. Örneğin, pazarlama bölümü uygulamalarında çalışan bir kullanıcının, diğer personel özlük bilgilerine ulaşması engellenmelidir. Bunun gibi, her kullanıcının erişebileceği veriler ayrı ayrı tanımlanmalıdır. Veritabanı sistemlerinde kullanıcılara veritabanı üzerinde çeşitli yetkiler atanır ve bu yetkiler veritabanı üzerindeki veriler ile birlikte saklanır. Çoklu kullanıcı erişimini sağlar: Veritabanı üzerindeki verilere aynı anda çok sayıda kullanıcı erişerek veriler üzerinde değişiklik yapabilir. Aynı andaki erişimlerde tutarsızlıkları önler: Veritabanı uygulamalarında, veritabanı nesneleri başka başka uygulamalar tarafından paylaşılabilir. Veriler aynı anda farklı uygulamalar ve dolayısıyla farklı kullanıcılar tarafından aynı anda paylaşılabilir. Örneğin; bir elektronik eşya satan bir firmanın veritabanında ürün stokunda 50 adet uydu alıcısı olduğunu varsayalım. İki farklı kullanıcıdan birinin aynı anda 25, diğerinin 30 adet uydu alıcı çıkışı yapmaya çalıştığını düşünelim. İşlem aynı anda yapıldığı için, 50 birimlik stoktan 55 birimlik çıkış yapılabileceği düşünülebilir. Ancak veritabanı yönetim sistemi buna izin vermez. Çıkışlar aynı anda yapılmasına rağmen, önce birincisini stoklardan çıkarır ve ikincisi için bir kontrol yaparak çıkışı önler. 08020669 Tayfun İncereis Ümraniye/ İstanbul Veri Tabanı Yönetim Sistemi VTYS Veri tabanı tanımlamak, yaratmak, yaşatmak ve veri tabanına denetimli erişim sağlamak için kullanılan yazılım sistemidir.2 Veri tabanı yönetim sistemi, kullanıcı ile veri tabanı arasında bir arabirim oluşturmaktadır ve veri tabanına her türlü erişimi sağlar. Veri tabanının tanımlanması: veri tabanını oluşturan verilerin tip ve uzunluklarının belirlenmesidir. Veri tabanını oluşturulması ise veri için yer belirlemesi ve saklama ortamına verilerin yüklenmesini ifade eder. Veri tabanı üzerinde işlem yapmak; belirli bir veri üzerinde sorgulama yapmak, meydana gelen değişiklikleri yansıtmak için veri tabanının güncellenmesi ve rapor üretilmesi gibi işleri temsil eder. Ayrıca veri tabanı yönetim sistemi, verinin geri çağrılmasını sağlar. Veri tabanına yeni kayıt eklemek, eskileri çağırmak ve gerekli 2 http://pozitron.sdu.edu.tr/dersnotlari/veri%20taban%C4%B1%20sistemleri%201/bol1.pdf 3 düzeltmeleri yapmak yoluyla, verinin bakımını ve sürekliliğini gerçekleştirir, kayıtlara yeni veri eklemek ve yeni kayıtlar oluşturmakla, veri tabanını genişletir. VTYS’ler fiziksel hafızayı ve veri tiplerini kullanıcılar adına şekillendirip denetleyen ve kullanıcılarına standart bir SQL ara yüzü sağlayarak onların dosya yapıları, veri yapısı, fiziksel hafıza gibi sorunlarla ilgilenmek yerine veri giriş-çıkışı için uygun arayüzler geliştirmelerine olanak sağlayan yazılımlardır. VTYS’de verileri tutmak üzere birçok türde nesne ve bu nesnelere erişimleri düzenlemek üzere kullanıcılar, roller ve gruplar yer alır. Her bir kullanıcının belli hakları vardır. Bu haklar, kısıtlanabilir. Örneğin bir tablo ya da programcığı bir kullanıcı kullanabilirken bir başkasının hakları veritabanı yöneticisi tarafından kısıtlanmış olabilir. Veri Tabanı Yönetim Sistemleri (VTYS) belirli bir veri modeline dayanır. Bir veri tabanı yapısının temelini veri modeli kavramı olusturmaktadır. Veriyi mantıksal düzeyde düzenlemek için; kullanılan kavramlar, yapilar ve islemler topluluguna “Veri Modeli” denir. Şu ana dek birçok veri modeli gelistirilmistir. Bunlar; Hiyerarşik Veri Tabanları: Bu veritabanı tipi, ana bilgisayar ortamlarında çalışan yazılımlar tarafından kullanılmaktadır. Bu türde en çok kullanılan yazılım, IBM tarafından çıkarılan IMS' dir. Uzun bir geçmişe sahip olmasına rağmen, PC ortamına uyarlanan hiyerarşik veri tabanları yoktur. Hiyerarşik veri tabanları, bilgileri bir ağaç (tree) yapısında saklar. Kök (Root) olarak bir kayıt ve bu köke bağlı dal (Branch) kayıtlar bu tip veritabanının yapısını oluşturur. Ağ (network) veri modeli: Hiyerarşik veri tabanlarının yetersiz kalmasından dolayı bilim adamlarının ortak çalışması sonucu ortaya konulmuş bir veri tabanı türüdür. Ağ veri tabanları verileri ağaçların daha da gelişmiş hali olan graflar (ağacın kendiside özel bir graftır.) şeklinde saklarlar. Bu yapı en karışık yapılardan biridir. İlişkisel veri modeli: E.F. Codd Tarafından 1970 yılında önerilmiştir. Bu sistemde veriler tablo şeklinde saklanır. Bu veri tabanı yönetim sisteminde; veri alış verişi için özel işlemler kullanılır. Günümüzde hemen hemen tüm veri tabanı yönetim sistemleri ilişkisel veri modelini kullanırlar. Bu model, matematikteki ilişki teorisine (“the relational theory”) dayanır. Tablolar arasında ilişkiler belirtilir. İlişkisel veri modelinde (Relational Data Model) veriler basit tablolar halinde tutulur. Tablolar, satır ve sütunlardan oluşur Nesneye yönelik veri modeli: Günümüzde nesne kavramı her yerde kullanılmaktadır. Pek çok kelime işlemci ve hesap tablosu programlarının alıştığımız görünümlerine artık bir de nesneler eklenmiştir. Ancak bu gerçek anlamda bir nesneye yönelik yazılım demek değildir. Yüzde yüz nesneye yönelik bir yazılımın tamamen nesneye temelli çalışması gerekir. Yazılımın mutlaka nesneye yönelik bir dilde yazılmış olması beklenir. Fakat Windows gibi işletim sistemi üzerinde çalışan yazılımlar bu özelliklere tümüyle sahip değillerdir. Sadece nesne kavramını kullanarak bazı ek özellikler sunarlar. Nesneye yönelik veri tabanı da , C++ gibi nesneye dayalı bir dille (OOPL) yazılmış olan ve yine C++ gibi nesneye dayalı (OOPL) bir dille kullanılan veri tabanı anlamına gelir. Günümüz teknolojisinde yüzde yüz nesneye yönelik bir veri tabanı yaygın olarak kullanıma sunulmuş değildir. Ancak nesneye yönelik veri tabanlarının bazı üstünlükleri olacağından söz edilmektedir. Sayılan bu veri modellerinin içinde en yaygın kullanılanı, ilişkisel veri modelidir. Günümüzde kullanılan VTYS'lerin hemen hemen tümü iliskisel veri modeline dayalidir. Son zamanlarda ortaya çıkan nesneye yönelik veri modeli, ilişkisel veri modeli (E-R (Entitiy-Relationship=Varlık-İlişki)) ile birlikte bazı VTYS'lerde kullanılmaktadır. 4 E-R modeli kavramları Varlık ve nitelikleri Gerçek hayatta diğerlerinden ayırt edilebilen nesnelere varlık denir3. Bir varlık, kişi, araba, ev veya çalışan gibi fiziksel nesneler olabileceği gibi, şirket, iş veya ders gibi fiziksel olmayan nesneler de olabilir. Her varlık kendisini tanımlayan kendisine has özelliklere sahiptir. Örneğin, bir çalışan varlığı, çalışan adı, yaşı, adresi, maaşı ve görevi özellikleri ile tanımlanır. Her varlığın niteliğinin bir değeri olur. Örneğin öğrenci varlığı olan o1 varlığının ad, öğrenci numarası, adres, telefon niteliklerinin değeri sırasıyla “Halil İbrahim Onay”, “08020618” “Gülbahar Mh., Rize”, “5128688888” verilebilir. Varlık kümesi Veritabanında benzer varlıklar ve nitelik değerlerinden oluşan Öğrenci No Ad kümeye varlık kümesi denir. Örneğin öğrenci varlıklarından o1 varlığı olan “Halil İbrahim Onay”, “080206018”, “Gülbahar Mh., Rize”, “5128688888”, ile birlikte o2 varlığı olan “Ferhat Kavcı”, Öğrenci “08020641”, “Avcılar, İstanbul”, “2125098888” ve o3 varlığı olan “Işıl Mavier”, “08020609”, “Manisa, Merkez”, “02362348888” tümü öğrenci varlık kümesini oluştururlar. ER şemasında varlık Adres Telefon kümeleri dikdörtgen içinde belirtilir. Nitelikler ise oval bir daire içinde belirtilerek ilgili varlık kümesine çizgi ile bağlanır. Şekil1’de öğrenci varlık kümesi ve ad, numara, adres ve telefon niteliklerinin şeması görülmektedir. Anahtar Nitelik Varlık kümesindeki bir veya daha fazla niteliğin değeri, her bir varlık için farklı ise bu nitelik anahtar niteliktir. Örneğin öğrenci varlık kümesinde öğrenciNo anahtar niteliktir. Çünkü bir üniversitede, öğrenci varlık kümesinde hiçbir varlığın öğrenciNo niteliği aynı olamaz. Benzer şekilde personel varlık kümesinde, sicilNo niteliği anahtar niteliktir. Hiçbir personelin sicilNo’su aynı olamaz. Anahtar nitelik, ER şemasında niteliğin altı çizilerek gösterilir. Şekil 2’de Personel varlık kümesinin anahtar niteliği ve diğer nitelikleri görülmektedir. Ad Sicil No Personel Adres Maaş Tek değerli nitelikler - çok değerli nitelikler Genellikle bir varlığın tek bir değeri vardır. Ad SicilNo Örneğin personel varlığının sicil numarası niteleiği tek değeri olur. Bir varlığın bir niteliğinin aldığı değer tek ise bu niteliğe tek değerli nitelik denir. Bakmakla Ancak bazı niteliklerin birden çok değeri olabilir. Personel yükümlü kişi Örneğin personel varlığının yabancı dil niteliği, birden çok değer alabilir. Bu durumda personel varlığının yabancı dil niteliği çok değerli nitelik denir. Başka bir örnek olarak, bir personelin Adres Maaş bakmakla yükümlü olduğu kişi niteliği bir kişi de olabileceği gibi birden çok kişi de olabilir. Bu durumda personel varlığının bakmakla yükümlü olduğu kişi niteliği çok değerli niteliktir. ER şemasında çok değerli nitelikler çift çizgili oval olarak gösterilir. 3 fatih.edu.tr/~zcetin/0708/bilg106/dokuman/Veritabani_ER.doc 5 Domain Varlık kümesinde niteliklerin alabileceği değerler aralığını belirler. Örneğin öğrenci varlık kümesinde, dogumTarih niteliği 01.01.1980 ile 01.01.1990 arasında olabileceğini belirlemek için domain kullanılır. Domain aralığı ER şemasında gösterilmez. İlişkiler İki veya daha fazla varlık kümesi arasında kurulan anlamlı bağıntılara ilişki denir. İlişkiler ER şemasında dörtgen ile gösterilir. Dörtgen içine ilişkinin adı yazılır. Personel varlık kümesi ile bölüm varlık kümesi arasında çalışır ilişkisi (Şekil 1), müşteri varlık kümesi ile ürün varlık kümesi arasında satın alır ilişkisi örnekleri verilebilir (Şekil 2). Personel çalışır Şekil 1. Personel- Bölüm varlık kümesi çalışır ilişkisi İki varlık kümesi arasında birden fazla ilişki de olabilir. Örneğin bölüm varlık kümesi ile öğrenci varlık kümesi arasında okur ilişkisi olabileceği gibi temsilcilik yapar ilişkisi de olabilir (Şekil ). Satın alır Müşteri Bölüm Ürün Şekil 2. Müşteri-Ürün varlık kümesi satın alır ilişkisi okur Bölüm Öğrenci Temsilci olur İlişkiDerecesi İlişkide bulunan varlık kümelerin sayısı ilişkinin derecesini oluşturur. Genelde ilişkiler iki varlık kümesi arasında yapılır. Ancak bazı durumlarda, ilişkide ikiden fazla kümesi yer alabilir. Örneğin bir personelin hangi projede hangi görevi yaptığı bilgisi gerekli ise; personel, proje ve görev varlık kümeleri arasında çalışır ilişkisi yapılır ( Şekil 7.4). Benzer şekilde hangi öğrencinin hangi dersi hangi öğretim görevlisi bilgisi gerekli ise; öğrenci, ders ve öğretim görevlisi arasında ders alır ilişki yapılır (Şekil 5). Görev Personel çalışır Ders Proje Öğrenci Şekil 4. Üç varlık kümesi arasındaki çalışır ilişkisi Ders alır Öğretim Görevlisi Şekil 5. Üç varlık kümesi arasındaki ders alır ilişkisi TanımlayıcıNitelik Varlık kümeleri arasındaki ilişkide oluşan niteliklere tanımlayıcı nitelik denir. Tanımlayıcı nitelikler ilişkinin olması ile var olabilir. İlişki oluşmaz ise bu nitelikler de var olamaz. Müşteri varlık kümesi ile 6 ürün varlık kümesi arasında satın alır ilişkisinde, müşterinin ürünü aldığı tarih ile satın aldığı ürünün miktarı nitelikleri tanımlayıcı niteliklerdir. Tanımlayıcı nitelikler ilişki ile bağlanır (Şekil 6). Ad Tarih Müşteri Satın alır UrunKod Ad MusteriNo Adres Ürün Fiyat Miktar Maaş Birim Şekil 6. Müşteri – ürün satın alır ilişkisinde tarih ve miktar tanımlayıcı niteliktir p1 ● 1. Bire-bir (1-1) ilişki A varlık kümesinin bir elamanı, B varlık kümesinin sıfır ya da bir elemanı ile ilişki kurabiliyorsa bu ilişki türüne bire-bir ilişki denir. Örneğin personel varlık kümesi ile bölüm varlık kümesi arasında yönetir ilişkisi bire-bir ilişkidir (Şekil ?- Şekil ?) SicilNo Ad Personel Adres Bölüm Personel İlişkiTürleri Varlık kümeleri aralarında 3 türde ilişki kurulabilir. Stokmikta Yönetir b1 p2 ● b2 p3 ● b3 p4 ● b4 p5 ● b5 BölümN 1 1 yönetir Bölüm Maaş BölümA Şekil. Personel - Bölüm yönetir 1-1 ilişkisi 2. Bire-birçok (1-n) ilişki Öğrenci A varlık kümesinin bir elemanı B varlık kümesinin 0 ya da birden çok elemanı ile ilişki kurabiliyorsa bu ilişki bire-bir ilişkidir. Örneğin öğrenci bölüm okur ilişkisinde bir öğrenci birebirçok ilişkidir. Bir öğrenci en çok bir bölümde okur iken, bir bölümde birden çok öğrenci okuyabilir (Şekil?) ö1 ● ö2 ● Okur b1 b2 b3 ö3 ● b4 ö4 ● b5 ö5 ● 7 Bölüm Ad ÖğrenciN BölümN Cinsiyet n Öğrenci Adres 1 Okur Doğum Tarih Bölüm BölümA Şekil 10. Öğrenci - Bölüm okur 1-n ilişkisi 3. Birçoğa-birçok (n-n ya da n-m) ilişki A varlık kümesinin bir elemanı, B varlık kümesinin sıfır ya da birçok eleman ile ilişki kurabiliyor ve B varlık kümesinin bir elemanı, A varlık kümesinin sıfır ya da birçok elemanı ile ilişki kurabiliyorsa bu ilişki türü birçoğa birçok ilişki türüdür. Birçoğa birçok ilişki kısaca n-m ilişki olarak da adlandırılabilir. Örneğin müşteri ile ürün varlık kümeleri arasında satın alır ilişkisi birçoğa birçok ilişkidir. Çünkü bir müşteri birden çok ürün satın alabilirken, bir ürünü birden çok müşteri satın alabilir (Şekil 11- Şekil 12). Müşteri Ürün Satın alır ü1 m2 ● ü2 m3 ● ü3 m4 ● ü4 m5 ● ü5 m1 ● Şekil 11. Müşteri-ürün satın alır n-m ilişkisi MusteriN Adres Ad Müşteri Tarih n Satın Alır UrunNo m Ürün Birim Telefon Miktar Şekil 12. Müşteri-ürün satın alır n-m ilişkisi 8 UrunAd Stok Miktarı 4. Tekrarlamalı (Recursive) İlişki Genellikle, ilişkiler farklı varlık kümeleri arasında oluşur. Ancak bazı durumlarda tek varlık kümesi üzerinde ilişki kurulabilir. Örneğin personel varlık kümesinde yönetir ilişkisi tekrarlamalı ilişkidir. Bir personel birden çok personeli yönetebilir. Bu ilişki Şekil 13 de görülmektedir. Şekil 14’te ikamet eden varlık kümesinde aile reisi olur ilişkisi tekrarlamalı ilişkidir. Bir ikamet eden diğer ikamet edenlerin aile reisidir. Benzer şekilde futbol takımlarının kendi aralarında maç yapar ilişkisi de tekrarlamalı (recursive) ilişkidir. Şekil (15) İkamet eden Personel 1 n Yönetir 1 Takımlar n Aile reisi m n Maç yapar Şekil 13. Personel varlık Şekil 14. İkamet eden varlık Şekil 15. Takımlar varlık kümesinin yönetir 1-n kümesinin aile reisi olur 1-n kümesinin maç yapar n-m tekrarlamalı ilişkisi tekrarlamalı ilişkisi tekrarlamalı ilişkisi 5. Güçlü-Zayıf Varlık Kümesi Bir varlık kümesinin nitelikleri içerisinde anahtar nitelik (alan) oluşturulamıyorsa, bu varlık kümesine zayıf varlık kümesi denir. Bir varlık kümesinin nitelikleri içerisinde en az bir tanesi anahtar nitelik olabiliyorsa bu varlık kümesine güçlü varlık kümesi denir. Zayıf varlık kümeleri, güçlü varlık kümeleri ile 1-n ilişki oluştururlar. Ancak her 1-n ilişki güçlü-zayıf varlık kümesi ilişkisi değildir. Zayıf varlık kümeleri ER şemasında çift çizgili dikdörtgen ile gösterilir. Ayrıca zayıf varlık kümelerinin güçlü varlık kümelerine var olma bağımlılığı olması gerekir. Üniversite fakülte ilişkisinde, bir fakülte üniversite olmadan olamayacağı için ve aynı fakülte isminde başka üniversitelerde fakülte olabileceği için fakülte varlık kümesi zayıf varlık kümesidir. Veritabanı tasarım işlemi birkaç değişik işlem aşamalarından oluşur. İlk olarak, veritabanı yapılacak kurum ya da kuruluşun ihtiyacı olan bilgilerin analizi yapılır. Bu süreçte, veritabanı tasarımcısı, veritabanını kullanıcıları ile görüşerek kullanıcı ihtiyaçlarını tespit eder. Veriler toplanıp sistem analizi yapıldıktan sonra, ilişkisel veri modeline göre veritabanı şeması oluşturulur. Bu şema, veritabanı kullanıcılarının ihtiyaç duydukları verilerin kısa açıklamasıdır. Bu şema içerisinde varlık tipleri ve ilişkilerin açıklaması bulunur. Daha sonra bu şemaya göre tablolar çıkarılır. ER şemasının tablolara dönüştürülmesi Bire‐birilişkilerindönüştürülmesi Birebir ilişkiyi oluşturan varlık kümeleri tablolara dönüştürülür. Nitelikler tabloların alanlarına dönüşür. Uygun olan varlık kümesinin anahtar alanı diğer varlık kümesine yabancı anahtar olarak eklenir. Bire-bir ilişkide belirtilen tanımlayıcı nitelikler, yabancı anahtar eklenen tabloya alan olarak eklenir. Örneğin bölüm ve personel varlık kümeleri arasındaki yönetir birebir ilişkisinde iki şekilde dönüştürme yapılır. Birincisi, her iki varlık kümesi bölüm ve personel tablolarına dönüştürülür. Bölüm tablosuna personel tablosunun anahtar alanı olan sicilno alanı yabancı anahtar olarak eklenir. İkincisi, benzer şekilde her iki varlık kümesi bölüm ve öğrenci tablolarına dönüştürülür. Öğrenci tablosuna bölüm tablosunun anahtar alanı olan bölümno alanı yabancı anahtar olarak eklenir. 9 ad sicilNo soyad bölümNo 1 Personel çalışır 1 bölümAd Bölüm adres maaş Şekil 1. Personel-Bölüm çalışır bire-bir ilişkisi ER şeması ER şemasının tablolara dönüştürme; 1. Yol 2. Yol Bölüm (bölümNo, bölümAd, sicilNo) Bölüm (bölümNo, bölümAd ) Personel (sicilNo, ad, soyad, adres, maaş) Personel (sicilNo, ad, soyad, adres, maaş, bölümNo) Bire‐birçok(1‐n)ilişkilerintablolaradönüştürülmesi İlişkiyi oluşturan varlık kümeleri tablolara dönüştürülür. İlişkinin n tarafındaki tabloya 1 tarafındaki tablonun anahtar alanı yabancı anahtar olarak eklenir. İlişkide belirtilen tanımlayıcı nitelikler n tarafına alan olarak eklenirler. Örneğin öğrenci bölüm varlık kümeleri arasındaki 1-n okur ilişkisinde öğrenci ve bölüm varlık kümeleri tablolara dönüştürülür (Şekil 2). İlişkinin n tarafındaki tablo olan öğrenci tablosuna bölüm tablosunun anahtar alanı olan bölümNo alanı yabancı anahtar olarak eklenir. İlişkiyi tanımlayan kayıtTar ve mezunTar nitelikleri de öğrenci tablosuna alan olarak eklenirler. öğrenciNo ad kayıtTar cinsiyet n Öğrenci adres doğum Tarih Okur bölümNo 1 Bölüm mezunTar bölümAd Şekil 2. Öğrenci ve Bölüm 1-n okur ilişkisi ER şeması Yukarıdaki ER şeması tablolara dönüştürülürse; Öğrenci(öğrenciNo, ad, cinsiyet, adres,doğumTarih, bölümNo, kayıtTar, mezunTar) Bölüm(bölümNo, bölümAd) 10 Birçoğa‐birçok(n‐m)ilişkilerintablolaradönüştürülmesi İlişkiyi oluşturan varlık kümeleri tablolara dönüştürülür. Ancak ilişki isminde yeni bir tablo oluşturulur. İlişkiyi oluşturan tabloların anahtar alanları yeni tabloya yabancı anahtar olarak eklenir. İlişkide belirtilen tanımlayıcı nitelikler varsa yeni tabloya alan olarak eklenir. Yeni tablonun anahtar alanı ilişkiyi oluşturan tabloların yabancı anahtarlarından oluşan ikili veya daha fazla alandan oluşur. Ancak bazı durumlarda bu anahtar tanımı yeterli olmaz. Yeni tabloya tabloya uygun şekilde yeni bir anahtar alan eklenir. Örneğin aşağıdaki şekildeki müşteri-ürün n-m ilişkisi tabloya dönüştürülürken, müşteri ve ürün adında iki tablo oluşturulur. Ayrıca satınalır isminde yeni bir tablo oluşturulur. Satınalır tablosun müşteri tablosunun anahtar alanı olan müşteriNo ve ürün tablosunun anahtar alanı olan ürünNo yabancı anahtar olarak eklenirler. Ayrıca satın alır ilişkisinde tanımlanan tarih ve miktar nitelikleri de satınalır tablosuna alan olarak eklenirler. Satınalır tablosunun anahtar alanı olarakta satınalırNo isminde yeni bir alan eklenir. müşteriNo adres tarih ad Müşteri ürünNo m n Ürün Satın Alır telefon miktar ürünAd birim Fiyat stok Miktarı Şekil 3. Müşteri ürün n-m satın alır ilişkisi ER şeması Yukarıdaki ER şeması tablolara dönüştürülürse; Müşteri (müşteriNo, ad, adres, telefon) Ürün (ürünNo, ürünAd, birimFiyat, stokMiktarı) SatınAlır (satınAlırNo, müşteriNo, ürünNo, tarih, miktar) Çokdeğerliniteliklerindönüştürülmesi Çok değerli herbir nitelik için yeni bir tablo oluşturulur. Yeni tabloya çok değerli alan adı ve çok değerli alanın bulunduğu ilk tablonun anahtar alanı eklenir. Bu yeni tablonun anahtar alanı ise, çok değerli alan ile birlikte eklenen yabancı anahtarın birleşimidir. Örneğin şekil 4’deki bakmakla yükümlü olduğu kişi niteliği çok değerli bir niteliktir. Çünkü her personelin birden çok bakmakla yükümlü olduğu kişi olabilir. Bu durumda bakmaklaYükümlüOlduğuKişi adında yeni bir tablo oluşturulur. Bu tablonun alanları olarak bakmaklaYükümlüOlduğuKişi ve personel tablosunun anahtar alanı olan sicilNo yabancı anahtar olarak eklenir. Bu tablonun anahtar alanı bakmaklaYükümlüOlduğuKişi ve sicilNo alanlarının birleşimidir. 11 Ad SicilNo Bakmakla yükümlü kişi Personel Maaş Adres Şekil 4. Personel varlık kümesinin çoklu değer niteliği ve diğer nitelikleri Personel varlık kümesi tabloya dönüştürülürse; Personel (sicilNo, adres, ad, maaş) BakmalaYükümlüKişi (bakmaklaYükümlüKişi, sicilNo) Zayıfvarlıkkümelerinintablolaradönüştürülmesi Zayıf varlık kümeleri tablolara dönüştürülür. Ancak zayıf varlık kümesinin anahtar alanı kendi anahtar alanı ile birlikte ilişki kurduğu güçlü varlık kümesinin yabancı anahtarının birleşimidir. Örneğin, aşağıdaki şekildeki üniversite-fakülte 1-n ilişkisinde, üniversite varlık kümesi güçlü, fakülte varlık kümesi ise zayıf varlık kümesidir. Üniversite ve fakülte varlık kümeleri, ayrı ayrı üniversite ve fakülte varlık kümelerine dönüştürülür. Ancak, fakülte varlık kümesinin anahtar alanı, fakülteNo ile birlikte üniversiteNo alanlarından oluşturulur. fakülteNo ünivNo 1 Üniversite ünivAd Olur n fakülteAd Fakülte il Şekil 5. Üniversite-Fakülte olur 1-n güçlü-zayıf ilişkisi Yukarıdaki ER şeması tablolara dönüştürülürse; Üniversite (ünivNo, ünivad,il) Fakülte (fakülteNo, ünivNo, fakülteAd) 12 Çok Bilinen VTYSler MS Access Microsoft Office ürünüdür. Küçük ölçekli uygulamalar içindir. Tablo başına 2 GB a kadar veri depolayabilir. Aynı anda 255 bağlantıya izin verebilir. MS Windows dışındaki sistemlerde kullanılamaz. “Transaction logging” özelliğine sahiptir, ancak “trigger” ve “stored procedure” özelliklerine sahip değildir. Oracle Oracle, Inc. Dünyanın en güçlü ve güvenilir veritabanı olarak gösterilmektedir. Çok yüksek maliyet Windows, Unix, Linux, ... Oracle, sınırsız sayıda tabloları desteklemektedir. PostgreSQL PostgreSQL Global Development Group Linux, Unix, BSD, Windows, AIX vb. Ücretsiz, akademik bir veritabanı Çok güçlü işlem yapısı Veri güvenliği ön planda Tablo başına 64 TB veri tutabilme özelliği “Transaction”, “Inheritance” “trigger” ve “stored procedure” özelliklerine sahiptir. MySQL MySQL Inc. Windows, Linux, OS/2,Solaris, AIX vb. “trigger” ve “stored procedure” özelliklerine sahiptir, ancak “Transaction logging” özelliği bulunmamaktadır. Tablo başına 4 TB veri depolayabilir. MS SQL Server Microsoft Dezavantajları: Sadece Windows üzerinde çalışabilir. Yüksek maliyet Kullanım kolaylığı, güvenilirliği,işlem gücü Tablo başına 4 TB veri. “Transaction logging”, “trigger” ve “stored procedure” özelliklerine sahiptir. Informix Illustra Ücretli ve güçlü bir veritabanıdır. Orta ölçekli işletmelerin yükünü kaldırabilecek kapasitededir. 1994’deki Postgres kodundan geliştirilmeye başlanmıştır. IBM DB2 IBM Access ve MySQL e göre daha performanslı, ancak küçük işletmelere göre daha yüksek maliyete sahiptir. Unix ve Windows üzerinde çalışabilir. Transaction logging”, “trigger” ve “stored procedure” özelliklerine sahiptir. Hangi veritabanı seçilmeli? Küçük yoğunlukta trafik: Access Web uygulamaları için: MySQL Daha büyük ve orta ölçekli uygulamalar içinse, Progress, MS SQL ya da Linux üzerinde PostgreSQL . Oracle ise çok yüksek güvenilirlik ve işlem gücü gerektirdiğinde tercih edilen bir veritabanı sunucusudur. 13