Konumsal Veritabanı 1 Dersi 6. Ünite Özet

30.07.2022
5
A+
A-

İlişkisel Veritabanı Tasarımı

Açıköğretim ders notları öğrenciler tarafından ders çalışma esnasında hazırlanmakta olup diğer ders çalışacak öğrenciler için paylaşılmaktadır. Sizlerde hazırladığınız ders notlarını paylaşmak istiyorsanız bizlere iletebilirsiniz.

Açıköğretim derslerinden Konumsal Veritabanı 1 Dersi 6. Ünite Özet için hazırlanan  ders çalışma dokümanına (ders özeti / sorularla öğrenelim) aşağıdan erişebilirsiniz. AÖF Ders Notları ile sınavlara çok daha etkili bir şekilde çalışabilirsiniz. Sınavlarınızda başarılar dileriz.

İlişkisel Veritabanı Tasarımı

Giriş

Veritabanları veri depolayan ve ihtiyaç duyulduğunda bu verileri kullanıma sunan yapılardır. İlişkisel veritabanı yapısı verileri kümeleyerek (gruplayarak) saklar ve kümelenmiş veriler arasında mantıksal bağlar oluşturarak bir küme içindeki veriden başka bir kümedeki veriye ulaşılmasını sağlar. Bu sistemin düzgün çalışması için verilerin nasıl kümeleneceğine ve hangi mantıkla bu kümelerin birbirlerine bağlanacağına karar verilmelidir. İlişkisel veritabanları bu veri kümelerinin oluşturulması, birbirleriyle ilişkilendirilmesi işlemini belli kurallarla yapar.

İlişkisel Veritabanı Tasarım Basamakları

İlişkisel veritabanı oluşturmada kullanışlı ve yararlı bir veritabanı için tasarım basamaklarında şu sorulara yanıtlar aranır;

  • Veritabanı oluşturmada amaç nedir?
  • Hangi veriler kullanılacaktır ve nasıl gruplanacaktır?
  • Gruplar arası ilişkiler hangi veri alanlarıyla ve nasıl olacaktır?
  • Tasarım ilişkisel veritabanı kurallarına uygun mu?

Bir amaç var olduktan sonra sahip olunan verilerin nasıl gruplanacağı belirlenmelidir. Bu işlemin yapılabilmesi için amaç her detayıyla irdelenmelidir. Amaç içeriğindeki her ihtiyaç ve ihtiyacı giderecek varlıklar listelenmeli, gerekirse senaryolaştırılmalıdır. Bu şekilde veriler niteliklerine göre sınıflanarak ayrıştırılabilir ve bunlar ihtiyacı giderecek varlıklar altında kümelenebilir.

Daha sonra bu varlıklar arası kurulacak ilişkinin hangi mantığa ve hangi ihtiyacı karşılamaya yönelik olduğunun belirlenmesi gerekir. Bunun için bütün varlıkları birbirleriyle karşılaştırılır. Bu karşılaştırmada amaç ve ihtiyaç doğrultusunda iki varlığın birbiriyle ilişki kurmasının gerekliliği araştırılır. Karşılaştırmada ihtiyaç duyulacak bütün ilişkiler belirlenir.

Varlıklar ve ilişkiler belirlendikten sonra bu ilişkilerin nasıl olacağı belirlenir. İlişkilerin türü belirlendikten sonra, varlıkların ve ilişkilerinin bütünü mantıksal bir gösterimle sergilenir. Mantıksal gösterimde bir sorun yoksa uygulamaya geçmeden önce bir uygulama şeması hazırlanır. Bu şemada uygulamaya konulacak varlıklar ve kuracakları ilişkileri detaylandırılır.

Uygulama şemasının sonunda tasarımın uygulama aşamasına geçilir. Uygulama öncesi tasarımın ilişkisel veritabanı kurallarıyla uyumluluğu denetlenir. Varlıkları oluşturan verilerin ve niteliklerinin değerlikleri hem veritabanının çalışmasında sorun yaratmayacak hem de amaç doğrultusunda ihtiyaçları karşılayacak şekilde optimize edilir.

Varlıkların ve Özniteliklerinin Belirlenmesi

Veritabanı oluşturulurken üzerinde en fazla önem verilecek aşamadır; çünkü bu aşamada yapılacak yanlışlık ya da belirlenecek eksik bir varlık bundan sonraki aşamaların gerçekleştirilmesini etkileyecek ve sorunlara sebep olacaktır. İstenen veritabanında hangi verilere hangi sıklıkla gereksinim duyulacağı, hangi formların ve raporların düzenleneceği gibi soruların yanıtını bilmek, varlıkların oluşturulması aşamasında tasarımcıya yardımcı olacaktır.

Varlıkların belirlenmesi: Varlıklar, belirlenen amacın ilgi alanlarını oluşturan somut nesneleridir. Kullanıcının, etki alanında belirlediği öznitelik değerlerinin saklanmasını ve takibini sağlar. Belirlenen amacın ilgi alanlarının nesnelerini senaryodaki isim ve topluluk isimleri oluşturur. Varlıkların kolaylıkla belirlenmesi için problemin (amacın) kısa ve öz sözcüklerle ifade edilmesi gerekir. Belirlenecek isimlerin, ilgilenilen nesnelerin açıklamalarını ya da karakteristik özelliklerini değil, bu nesnelerin doğrudan kendilerini temsil etmelerine dikkat edilmelidir. Bu isimler belirlendikten sonra listelenir ve ilgilenilen nesneler kullanılacak varlıkları oluşturur.

Niteliğin veri modelinde alabileceği değerlerin tümüne etki alanı denir.

Her ne kadar bazı isimler nesnenin niteliği gibi gözükebilse de veritabanının kullanım amacı doğrultusunda o varlık özelliğinin kullanım sıklığına bağlı olarak bazen nitelikleri de varlık olarak belirlemek gerekebilir.

Belirlenen varlıkların özniteliklerinin belirlenmesi: Öznitelikler, varlığı tanımlayan, onunla ilgili özellikleri veren veri alanlarıdır. Her bir öznitelik alanı, varlığın sadece bir özelliğini temsil eder. İhtiyaç duyulacak öznitelikler, veritabanının amacının içinde doğrudan verilmemiş olabilir. Tasarımcı, veritabanını isteyen kurum ya da kişilerle ortak bir çalışma süreciyle bu özellikleri belirler. Bu süreçte türetilmiş ya da hesaplanmış özniteliklerin de veritabanına eklenip eklenmeyeceği belirlenir. Normalde başka bir öznitelikten hesaplanabilen ya da türetilebilen bir özniteliğin veritabanında bulunmasına gerek yoktur. Ancak bu durum pratikte değişiklik gösterebilir. Eğer türetilen verinin sık kullanılması düşünülüyorsa ya da bu verinin sürekli olarak sorgulanması gerekecekse, sunucuyu (server) daha elverişli kullanmak açısından bu öznitelik alanları oluşturulabilir.

