Konumsal Veritabanı 1 Dersi 6. Ünite Sorularla Öğrenelim
İlişkisel Veritabanı Tasarımı
- Özet
- Sorularla Öğrenelim
İlişkisel veritabanı oluşturmada kullanışlı ve yararlı bir veritabanı için tasarım basamaklarında hangi sorulara yanıtlar aranır?
İ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şturmadaki 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?
İlişkisel veritabanlarını tanımlayınız.
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. Oluşturulacak veritabanının bu kurallara uygunluğu, zihnimizde ve kâğıt üstünde canlandırdığımız biçimiyle test edilmelidir.
İlişkisel veritabanları hangi amaçlarla oluşturulur?
Veritabanlarına çok çeşitli sebeplerle ihtiyaç duyulabilir. Bunlar arasında hizmet üretmek, denetim sağlamak, analiz yapmak, bilgi oluşturmak vb. sayılabilir. İlişkisel veritabanlarındaki verilerin kümelenmesi ve bu kümelerin birbirleriyle ilişkilendirilmesi bu ihtiyaçlara yönelik oluşturulur. Yani oluşturulacak veritabanının bir ihtiyacı karşılıyor olması ve bir amaca sahip olması gerekir. Amaçsız bir veritabanı oluşturmanın bir mantığı yoktur. 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.
İlişkisel veritabanı oluşturma hangi basamaklardan meydana gelir?
- Veritabanı Oluşturmaktaki Amacın Belirlenmesi
- Varlıkların ve Özniteliklerin Belirlenmesi
- İlişkilerin Belirlenmesi
- E-R (Varlık-İlişki) Diyagramlarını Oluşturulması
- R-M (İlişkisel-Model) Diyagramlarını Oluşturulması
- Tasarımın Uygulanması
Varlıkların öz niteliklerinin belirlenmesi basamağını açıklayınız.
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. Bu soruların yanıtını da en iyi şekilde cevaplamak için amaç ve onun doğrultusunda oluşturulan senaryonun iyi analiz edilmesi gerekmektedir.
İlişkisel veritabanlarının oluşturulmasında varlıklar nasıl belirlenir?
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. Basit cümlelerle net bir şekilde belirlenen amaçtan varlıkları belirleme işlemi de problemsiz olacaktır. 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.
Öznitelik veri alanlarının düzenlenmesinde dikkat edilmesi gereken huşular nelerdir?
Ö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ı antığı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.
Belirleyicilerin ve anahtar alanlarının seçilmesinde dikkat edilmesi gereken hususlar nelerdir?
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 (non-unique), 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 eşsiz bir değere sahip 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.
Bir bileşenli ilişkileri açıklayınız.
Bir bileşenli ilişki, bir varlığın kendisiyle oluşturduğu ilişkidir. Örneğin, senaryoya ek olarak okula yeni tabletler geldiğini varsayalım. Yeni model tabletler, en eski model tablet kullanan öğrencilere verilmek isteniyor. Yani yeni model tabletlerin verilme şartı için ön koşul, öğrencinin en eski model tableti (en eski kayıt tarihli) kullanıyor olmasıdır. Böyle bir durumda tablet bilgisayarlar, tablet bilgisayarların ön koşulu olmaktadır.
Çift bileşenli ilişkileri açıklayınız.
Çift bileşenli ilişki, iki farklı varlığın birbirleriyle oluşturduğu ilişkidir. Örneğin öğrenci tablet bilgisayarı kullanır cümlesinde, öğrenci varlığı ile tablet bilgisayar varlığı arasında kullanım ile ilgili bir ilişki kurulmuştur.
Üç bileşenli ve daha üst mertebeden ilişkileri açıklayınız.
Üç 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.
Basit varlık-ilişki diyagramları nasıl oluşturulur?
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. 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 bu eşkenar dörtgenlerin içine yazılarak ifade edilmiştir (S:120, Resim 6.7 görülmelidir).
Detaylı varlık-ilişki diyagramlarının oluşturulmasında belirlenen ilişki detayları nicelik ve olasılıkların kombinasyonlarıyla nasıl gösterilir?
Detaylı varlık-ilişki diyagramlarının oluşturulma aşamasında, 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:
- İlişkinin gerçekleşme durumu ‘0’ – İlişki olabilir (Olası durum)
- İlişkinin gerçekleşme durumu ‘1’ – İlişki olmalı (Zorunluluk)
- Nicelik ‘1’ – Sadece bir varlığa karşılık gelen
- Nicelik ‘N’ – En az bir, birçok varlığa karşılık gelen
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
İlişkisel Model Diyagramlarını açıklayınız.
Tasarımın bu aşamasında, oluşturulan varlık-ilişki diyagramları ilişkisel model diyagramlarına dönüştürülecektir. Bu dönüşümde amaç veritabanını kavramsal bir yapıdan uygulanabilir bir modele taşımaktır. Önceki bölümlerde oluşturulan varlık-ilişki diyagramları, veritabanının kavramsal özellikleri olan; verinin mantıksal yapısı, verilerin nasıl temsil edileceği ve ilişkilerin planlanması üzerine kurgulanmıştı. Oluşturulan bu kavramsal model, aslında veritabanına kullanıcı gözünden bakışın temsilidir. Şimdi oluşturulacak uygulama modelinde ise veritabanı, geliştirici bakış açısıyla temsil edilecektir. Veritabanı tasarımında kurgu bu yönde ilerler. Yani geliştirici bakış açısından önce kullanıcı bakış açısı tasarlanır.
İlişkisel modelde, varlıkların ve ilişkilerinin gösterilmesi açısından terminoloji ve kullanılan semboller biraz değişmektedir. Literatürde bu gösterime “Crow’s Foot Relational Model Diagrams” (Karga Ayağı İlişkisel Model Diyagramları) da denir. İlk kez Gordon Everest tarafından kullanılan 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, diyagramlarla gösterilir.
İlişkisel modelde ilişkilerinin çizgilerle gösterimini gösteriniz.
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 (S.125, Resim 6.13 görülmelidir).
Normalizasyon sürecini açıklayınız.
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. Eğer uymadığı fark edilirse tasarım normalizasyon kurallarına göre tekrar düzenlenmelidir. Genellikle ilk üç normalizasyon kuralı veri tekrarının azaltılmasında ve veri tutarlılığının sağlanmasında yeterli olmaktadır.
Birinci normalizasyon kuralını nedir?
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. Yani tablodaki her sütunun eşsiz bir ismi olması ve bu sütunun her satırı tek bir veri değeri içermelidir. Veri sütunun tekrar etmesine ya da bir veri sütununda birden fazla veri olmasına izin verilemez.
İkinci normalizasyon kuralını nedir?
İ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ını nedir?
Üçü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.
İlişkisel veritabanlarında art arda güncelleme ve silme özelliklerini açıklayınız.
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ığı üçüncü normalizasyon kuralının bir karakteristiğidir ve 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). Bazı ilişkisel veritabanı sitemleri, otomatik oluşturulan birincil anahtar değerlerinin güncellenmesini engelleyebilir. Bu durum art arda güncelleme koşulunu gereksiz gibi gösterse de, tabloyu oluştururken bu özelliği kullanmamıza engel olmamalıdır. 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.