Veri tabanı düzenli bilgiler topluluğudur. Kelimenin anlamı bilgisayar ortamında saklanan düzenli verilerle sınırlı olmamakla birlikte, daha çok bu anlamda kullanılmaktadır.Veritabanı yada ingilizce database kavramı, günümüzde özel veya kamu kuruluşların hepsi bünyesinde barındırdıkları bilgileri veritabanında tutarlar. Nüfus müdürlükleri, bankalar, okul ve üniversiteler kayıtlı olan onca kişi arasından istenen bilgileye saniyeler içerinde ulaşabiliyorsa bu veritabanı sistemlerinin sayesindedir.
Veritabanı yanlış kullanıldığında çöp yığınına dönüşmektedir. Veritabanının doğru kullanımı, doğru ilişkilendirilmesi çok önemlidir. Bunun en başında hız, zaman, sorgu sayısı gibi kazançlarımız olacaktır. Bir projeye başlamadan önce tasarımını düşünmek yerine veritabanı modelini düşünmek gerekir. Tabii ki veritabanı tipinin seçimide önemlidir. Günümüzde database tasarlamak için kullanılabilecek programlar;
- Oracle
- Microsoft SQL Server
- phpMyAdmin
- Database .NET
- Microsoft Accsess
- Informix
- PostgreSQL
- Sysbase
- Javascript
- MySQL
- Pretty Database Explorer
Peki bir veritabanı nasıl ilişkilendirilmeli? Veritabanına nasıl bir bakış açısı ile yaklaşmalıyız?
- Proje için uygun veritabanı seçilmeli.
- Veritabanının iyi analiz edilip gereksiz alanlardan kaçınılmalı.
- Tekrarlı alanlar için daha iyi bir çözüm geliştirilmeli, string değerlerden kaçınılmalı.
Veritabanını modellemek kadar geri dönüşümde önemlidir. Modelleme yaparken, verileri sayfaya dökeceğinizi unutmayınız. Yapacağınız sorgu yada döngüleride önceden tasarlamış olmanız gerekmektedir. Ki yapacağınız database tasarımı sizin ihtiyaç duyduğunuz sorguları ve döndüleri sağlayabilmelidir.
Database tasarımı için ilk yapılması gereken varlıkları tanımlamaktır. Bu tanımlanan varlık arasındaki ilişki belirlenmeldir. Bu ilişkilere göre yapılacak olan E-R şeması ortaya çıkıcaktır. Bu ilişkiler arasında 3 farklı durum söz konusudur.
Varlıksal Yapı ve E-R Şeması
İhtiyaç duyulan sistemin sahip olduğu nesnelerin tamamı bir varlık olabilir. Bu durumda bir kitap varlığı oluşturmak istersek öncelikle bu varlığın özelliklerinin neler olduğunun belirlenmesi gerekir. Kitabın adı, ISBN numarası, yazarı, yayın evi, basım numarası, konusu, yazım yılı vs. kitap varığının özellikleri olabilir. Bu durumda varlığı şu şekilde oluşturabiliriz:
Şema 1:
Bu görünen varlıkta her kitabın sedece kendisine özel bi özelliği varsa , şemada bu özellik altı çizil bir şekilde gösterilir. Altı çizilen özelliğe unique özellik denir ve bunun bir eşi yoktur. Yani her kitabın ISBN numarası kendisine özeldir. Aynı ISBN'ye sahip başka bir kitap yoktur. Şeması ise şu şekilde gösterilebirir:
Şema 2:
Bunun gibi varlıksal yapılar bir araya getirilerek aşağıda göreceğiniz ilişkiler oluşucaktır. Sözü geçen ilişkisel yapının bu şekilde şema haline gelmesi E-R Şeması olarak adlandırılır. Şimdi bu ilişkisel yapının türlerini inceleyelim.
Durum 1: 1-1 ilişkisel yapı
Varlık olarak tanımlanan 'vatandas' ve 'kimlik' yapıları nufus ilişkisi adıyla birbirlerine bağlansın. Öncelikle bu varlıkların özellikleri ayrı ayrı belirlenmelidir. Vatandaşın özellikleri doğum tarihi, adı, soyadı, tc, doğum yeri, boyu, saç rengi, göz rengi vs. özellikler olsun. Burada tc özelliği unique bir değerdir. Kimliğin özellikleri de kişinin adı,soyadı,nereli olduğu, rengi olabilir. Bu durumda her vatandaşın sadece bir kimliği ve her kimliğin gösterdiği bir vatandaş vardır. Bu ilişkisel yapı 1-1 olmuş olur. Bu ilişki kurulduktan sonra E-R şeması hazırlanabilir. Bu yapının şeması şu şekilde oluşturulur:
Şema 3:
Şema 8:
Şema 3:
Durum 2: 1:N ilişkisel yapı
Belirlenen varlıklar arasındaki ilişkisel yapıda bir varlığa birden fazla varlığın eşlenmesi demektir. Mesela otel ve müşteri varlıklarını örnek verebiliriz.Otel varlığının özellikleri basitçe ad,adres,telefon olabilir. Aynı şekilde müşterinin özellikleri de ad, telefon, yaş olabilir. Bu durumda bir otel birden fazla müşteriye sahip olabilirken bir müşteri aynı anda sadece bir otelde bulunabilir. Sistemi güncelleme yapılacak şekilde tasarladığım için bu ilişki 1:N olur. Ancak eğer database de güncelleme yapmayacaksanız bu ilişkinin 1:N'lik olması doğru olmaz. Çünkü diğer türlü müşteri bir otelden diğerine gideceği zaman sistem diğer otelin database sistemini giriş(insert) yapmasına izin vermez. Bu durumda ilişkisel yapının E-R şemesı şu şekilde olur:
Şema 4:
Durum 3: M:N ilişkisel yapı
Aynı 1:N ilişkisel yapısındaki gibidir. Sadece burada varlıklar karşıklı ollarak birden fazla varlıkla eşlenebilir. Mesela kitap ve yazar varlıklarımız olsun. Öncelikle bu varlıkların özelliklerinin belirlenmesi gerekir. Kitap varlığının özellikleri adı, yazarı, yayın evi, basım yılı, basım tarihi, ISBN numarası(ISO tarafından hazırlanan kitap numaralama sistemi), türü, sayfa sayısı olabilir. Yazar varlığının özellikleri ise ad, soyad,telefon,e-mail, yaş ve yazdığı kitaplar olabilir. Bu durumda oluşacak E-R şeması şu şekilde olacaktır:
Şema 5:
Burada kitap varlığı için yazar adını bir özellik olarak eklememiz yanlış olurdu. Çünkü yazarın adı kitap nesnesinin ilişkili olduğu yazar varlığının bir alt başlığıdır. Bu durumda database'de kitap adı aratılarak yazar adına ulaşmak bu tasarım için mümkündür.
Bu şemedan da görüldüğü gibi bir kitabın birden fazla yazarı olabilir ve bir yazarın da birden fazla kitabı olabilir. Bu tasarımla güncelleme yapılmaya gerek kalmadan veritabanı'nda tüm kitap ve yazar bilgileri tutulabilir.
Bu şemada kitap varlığına eklenmiş olan yayın evi özelliğini düşünelim.
Bir yayın evinin kendine ait özellikleri olabilir. Bu özellikler yayın evinin adı, adresi, telefonu, e-mail adresi, ve bu yayın evinden çıkmış olan kitapların bilgisi bir tablo olarak da tutulabilir. Bu durumda yayın evini bir özellik olarak database'de tutmak yerine onu da bir varlık olarak tanımlayabilirdik. Buna göre hazırlamış olduğumuz E-R şeması şu şekilde değişmiş olurdu:
Şema 6:
NOT-1: İlişkisel yapının 1:N şeklinde durumu ifade edilebildiği gibi N:1 şeklinde de ifade edilebilir. Ancak bu durum M:N için geçerli değildir. Çünkü varlık ilişkisinin her iki tarafı için de tek olma zorunluluğu yoktur.
NOT-2: İlişki yapısından varlığa bir değil iki yol gidiyorsa bu zorunluluğu ifade eder.Mesela öğrenci ve bölüm varlıkları arasında tanımlı bir ilişki var olsun. Bu ilişkide bölüm için zorunluluk olsun. Bu durumda ifademiz 'Hiçbir öğrenci bölümsüz olamaz' anlamına gelir ve şu şekilde gösterilir:
Şema 7:
NOT-3:İlişkisel yapıda bir varlık sadece bir varlıkla ilişkilendirilmek zorunda değildir. Yukarıda gösterilen örneklerin tamamı sadece iki varlık arasındaki ilişkiyi belirtmektedir.
ÖRNEK: Yazar, kitap ve yayınevi varlıklarının arasında gerçeğe eşdeğer bir E-R şeması oluşturalım. Yazar varlığının özellikleri ad, soyad, tc, iletişim olsun. Buradaki unique değer tc olacaktır. Kitap varlığının özellikleri ise adı, türü, ISBN numarası olsun. Buradaki unique değer ISBN numarası ve adı olacaktır. Yayınevinin özellikleri de adı, iletişimi, adresi olsun. Buradaki unique değer ise adı olacaktır. Bu yapıda her kitabın bir yazarı olması ve her kitabın yayınını yapan bir yayınevi olması zorunluluğu söz konusudur.
Oluşturulan yapıda yazar ile kitap arasında, kitap ile yayınevi arasında ve yayınevi ile yazar arasında ilişkilendirme söz konusudur. Buna göre E-R şeması şu şekilde hazırlanabilir:
R Tabloları
Database hazırlamanın ikinci aşaması da denebilir. Bu aşamada yukarıda şemasını çizmiş olduğumuz varlıkları ve özellikleri tablo haline getireceğiz. Bu tablolama kısmını da hallettikten sonra herhangi bir program yardımıyla tasarımınızı sistem haline getirebilir veri girebilir ve istediğiniz güncellemeleri yapabilirsiniz.
Herbir varlık için bir tablo oluşturulmalıdır. Bu varlığın sahip olduğu özellikler ise tablodaki kolonlarımızı oluşturacaktır. Öncelikle basit bir şekilde tanımlamak için varlıksal yapısını ilk oluşturduğumuz Şema 1'e bakalım. Şema 1'de kitap varlığı ve özellikleri tanımlanmıştı. Hazırlanan ilişkisel yapının R tablosu şu şekilde olur:
Tablo 1:
R Tabloları database hazırlmada çok önemli olduğundan unique değerler mutlaka girilmelidir. O halde tablomun olması gereken şekli budur:
Tablo 2:
Unique değerler: Bir varlıksal yapının sahip olduğu özellikler benzersiz ise o değerler unique değer olur.
Primary Key: Aynı şekilde bahsi geçen varlıksal yapının bir özelliği benzersiz ise o özellik primary key olarak belirlenebilir.
Bu iki kavram birbirlerine çok benzeseler de aslında farklı anlamlar ifade ederler. Bu farklılıklar şu şekilde sıralanabilir:
- Primary yapısı her tabloda sadece bir tane tanımlanırken unique yapı bir çok özellik için tanımlanabilir.
- Primary yapı olarak belirlenen özellik database kısmında asla boş bırakılamaz ancak unique değerler boş bırakılabilir.
Foreign Key: İki varlık arasında bir ilişki söz konusuysa bu ilişki database'e bu yapı ile aktarılır. 1:1, 1:N ve M:N ilişki türleri için farklı durumları söz konusudur. Eklenen foreign key alanı diğer varlığın belirlenmiş olan primary key alanı ile bağlanır. Böylece iki varlık arasındaki ilişki tanımlanmış olur. Foreign Key'in tablolar üzerinde gösterimi database tasarımı için çok önemlidir. Bu yapının varlığı ile İlişkisel Veri Tabanı meydana gelir.











Hiç yorum yok:
Yorum Gönder