Öznitelik veri alanlarındaki veriler varlığın sadece bir özelliğine karşılık gelmelidir. Örneğin, adres öznitelik alanında, bütün adres bilgisinin bir arada yazılması yerine, adresin il, ilçe, mahalle, cadde, sokak, kapı numarası, daire numarası gibi alanlara bölünerek tarif edilmesi gerekir. Bölünmeden oluşturulan öznitelik alanları veri tutarsızlıklarına sebep oluşturabilir. Oluşturulan alanların isimleri açıklayıcı olmalıdır. Alan isimleri belirlenirken Türkçe karakter kullanımından, özel işaretlerden (‘/’, ‘%’, ‘&’, vb.) ve veritabanı yönetim sistemi yazılımı tarafından kısıtlanmış olan sözcüklerin kullanımından kaçınılmalıdır. Alan isimlerinde kullanılması gereken özel karakter varsa ya da alan isimleri veritabanı mantığına uygun olarak verildiğinde son kullanıcı için yeterli seviyede açıklayıcı olmuyorsa, alan isimlerine son kullanıcının görebileceği şekilde rumuzlar (alias) verilebilir.

Çalışmalar sonunda çıkarılan öznitelikler listelenir. Bu listeleme, varlık başlıklarının altında oluşturulmuş tablolarla gösterilebilir. Bu şekilde hangi özniteliğin hangi varlığa ait olduğundan ve başka bir varlıkta tekrar edilmediğinden emin olunur. Eğer bir öznitelik belirtildiği varlığa ait değilse ya da bu durumdan emin olunamıyorsa veya bir öznitelik birden fazla varlıkta bulunuyorsa, emin olunamayan öznitelik ve birden fazla varlıkta bulunan öznitelikler kaldırılır (s:116, Resim 6.2).

Belirleyicilerin ve anahtar alanların seçilmesi: Belirleyiciler (identifiers) varlıkların oluşum sayısını (satır sayısını) gösteren özniteliklerdir. Değer olarak “eşsiz, eşsiz olmayan ya da birleşik (birden fazla parçadan oluşan)” değerliklerini alabilirler. “Eşsiz” değer (unique), varlığın öznitelik alanındaki (sütunundaki) bir değerin, aynı alanın başka bir satırında tekrar edilmeyeceğini ifade eder. Bunun tersi olarak “eşsiz olmayan” değer (nonunique), bir değerin aynı alanda birden fazla satırda kullanılabileceğini ifade eder. Birleşik nitelik (composite) birden fazla öznitelik alanıyla (sütunuyla) oluşturulan değerleri ifade eder. Belirleyiciler yardımıyla her varlığın tablosunda olması gereken birincil anahtarın seçimi yapılır. Birincil anahtar olarak tanımlanan alanın tekrarlanmayan verilerden oluşması gerekir. Eğer tabloda birincil anahtar olmaya uygun veri alanı yoksa bu alan kompozit olarak ya da otomatik bir sayı değeri atanan bir belirleyici alan oluşturularak yaratılır. Belirleyiciler ve anahtar alanlar aynı zamanda sorgulamada hız kazanmak için oluşturulan dizinlerin yaratılmasında da kullanılırlar. Dizin oluşturmada birincil anahtar kullanılabileceği gibi, diğer belirleyici ve anahtar alanlar da kullanılabilir. Burada dikkat edilmesi gereken, genelde dizin oluşturacak alanların sayısal değere sahip olmasının tercih edildiğidir. Birincil anahtarın genelde sayı olması tercih edilmekle beraber böyle bir şart yoktur. Ama tasarımcılar yapılacak birçok işlemi kolaylaştırması açısından ve veri takibinin daha kolay yapılabilmesi için sayı değerlerini kullanırlar. Hatta bu sayının belirlenmiş öznitelik alanı olmasındansa, otomatik verilen bir belirleyici (ID) sayıdan oluşmasını tercih ederler. Birincil anahtar alan oluşturulurken, varlığın diğer öznitelik alanlarının birincil anahtar alan değerine bağımlı olmasına dikkat edilmelidir.

İlişkilerin Belirlenmesi

Sorgulamalarda bir varlığın öznitelik bilgilerinden diğer varlıkların öznitelik bilgilerine ulaşmak için bu değer alanlarının birleştirilmesi gerekir. Bu değer alanlarını tek bir tabloda birleştirmek yerine tablolar birbirlerine ortak değer alanlarıyla ya da yeni bir tabloda ortak değer alanı yaratılarak bağlanırlar. Bu işleme varlıklar arası ilişki denir. İlişkiler kullanılan varlık sayısına bağlı olarak tek bileşenli, çift bileşenli veya daha çok bileşenli olabilirler.

Bir bileşenli ilişki, bir varlığın kendisiyle oluşturduğu ilişkidir. Üç bileşenli ve daha üst mertebeden ilişkiler adından da anlaşılacağı üzere üç ve daha fazla varlığın ilişkisi ile oluşur. Ancak genellikle bir ve iki bileşenli ilişkilerle istenen sorgulamaların yapılabilmesi için yeterli olacağından üç ve üstü bileşenli ilişkilere çok sık rastlanmaz.

Varlıkların ilişkilerini tanımlamak için en kullanışlı yollardan biri varlık-varlık matrisi oluşturmaktır. Oluşturulan bu matriste ilişkilerin tespiti kolaylaşacak, ilişkiler daha açık ve net görülecektir. Varlık-varlık matrisi belirlenen varlıkların oluşturduğu eşit kolon ve sütuna sahip bir tablodur. Belirlenen varlıklar matrisin hem satırlarını hem de sütunlarını oluştururlar. Matrisin satır ve sütunlarının kesişim alanları varlıklar arası ilişkinin tanımlandığı bölgelerdir. Matrisi oluştururken satır ve sütunlarda aynı varlık sırasını kullanmak varlıklar arası ilişkilerin anlaşılırlığını arttıracaktır.

Varlık-varlık matrisindeki her hücre, sütunlardaki varlıklar ile satırlardaki varlıklar arasındaki ilişki potansiyelini göstermektedir. Bu varlıklar arasında bir ilişki ya da birden fazla ilişki var olabileceği gibi, ilişkinin olmaması şeklinde bir olasılık da mümkündür. Satır ve sütundaki varlıklar aynı varlık ise bu tek bileşenli ilişkiyi gösterir.

Bu aşamadan sonra veritabanından, yapılması istenenler doğrultusunda varlıkların birbirleriyle olan potansiyel ilişkileri sorgulanır. Amaca göre oluşturulan senaryoda bu ilişki varsa, varlık-varlık matrisinin hücresine bu ilişkiyi tanımlayan fiil yazılır. Farklı varlıkların birbirleriyle oluşturduğu ilişki benzer eylemler üzerinden sergilenebileceğinden, aynı fiil birden fazla ilişkiyi tanımlamak için kullanılabilir. Matrisin her bir satırındaki varlığın her bir sütundaki varlıkla ilişkisini senaryoya göre sorguladığımızda ortaya çıkan sonuç matrisi resimdeki gibidir (s:119, Resim 6.5). Şekilde görüldüğü üzere, matrisin satır ve sütunları aynı varlıklarla aynı sırada oluştukları için, ilişkiler tekrarlanmış ve matris bir ayna görüntüsü vermiştir. Bu durum ilişkinin varlığı açısından bir değişiklik yaratmamakta, ancak görsel olarak anlaşılırlığı bozabilmektedir. Bu sebeple matrisin tekrarlanan yarısından birini yok varsayarsak matris; resimdeki gibi olacaktır (s:119, Resim 6.6). Burada oluşturulan varlık ilişkilerinin senaryoda veritabanından istenen bilgilere ulaşmada fayda sağlayıp sağlamayacağına emin olunmalı, gereksiz ya da eksik ilişki var olmamalıdır.

E-R (Varlık_İlişki) Diyagramlarının Oluşturulması

Varlık ilişki modeli, veritabanının mantıksal yapısını göstermek için kullanılır. Bu model kullanılarak öncelikli olarak veriler çözümlenir, çözümlenen verilere dayanılarak veri modellemesi yapılır. Yapılan modelleme içinde veriler ve veriler arası ilişkilerin anlamları ve özellikleri incelenerek varlık-ilişki diyagramları oluşturulur.

Basit varlık ilişki diyagramlarının oluşturulması: Basit varlık-ilişki diyagramları, varlıkların ilişki özelliklerinin detaylandırılmadan şematik gösterimleridir. Tasarımın bu aşamasında varlık-varlık matrisinde oluşturduğumuz ilişkilerin şematik gösterimi yapılmaktadır. Varlık-ilişki modelinin şematik gösteriminde kullanılan varlık ve öznitelik diyagramları, bu aşamada tablolar olarak gösterilecektir (s:120, Resim 6.7). Gösterimde tablonun en üstünde varlığın adı, hemen altındaki kutuda birincil anahtar alanı ve onun altındaki kutuda önemli özniteliklerin bir kısmı gösterilecektir. Varlığın bütün özniteliklerinin gösterimi gereksiz yer kaplayacağından, şematik gösterimde öznitelik alanlarının tamamı kullanılmayacaktır. Varlıkların ilişkileri eşkenar dörtgen ile gösterilmektedir. İlişkiler kullanılan eylemler ise eşkenar dörtgenlerin içine yazılarak ifade edilmiştir (s:121, Resim: 6.8).

İlişkilerin detaylandırılması: Bu aşamada varlıklar arası ilişkiler, ilişkinin niceliği (cardinality) ve ilişkinin var olma olasılığı (optionality) yönünden detaylandırılır. Bu işlem bize varlıklar arası ilişkide neyin olabileceğini ya da neyin olması gerektiğini, bununla birlikte bir varlığın ilişkili olduğu varlıkla nicel olarak nasıl bir eşleşme yapacağını ifade eder. İlişkinin nicelik ve olasılık açısından detaylandırılması yapılırken ilişkiyi tanımlayan fiil, her iki varlığın bakış açısından da değerlendirilmelidir.

Varlık ilişkilerinin var olma olasılığının varlık-ilişki diyagramlarında gösterimi;

  • İlişkinin gerçekleşme durumu ‘0’ – İlişki olabilir (Olası durum)
  • İlişkinin gerçekleşme durumu ‘1’ – İlişki olmalı (Zorunluluk)

şeklindedir. Eğer ‘0’ yani olası durum söz konusuysa bu ilişkinin gerçekleşme zorunluluğu yoktur. Nicelik açısından değerlendirme varlığın ilişkideki oluşum sayısının ifadesidir. Varlık ilişkilerinin niceliğinin varlıkilişki diyagramlarında gösterimi;

  • Nicelik ‘1’ – Sadece bir varlığa karşılık gelen
  • Nicelik ‘N’ – En az bir, birçok varlığa karşılık gelen

şeklindedir.

Detaylı varlık ilişki diyagramının oluşturulması: Bu aşamada belirlenen ilişki detayları, nicelik ve olasılıkların kombinasyonu ile ifade edilerek basit varlık-ilişki diyagramına yerleştirilir. İlişkilerin nicelik ve olasılıklarının bu birleşimlerini incelersek:

  • 0:1 – Varlık bir varlıkla ilişkili olabilir.
  • 0:N – Varlık birçok varlıkla ilişkili olabilir; ya da en az bir varlıkla ilişkili olabilir.
  • 1:1 – Varlık sadece bir varlıkla ilişkili olmalıdır.
  • 1:N – Varlık birçok varlıkla ilişkili olmalıdır; ya da en az bir varlıkla ilişkili olmalıdır.

R-M (İlişkisel Model) Diyagramlarının Oluşturulması

Tasarımın bu aşamasında, oluşturulan varlık-ilişki diyagramları ilişkisel model diyagramlarına dönüştürülecektir.

İlişkisel modelde, varlıkların ve ilişkilerinin gösterilmesi açısından terminoloji ve kullanılan semboller biraz değişmektedir. Bu yapıda varlıklar kuracakları ilişkiye göre tablolarına yabancı anahtarlar eklerler ve varlık olarak tanımlanmaktan çıkarak ilişki olarak tanımlanırlar. Tablolar arası ilişkiler ise varlık-ilişki diyagramlarındaki eşkenar dörtgenlerin yerine, farklı diyagramlarla gösterilir (s:125, Resim: 6.13). Kesikli çizgilerle olan gösterim, ilişkideki birincil anahtarın yabancı anahtarlardan oluşmadığını, düz çizgiyle olan gösterim ise oluşturulan ilişkide birincil anahtarın yabancı anahtarın kullanımıyla birleşik olarak oluşturulduğunu ifade eder. Düz çizgiyle gösterim tanımlı ilişki olarak adlandırılırken, kesikli çizgiyle gösterim tanımlanmamış ilişki olarak adlandırılır. Uzun ya da kesikli çizginin üzerindeki paralel çift çizgi ilişkinin bir tarafının alacağı tek bir değeri gösterirken diğer ucunun çatal (üç çizgiyle gösteriliyor) olması, ucun gösterdiği ilişkinin birden fazla değer alacağını ifade eder. Eğer bu çatalın dip kısmında tek bir çizgi varsa ucunun gösterdiği ilişkinin en az bir ya da daha çok değer alacağını (zorunluluk) ifade ediyor demektir. Eğer çatalın dip kısmı daireden oluşuyorsa bu durum olasılık belirtir. Yani çatalın ucunun gösterdiği ilişkinin değer almayabileceğini ifade eder.

İlişkisel modelde çoktan çoğa ilişki için doğrudan bir gösterim yoktur. Çoktan çoğa gösterim, iki tane, birden çoğa ilişkinin kesiştiği yerde bir ilişki tablosu oluşturularak gösterilir. Varlık-ilişki diyagramlarında ilişkinin her iki yanındaki nicel gösteriminde “N” değerinin olması da bu ilişkinin çoktan çoğa olduğunu ifade etmektedir (s:125, Resim 6.14). Bu varlık ilişki gösterimini ilişkisel model diyagramlarına dönüştürmek için, varlıklar arası ilişkiyi temsil eden şekil ve bağlantı çizgileri çıkarılır. İlişkiyi göstermek için varlıklar arasına yeni bir ilişki tablosu oluşturulur. Bu ilişki tablosunun ismi ilişkide olduğu iki tablonun ismi birleştirilerek tanımlanır. Bundan sonra ilişkilerin tarif ettiği olası ya da zorunlu durumlara göre, ilişkisel model için tanımlanan ilişki diyagramları kullanılarak varlıklar, ilişki tablosuna bağlanır. Varlıkların birincil anahtarları (BA), ilişki tablosunda yabancı anahtar olarak (YA) gösterilir. İlişki tablosu için ya yeni bir birincil anahtar yaratılır ya da varlıklardan gelen ikincil anahtarlar, birleşik olarak kullanılarak birincil anahtar değeri türetilir. Oluşturulan ilişki tablosu için yeni öznitelik değerleri tanımlanabilir. Tanımlanan yeni öznitelik değeri, sadece her iki yabancı anahtarın aynı anda sorgulanabilmesiyle gösterilebilir.

İlişkisel modelde birden çoğa ilişkiyi göstermek için tekrar varlık-ilişki diyagramının bir parçası kullanılmıştır (s: 126, Resim 6.16). Diyagramdaki ilişki ve nicel değeri “1” olan varlık gruplanır. İlişkinin şematik gösteriminde nicel değerliğin, ilişki bir tarafında “N” diğer tarafında “1” değerliğini alır. Bu durum varlıklar arası kurulacak birden çoğa ilişkinin yönünü göstermektedir (s: 127, Resim 6.17). Gruplanan ilişki ve varlığa doğru olacak şekilde, birden çoğa ilişkinin ilişkisel modele uygun gösterimi, ilişkinin tarif ettiği olası ve zorunlu durumlarda dikkate alınarak oluşturulur. İlişkinin yönü aynı zamanda yabancı anahtarın hangi tabloda kullanılacağını da göstermektedir.

Bire bir ilişki, varlık-ilişki diyagramlarında ilişkinin her iki tarafında da nicel değerlerinin 1 olması durumunda gerçekleşir (s:128, Resim 6.19). Gruplanan varlık ve ilişkiye doğru olacak şekilde, bire bir ilişkinin ilişkisel modele uygun gösterimi, ilişkinin tarif ettiği olası ve zorunlu durumlarda dikkate alınarak oluşturulur. İlişkinin yönü aynı zamanda yabancı anahtarın hangi tabloda kullanılacağını da göstermektedir (s: 128, Resim 6.21).

Tasarımın Uygulanması

Normalizasyon, veritabanı yapısında ilişkilerin organizasyonuyla veri tekrarının azaltıldığı, verilere bağlı tutarsızlıkların engellendiği verilerin düzenlenme sürecidir. Veritabanı tasarımının önemli aşamalarından biridir ve ilişkisel veritabanı normalizasyon kurallarına uygun tasarlanmalıdır. Genellikle ilk üç normalizasyon kuralı veri tekrarının azaltılmasında ve veri tutarlılığının sağlanmasında yeterli olmaktadır. Bu ilk üç kuralı kısaca hatırlarsak:

Birinci normalizasyon kuralı: İlişkili her tabloda alan bütünlüğünün var olması gereklidir. Alan bütünlüğü için her tablo birincil anahtar olan bir veri alanına sahip olmalı ve özniteliklerin sahip olduğu her olası değer veri satırındaki bir veri alanına karşılık gelmelidir. Veri sütunun tekrar etmesine ya da bir veri sütununda birden fazla veri olmasına izin verilemez.

İkinci normalizasyon kuralı: İlişkili her tablo varlık bütünlüğü göstermelidir. Bu durum tablodaki her satırın eşsiz ve özgün olması ile mümkündür. Bunun için tabloda birincil anahtar olmayan tüm alanlar (sütunlar), birincil anahtar alana bağlı olmalıdır.

Üçüncü normalizasyon kuralı: İlişkili her tablo veri tutarlılığını sağlamalıdır. Bu durum tablolar arası ilişkinin anahtar alanlar ile kurulmasıyla mümkündür. Yani bir tablodaki yabancı anahtar (foreign key) başka bir tabloda birincil anahtar olarak yer almalıdır.

Art arda güncelleme ve silme ilişkisel veritabanlarında veri tutarlılığını sağlayan doğrudan ya da dolaylı mekanizmalardır. Veri tutarlılığı yabancı anahtarın başka bir tabloda birincil anahtar olması koşulunu sağlar. Bu ilişki sayesinde eğer varlık tablosunda birincil anahtar değeri değişirse buna bağlı olan tablolardaki tüm yabancı anahtar değerlerine karşılık gelen birincil anahtar değerleri de değişecektir (art arda güncelleme). Art arda silme koşulu ise varlık tablosundan bir varlığın silinmesi sonucunda, ona yabancı anahtarlar aracılığıyla bağlı tablolardaki tüm varlıkların da silinmesi durumudur. Burada dikkat edilmesi gereken eğer ilişki çoktan çoğa ise varlığın silinmesi sadece ilişkinin silinmesini sağlar. Eğer ilişki birden çoğa ya da birebir ilişki ise varlığın silinmesi ilişkiyi sağlayan yabancı anahtara sahip varlıkları da siler.

Dizinler tablolar için kullanılan veritabanı nesneleridir. Aranılan verilere daha hızlı ulaşmak için kullanılır. İki tip dizin yapısı vardır. Kümelenmiş (clustered) ve kümelenmemiş (non-clustered).

Kümelenmiş dizin sıralamaya bağlı bir sistem olduğundan bir tabloda sadece bir tane oluşturulabilir. Bunun için seçilen alan da genelde birincil anahtarın olduğu alandır. Kümelenmiş dizin, bir tablodaki verilerin disk üzerine sıralı olarak kaydedilmesini sağlar. Tabloda kümelenmiş dizin oluşturduktan sonra farklı bir alan üzerinden tekrar dizin oluşturmak istenirse kümelenmemiş dizin kullanılır. Kümelenmemiş dizin yapısında verilere doğrudan erişilmez. Kümelenmiş dizin yapısına erişmek için dizinin oluşturulduğu veri sütunundaki verilere işaretçiler konur.

Dizin kullanmak sorgulamaya hız kazandırırken, yapı olarak bir kayıt tuttuğu için veri sayısı arttıkça kapladığı yer de artacaktır. Oluşturulacak dizinde sayı değeri olan bir alan seçmek oluşturulan dizinden daha fazla verim alınmasına sebep olacaktır. Dizin kullanımının ne zaman yapılacağına karar vermek için veritabanında yapılacak sorgulama ve sıralama işlemlerinin hızı kontrol edilmelidir. Eğer bu işlemler istenilen hızdan yavaş ise dizin kullanılmalıdır. Veritabanında dizin oluşturmak ya da oluşturulan dizini kaldırmak veri kaybına sebep olmaz.

Veritabanında veriler tablolarda tutulur. Her tablo bir ya da daha çok sütundan (alandan) oluşur. Tasarımda, tablodaki her sütuna içinde saklayacağı veriye göre bir değer tipinin belirlenmesi gerekir. Bu belirlendikten sonra, artık o sütunda belirlenen değer tipinin haricinde karakter ve birimler kullanılamaz. Sütunun veri tipinde sonradan (veri girildikten sonra) yapılacak bir değişiklik veri kayıplarına sebep olacağından, oluşturulan veri tipi bir daha değiştirilmez. Farklı Veritabanı Yönetim Sistemi (VTYS) yazılımları küçük değişikliklerle farklı veri tipleri kullansa da veri tipleri dört kategori altında genelleştirilebilir;

  • Metin
  • Sayısal veri tipi
  • Tarih/zaman
  • İkili

Bu genel kategoriler harici VTYS yazılımları, veri tiplerinde birçok alt tip kullanım imkânı sağlamaktadır. Bu yüzden kullanılan yazılıma göre hangi alt tiplere destek verdiğinin anlaşılarak ona göre veri tiplerinin belirlenmesi önemlidir. Çünkü veriler belirlendikleri tiplere göre yer kaplarlar.

Giriş

Veritabanları veri depolayan ve ihtiyaç duyulduğunda bu verileri kullanıma sunan yapılardır. İlişkisel veritabanı yapısı verileri kümeleyerek (gruplayarak) saklar ve kümelenmiş veriler arasında mantıksal bağlar oluşturarak bir küme içindeki veriden başka bir kümedeki veriye ulaşılmasını sağlar. Bu sistemin düzgün çalışması için verilerin nasıl kümeleneceğine ve hangi mantıkla bu kümelerin birbirlerine bağlanacağına karar verilmelidir. İlişkisel veritabanları bu veri kümelerinin oluşturulması, birbirleriyle ilişkilendirilmesi işlemini belli kurallarla yapar.

İlişkisel Veritabanı Tasarım Basamakları

İlişkisel veritabanı oluşturmada kullanışlı ve yararlı bir veritabanı için tasarım basamaklarında şu sorulara yanıtlar aranır;

  • Veritabanı oluşturmada amaç nedir?
  • Hangi veriler kullanılacaktır ve nasıl gruplanacaktır?
  • Gruplar arası ilişkiler hangi veri alanlarıyla ve nasıl olacaktır?
  • Tasarım ilişkisel veritabanı kurallarına uygun mu?

Bir amaç var olduktan sonra sahip olunan verilerin nasıl gruplanacağı belirlenmelidir. Bu işlemin yapılabilmesi için amaç her detayıyla irdelenmelidir. Amaç içeriğindeki her ihtiyaç ve ihtiyacı giderecek varlıklar listelenmeli, gerekirse senaryolaştırılmalıdır. Bu şekilde veriler niteliklerine göre sınıflanarak ayrıştırılabilir ve bunlar ihtiyacı giderecek varlıklar altında kümelenebilir.

Daha sonra bu varlıklar arası kurulacak ilişkinin hangi mantığa ve hangi ihtiyacı karşılamaya yönelik olduğunun belirlenmesi gerekir. Bunun için bütün varlıkları birbirleriyle karşılaştırılır. Bu karşılaştırmada amaç ve ihtiyaç doğrultusunda iki varlığın birbiriyle ilişki kurmasının gerekliliği araştırılır. Karşılaştırmada ihtiyaç duyulacak bütün ilişkiler belirlenir.

Varlıklar ve ilişkiler belirlendikten sonra bu ilişkilerin nasıl olacağı belirlenir. İlişkilerin türü belirlendikten sonra, varlıkların ve ilişkilerinin bütünü mantıksal bir gösterimle sergilenir. Mantıksal gösterimde bir sorun yoksa uygulamaya geçmeden önce bir uygulama şeması hazırlanır. Bu şemada uygulamaya konulacak varlıklar ve kuracakları ilişkileri detaylandırılır.

Uygulama şemasının sonunda tasarımın uygulama aşamasına geçilir. Uygulama öncesi tasarımın ilişkisel veritabanı kurallarıyla uyumluluğu denetlenir. Varlıkları oluşturan verilerin ve niteliklerinin değerlikleri hem veritabanının çalışmasında sorun yaratmayacak hem de amaç doğrultusunda ihtiyaçları karşılayacak şekilde optimize edilir.

Varlıkların ve Özniteliklerinin Belirlenmesi

Veritabanı oluşturulurken üzerinde en fazla önem verilecek aşamadır; çünkü bu aşamada yapılacak yanlışlık ya da belirlenecek eksik bir varlık bundan sonraki aşamaların gerçekleştirilmesini etkileyecek ve sorunlara sebep olacaktır. İstenen veritabanında hangi verilere hangi sıklıkla gereksinim duyulacağı, hangi formların ve raporların düzenleneceği gibi soruların yanıtını bilmek, varlıkların oluşturulması aşamasında tasarımcıya yardımcı olacaktır.

Varlıkların belirlenmesi: Varlıklar, belirlenen amacın ilgi alanlarını oluşturan somut nesneleridir. Kullanıcının, etki alanında belirlediği öznitelik değerlerinin saklanmasını ve takibini sağlar. Belirlenen amacın ilgi alanlarının nesnelerini senaryodaki isim ve topluluk isimleri oluşturur. Varlıkların kolaylıkla belirlenmesi için problemin (amacın) kısa ve öz sözcüklerle ifade edilmesi gerekir. Belirlenecek isimlerin, ilgilenilen nesnelerin açıklamalarını ya da karakteristik özelliklerini değil, bu nesnelerin doğrudan kendilerini temsil etmelerine dikkat edilmelidir. Bu isimler belirlendikten sonra listelenir ve ilgilenilen nesneler kullanılacak varlıkları oluşturur.

Niteliğin veri modelinde alabileceği değerlerin tümüne etki alanı denir.

Her ne kadar bazı isimler nesnenin niteliği gibi gözükebilse de veritabanının kullanım amacı doğrultusunda o varlık özelliğinin kullanım sıklığına bağlı olarak bazen nitelikleri de varlık olarak belirlemek gerekebilir.

Belirlenen varlıkların özniteliklerinin belirlenmesi: Öznitelikler, varlığı tanımlayan, onunla ilgili özellikleri veren veri alanlarıdır. Her bir öznitelik alanı, varlığın sadece bir özelliğini temsil eder. İhtiyaç duyulacak öznitelikler, veritabanının amacının içinde doğrudan verilmemiş olabilir. Tasarımcı, veritabanını isteyen kurum ya da kişilerle ortak bir çalışma süreciyle bu özellikleri belirler. Bu süreçte türetilmiş ya da hesaplanmış özniteliklerin de veritabanına eklenip eklenmeyeceği belirlenir. Normalde başka bir öznitelikten hesaplanabilen ya da türetilebilen bir özniteliğin veritabanında bulunmasına gerek yoktur. Ancak bu durum pratikte değişiklik gösterebilir. Eğer türetilen verinin sık kullanılması düşünülüyorsa ya da bu verinin sürekli olarak sorgulanması gerekecekse, sunucuyu (server) daha elverişli kullanmak açısından bu öznitelik alanları oluşturulabilir.

Öznitelik veri alanlarındaki veriler varlığın sadece bir özelliğine karşılık gelmelidir. Örneğin, adres öznitelik alanında, bütün adres bilgisinin bir arada yazılması yerine, adresin il, ilçe, mahalle, cadde, sokak, kapı numarası, daire numarası gibi alanlara bölünerek tarif edilmesi gerekir. Bölünmeden oluşturulan öznitelik alanları veri tutarsızlıklarına sebep oluşturabilir. Oluşturulan alanların isimleri açıklayıcı olmalıdır. Alan isimleri belirlenirken Türkçe karakter kullanımından, özel işaretlerden (‘/’, ‘%’, ‘&’, vb.) ve veritabanı yönetim sistemi yazılımı tarafından kısıtlanmış olan sözcüklerin kullanımından kaçınılmalıdır. Alan isimlerinde kullanılması gereken özel karakter varsa ya da alan isimleri veritabanı mantığına uygun olarak verildiğinde son kullanıcı için yeterli seviyede açıklayıcı olmuyorsa, alan isimlerine son kullanıcının görebileceği şekilde rumuzlar (alias) verilebilir.

Çalışmalar sonunda çıkarılan öznitelikler listelenir. Bu listeleme, varlık başlıklarının altında oluşturulmuş tablolarla gösterilebilir. Bu şekilde hangi özniteliğin hangi varlığa ait olduğundan ve başka bir varlıkta tekrar edilmediğinden emin olunur. Eğer bir öznitelik belirtildiği varlığa ait değilse ya da bu durumdan emin olunamıyorsa veya bir öznitelik birden fazla varlıkta bulunuyorsa, emin olunamayan öznitelik ve birden fazla varlıkta bulunan öznitelikler kaldırılır (s:116, Resim 6.2).

Belirleyicilerin ve anahtar alanların seçilmesi: Belirleyiciler (identifiers) varlıkların oluşum sayısını (satır sayısını) gösteren özniteliklerdir. Değer olarak “eşsiz, eşsiz olmayan ya da birleşik (birden fazla parçadan oluşan)” değerliklerini alabilirler. “Eşsiz” değer (unique), varlığın öznitelik alanındaki (sütunundaki) bir değerin, aynı alanın başka bir satırında tekrar edilmeyeceğini ifade eder. Bunun tersi olarak “eşsiz olmayan” değer (nonunique), bir değerin aynı alanda birden fazla satırda kullanılabileceğini ifade eder. Birleşik nitelik (composite) birden fazla öznitelik alanıyla (sütunuyla) oluşturulan değerleri ifade eder. Belirleyiciler yardımıyla her varlığın tablosunda olması gereken birincil anahtarın seçimi yapılır. Birincil anahtar olarak tanımlanan alanın tekrarlanmayan verilerden oluşması gerekir. Eğer tabloda birincil anahtar olmaya uygun veri alanı yoksa bu alan kompozit olarak ya da otomatik bir sayı değeri atanan bir belirleyici alan oluşturularak yaratılır. Belirleyiciler ve anahtar alanlar aynı zamanda sorgulamada hız kazanmak için oluşturulan dizinlerin yaratılmasında da kullanılırlar. Dizin oluşturmada birincil anahtar kullanılabileceği gibi, diğer belirleyici ve anahtar alanlar da kullanılabilir. Burada dikkat edilmesi gereken, genelde dizin oluşturacak alanların sayısal değere sahip olmasının tercih edildiğidir. Birincil anahtarın genelde sayı olması tercih edilmekle beraber böyle bir şart yoktur. Ama tasarımcılar yapılacak birçok işlemi kolaylaştırması açısından ve veri takibinin daha kolay yapılabilmesi için sayı değerlerini kullanırlar. Hatta bu sayının belirlenmiş öznitelik alanı olmasındansa, otomatik verilen bir belirleyici (ID) sayıdan oluşmasını tercih ederler. Birincil anahtar alan oluşturulurken, varlığın diğer öznitelik alanlarının birincil anahtar alan değerine bağımlı olmasına dikkat edilmelidir.

İlişkilerin Belirlenmesi

Sorgulamalarda bir varlığın öznitelik bilgilerinden diğer varlıkların öznitelik bilgilerine ulaşmak için bu değer alanlarının birleştirilmesi gerekir. Bu değer alanlarını tek bir tabloda birleştirmek yerine tablolar birbirlerine ortak değer alanlarıyla ya da yeni bir tabloda ortak değer alanı yaratılarak bağlanırlar. Bu işleme varlıklar arası ilişki denir. İlişkiler kullanılan varlık sayısına bağlı olarak tek bileşenli, çift bileşenli veya daha çok bileşenli olabilirler.

Bir bileşenli ilişki, bir varlığın kendisiyle oluşturduğu ilişkidir. Üç bileşenli ve daha üst mertebeden ilişkiler adından da anlaşılacağı üzere üç ve daha fazla varlığın ilişkisi ile oluşur. Ancak genellikle bir ve iki bileşenli ilişkilerle istenen sorgulamaların yapılabilmesi için yeterli olacağından üç ve üstü bileşenli ilişkilere çok sık rastlanmaz.

Varlıkların ilişkilerini tanımlamak için en kullanışlı yollardan biri varlık-varlık matrisi oluşturmaktır. Oluşturulan bu matriste ilişkilerin tespiti kolaylaşacak, ilişkiler daha açık ve net görülecektir. Varlık-varlık matrisi belirlenen varlıkların oluşturduğu eşit kolon ve sütuna sahip bir tablodur. Belirlenen varlıklar matrisin hem satırlarını hem de sütunlarını oluştururlar. Matrisin satır ve sütunlarının kesişim alanları varlıklar arası ilişkinin tanımlandığı bölgelerdir. Matrisi oluştururken satır ve sütunlarda aynı varlık sırasını kullanmak varlıklar arası ilişkilerin anlaşılırlığını arttıracaktır.

Varlık-varlık matrisindeki her hücre, sütunlardaki varlıklar ile satırlardaki varlıklar arasındaki ilişki potansiyelini göstermektedir. Bu varlıklar arasında bir ilişki ya da birden fazla ilişki var olabileceği gibi, ilişkinin olmaması şeklinde bir olasılık da mümkündür. Satır ve sütundaki varlıklar aynı varlık ise bu tek bileşenli ilişkiyi gösterir.

Bu aşamadan sonra veritabanından, yapılması istenenler doğrultusunda varlıkların birbirleriyle olan potansiyel ilişkileri sorgulanır. Amaca göre oluşturulan senaryoda bu ilişki varsa, varlık-varlık matrisinin hücresine bu ilişkiyi tanımlayan fiil yazılır. Farklı varlıkların birbirleriyle oluşturduğu ilişki benzer eylemler üzerinden sergilenebileceğinden, aynı fiil birden fazla ilişkiyi tanımlamak için kullanılabilir. Matrisin her bir satırındaki varlığın her bir sütundaki varlıkla ilişkisini senaryoya göre sorguladığımızda ortaya çıkan sonuç matrisi resimdeki gibidir (s:119, Resim 6.5). Şekilde görüldüğü üzere, matrisin satır ve sütunları aynı varlıklarla aynı sırada oluştukları için, ilişkiler tekrarlanmış ve matris bir ayna görüntüsü vermiştir. Bu durum ilişkinin varlığı açısından bir değişiklik yaratmamakta, ancak görsel olarak anlaşılırlığı bozabilmektedir. Bu sebeple matrisin tekrarlanan yarısından birini yok varsayarsak matris; resimdeki gibi olacaktır (s:119, Resim 6.6). Burada oluşturulan varlık ilişkilerinin senaryoda veritabanından istenen bilgilere ulaşmada fayda sağlayıp sağlamayacağına emin olunmalı, gereksiz ya da eksik ilişki var olmamalıdır.

E-R (Varlık_İlişki) Diyagramlarının Oluşturulması

Varlık ilişki modeli, veritabanının mantıksal yapısını göstermek için kullanılır. Bu model kullanılarak öncelikli olarak veriler çözümlenir, çözümlenen verilere dayanılarak veri modellemesi yapılır. Yapılan modelleme içinde veriler ve veriler arası ilişkilerin anlamları ve özellikleri incelenerek varlık-ilişki diyagramları oluşturulur.

Basit varlık ilişki diyagramlarının oluşturulması: Basit varlık-ilişki diyagramları, varlıkların ilişki özelliklerinin detaylandırılmadan şematik gösterimleridir. Tasarımın bu aşamasında varlık-varlık matrisinde oluşturduğumuz ilişkilerin şematik gösterimi yapılmaktadır. Varlık-ilişki modelinin şematik gösteriminde kullanılan varlık ve öznitelik diyagramları, bu aşamada tablolar olarak gösterilecektir (s:120, Resim 6.7). Gösterimde tablonun en üstünde varlığın adı, hemen altındaki kutuda birincil anahtar alanı ve onun altındaki kutuda önemli özniteliklerin bir kısmı gösterilecektir. Varlığın bütün özniteliklerinin gösterimi gereksiz yer kaplayacağından, şematik gösterimde öznitelik alanlarının tamamı kullanılmayacaktır. Varlıkların ilişkileri eşkenar dörtgen ile gösterilmektedir. İlişkiler kullanılan eylemler ise eşkenar dörtgenlerin içine yazılarak ifade edilmiştir (s:121, Resim: 6.8).

İlişkilerin detaylandırılması: Bu aşamada varlıklar arası ilişkiler, ilişkinin niceliği (cardinality) ve ilişkinin var olma olasılığı (optionality) yönünden detaylandırılır. Bu işlem bize varlıklar arası ilişkide neyin olabileceğini ya da neyin olması gerektiğini, bununla birlikte bir varlığın ilişkili olduğu varlıkla nicel olarak nasıl bir eşleşme yapacağını ifade eder. İlişkinin nicelik ve olasılık açısından detaylandırılması yapılırken ilişkiyi tanımlayan fiil, her iki varlığın bakış açısından da değerlendirilmelidir.

Varlık ilişkilerinin var olma olasılığının varlık-ilişki diyagramlarında gösterimi;

  • İlişkinin gerçekleşme durumu ‘0’ – İlişki olabilir (Olası durum)
  • İlişkinin gerçekleşme durumu ‘1’ – İlişki olmalı (Zorunluluk)

şeklindedir. Eğer ‘0’ yani olası durum söz konusuysa bu ilişkinin gerçekleşme zorunluluğu yoktur. Nicelik açısından değerlendirme varlığın ilişkideki oluşum sayısının ifadesidir. Varlık ilişkilerinin niceliğinin varlıkilişki diyagramlarında gösterimi;

  • Nicelik ‘1’ – Sadece bir varlığa karşılık gelen
  • Nicelik ‘N’ – En az bir, birçok varlığa karşılık gelen

şeklindedir.

Detaylı varlık ilişki diyagramının oluşturulması: Bu aşamada belirlenen ilişki detayları, nicelik ve olasılıkların kombinasyonu ile ifade edilerek basit varlık-ilişki diyagramına yerleştirilir. İlişkilerin nicelik ve olasılıklarının bu birleşimlerini incelersek:

  • 0:1 – Varlık bir varlıkla ilişkili olabilir.
  • 0:N – Varlık birçok varlıkla ilişkili olabilir; ya da en az bir varlıkla ilişkili olabilir.
  • 1:1 – Varlık sadece bir varlıkla ilişkili olmalıdır.
  • 1:N – Varlık birçok varlıkla ilişkili olmalıdır; ya da en az bir varlıkla ilişkili olmalıdır.

R-M (İlişkisel Model) Diyagramlarının Oluşturulması

Tasarımın bu aşamasında, oluşturulan varlık-ilişki diyagramları ilişkisel model diyagramlarına dönüştürülecektir.

İlişkisel modelde, varlıkların ve ilişkilerinin gösterilmesi açısından terminoloji ve kullanılan semboller biraz değişmektedir. Bu yapıda varlıklar kuracakları ilişkiye göre tablolarına yabancı anahtarlar eklerler ve varlık olarak tanımlanmaktan çıkarak ilişki olarak tanımlanırlar. Tablolar arası ilişkiler ise varlık-ilişki diyagramlarındaki eşkenar dörtgenlerin yerine, farklı diyagramlarla gösterilir (s:125, Resim: 6.13). Kesikli çizgilerle olan gösterim, ilişkideki birincil anahtarın yabancı anahtarlardan oluşmadığını, düz çizgiyle olan gösterim ise oluşturulan ilişkide birincil anahtarın yabancı anahtarın kullanımıyla birleşik olarak oluşturulduğunu ifade eder. Düz çizgiyle gösterim tanımlı ilişki olarak adlandırılırken, kesikli çizgiyle gösterim tanımlanmamış ilişki olarak adlandırılır. Uzun ya da kesikli çizginin üzerindeki paralel çift çizgi ilişkinin bir tarafının alacağı tek bir değeri gösterirken diğer ucunun çatal (üç çizgiyle gösteriliyor) olması, ucun gösterdiği ilişkinin birden fazla değer alacağını ifade eder. Eğer bu çatalın dip kısmında tek bir çizgi varsa ucunun gösterdiği ilişkinin en az bir ya da daha çok değer alacağını (zorunluluk) ifade ediyor demektir. Eğer çatalın dip kısmı daireden oluşuyorsa bu durum olasılık belirtir. Yani çatalın ucunun gösterdiği ilişkinin değer almayabileceğini ifade eder.

İlişkisel modelde çoktan çoğa ilişki için doğrudan bir gösterim yoktur. Çoktan çoğa gösterim, iki tane, birden çoğa ilişkinin kesiştiği yerde bir ilişki tablosu oluşturularak gösterilir. Varlık-ilişki diyagramlarında ilişkinin her iki yanındaki nicel gösteriminde “N” değerinin olması da bu ilişkinin çoktan çoğa olduğunu ifade etmektedir (s:125, Resim 6.14). Bu varlık ilişki gösterimini ilişkisel model diyagramlarına dönüştürmek için, varlıklar arası ilişkiyi temsil eden şekil ve bağlantı çizgileri çıkarılır. İlişkiyi göstermek için varlıklar arasına yeni bir ilişki tablosu oluşturulur. Bu ilişki tablosunun ismi ilişkide olduğu iki tablonun ismi birleştirilerek tanımlanır. Bundan sonra ilişkilerin tarif ettiği olası ya da zorunlu durumlara göre, ilişkisel model için tanımlanan ilişki diyagramları kullanılarak varlıklar, ilişki tablosuna bağlanır. Varlıkların birincil anahtarları (BA), ilişki tablosunda yabancı anahtar olarak (YA) gösterilir. İlişki tablosu için ya yeni bir birincil anahtar yaratılır ya da varlıklardan gelen ikincil anahtarlar, birleşik olarak kullanılarak birincil anahtar değeri türetilir. Oluşturulan ilişki tablosu için yeni öznitelik değerleri tanımlanabilir. Tanımlanan yeni öznitelik değeri, sadece her iki yabancı anahtarın aynı anda sorgulanabilmesiyle gösterilebilir.

İlişkisel modelde birden çoğa ilişkiyi göstermek için tekrar varlık-ilişki diyagramının bir parçası kullanılmıştır (s: 126, Resim 6.16). Diyagramdaki ilişki ve nicel değeri “1” olan varlık gruplanır. İlişkinin şematik gösteriminde nicel değerliğin, ilişki bir tarafında “N” diğer tarafında “1” değerliğini alır. Bu durum varlıklar arası kurulacak birden çoğa ilişkinin yönünü göstermektedir (s: 127, Resim 6.17). Gruplanan ilişki ve varlığa doğru olacak şekilde, birden çoğa ilişkinin ilişkisel modele uygun gösterimi, ilişkinin tarif ettiği olası ve zorunlu durumlarda dikkate alınarak oluşturulur. İlişkinin yönü aynı zamanda yabancı anahtarın hangi tabloda kullanılacağını da göstermektedir.

Bire bir ilişki, varlık-ilişki diyagramlarında ilişkinin her iki tarafında da nicel değerlerinin 1 olması durumunda gerçekleşir (s:128, Resim 6.19). Gruplanan varlık ve ilişkiye doğru olacak şekilde, bire bir ilişkinin ilişkisel modele uygun gösterimi, ilişkinin tarif ettiği olası ve zorunlu durumlarda dikkate alınarak oluşturulur. İlişkinin yönü aynı zamanda yabancı anahtarın hangi tabloda kullanılacağını da göstermektedir (s: 128, Resim 6.21).

Tasarımın Uygulanması

Normalizasyon, veritabanı yapısında ilişkilerin organizasyonuyla veri tekrarının azaltıldığı, verilere bağlı tutarsızlıkların engellendiği verilerin düzenlenme sürecidir. Veritabanı tasarımının önemli aşamalarından biridir ve ilişkisel veritabanı normalizasyon kurallarına uygun tasarlanmalıdır. Genellikle ilk üç normalizasyon kuralı veri tekrarının azaltılmasında ve veri tutarlılığının sağlanmasında yeterli olmaktadır. Bu ilk üç kuralı kısaca hatırlarsak:

Birinci normalizasyon kuralı: İlişkili her tabloda alan bütünlüğünün var olması gereklidir. Alan bütünlüğü için her tablo birincil anahtar olan bir veri alanına sahip olmalı ve özniteliklerin sahip olduğu her olası değer veri satırındaki bir veri alanına karşılık gelmelidir. Veri sütunun tekrar etmesine ya da bir veri sütununda birden fazla veri olmasına izin verilemez.

İkinci normalizasyon kuralı: İlişkili her tablo varlık bütünlüğü göstermelidir. Bu durum tablodaki her satırın eşsiz ve özgün olması ile mümkündür. Bunun için tabloda birincil anahtar olmayan tüm alanlar (sütunlar), birincil anahtar alana bağlı olmalıdır.

Üçüncü normalizasyon kuralı: İlişkili her tablo veri tutarlılığını sağlamalıdır. Bu durum tablolar arası ilişkinin anahtar alanlar ile kurulmasıyla mümkündür. Yani bir tablodaki yabancı anahtar (foreign key) başka bir tabloda birincil anahtar olarak yer almalıdır.

Art arda güncelleme ve silme ilişkisel veritabanlarında veri tutarlılığını sağlayan doğrudan ya da dolaylı mekanizmalardır. Veri tutarlılığı yabancı anahtarın başka bir tabloda birincil anahtar olması koşulunu sağlar. Bu ilişki sayesinde eğer varlık tablosunda birincil anahtar değeri değişirse buna bağlı olan tablolardaki tüm yabancı anahtar değerlerine karşılık gelen birincil anahtar değerleri de değişecektir (art arda güncelleme). Art arda silme koşulu ise varlık tablosundan bir varlığın silinmesi sonucunda, ona yabancı anahtarlar aracılığıyla bağlı tablolardaki tüm varlıkların da silinmesi durumudur. Burada dikkat edilmesi gereken eğer ilişki çoktan çoğa ise varlığın silinmesi sadece ilişkinin silinmesini sağlar. Eğer ilişki birden çoğa ya da birebir ilişki ise varlığın silinmesi ilişkiyi sağlayan yabancı anahtara sahip varlıkları da siler.

Dizinler tablolar için kullanılan veritabanı nesneleridir. Aranılan verilere daha hızlı ulaşmak için kullanılır. İki tip dizin yapısı vardır. Kümelenmiş (clustered) ve kümelenmemiş (non-clustered).

Kümelenmiş dizin sıralamaya bağlı bir sistem olduğundan bir tabloda sadece bir tane oluşturulabilir. Bunun için seçilen alan da genelde birincil anahtarın olduğu alandır. Kümelenmiş dizin, bir tablodaki verilerin disk üzerine sıralı olarak kaydedilmesini sağlar. Tabloda kümelenmiş dizin oluşturduktan sonra farklı bir alan üzerinden tekrar dizin oluşturmak istenirse kümelenmemiş dizin kullanılır. Kümelenmemiş dizin yapısında verilere doğrudan erişilmez. Kümelenmiş dizin yapısına erişmek için dizinin oluşturulduğu veri sütunundaki verilere işaretçiler konur.

Dizin kullanmak sorgulamaya hız kazandırırken, yapı olarak bir kayıt tuttuğu için veri sayısı arttıkça kapladığı yer de artacaktır. Oluşturulacak dizinde sayı değeri olan bir alan seçmek oluşturulan dizinden daha fazla verim alınmasına sebep olacaktır. Dizin kullanımının ne zaman yapılacağına karar vermek için veritabanında yapılacak sorgulama ve sıralama işlemlerinin hızı kontrol edilmelidir. Eğer bu işlemler istenilen hızdan yavaş ise dizin kullanılmalıdır. Veritabanında dizin oluşturmak ya da oluşturulan dizini kaldırmak veri kaybına sebep olmaz.

Veritabanında veriler tablolarda tutulur. Her tablo bir ya da daha çok sütundan (alandan) oluşur. Tasarımda, tablodaki her sütuna içinde saklayacağı veriye göre bir değer tipinin belirlenmesi gerekir. Bu belirlendikten sonra, artık o sütunda belirlenen değer tipinin haricinde karakter ve birimler kullanılamaz. Sütunun veri tipinde sonradan (veri girildikten sonra) yapılacak bir değişiklik veri kayıplarına sebep olacağından, oluşturulan veri tipi bir daha değiştirilmez. Farklı Veritabanı Yönetim Sistemi (VTYS) yazılımları küçük değişikliklerle farklı veri tipleri kullansa da veri tipleri dört kategori altında genelleştirilebilir;

  • Metin
  • Sayısal veri tipi
  • Tarih/zaman
  • İkili

Bu genel kategoriler harici VTYS yazılımları, veri tiplerinde birçok alt tip kullanım imkânı sağlamaktadır. Bu yüzden kullanılan yazılıma göre hangi alt tiplere destek verdiğinin anlaşılarak ona göre veri tiplerinin belirlenmesi önemlidir. Çünkü veriler belirlendikleri tiplere göre yer kaplarlar.

BİR YORUM YAZIN

ZİYARETÇİ YORUMLARI - 0 YORUM

Henüz yorum yapılmamış.