Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği VERİ TABANI YÖNETİMİ Ders 4: Varlık-İlişki Çizelgelerinin İlişkisel Veri Tabanına Dönüştürülmesi Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği
E-R Çizelgelerini İVTYS’ye Dönüştürme Varlık-ilişki modeli kullanılarak veri modelleme yapıldıktan sonra, eğer veri tabanını gerçekleştirmek için ilişkisel bir VTYS kullanılacaksa, oluşturulan varlık-ilişki çizelgesinin tablolara (ilişki şemalarına) dönüştürülmesi gerekir. Bu amaçla varlık-ilişki modelindeki her farklı kavramın (varlık kümesi, nitelik, ilişki kümesi, ilişki kümesinin tanımlayıcı niteliği, güçlü ve zayıf varlık kümeleri, var olma bağımlılığı, genelleme, kümeleme, ..vb) ilişkisel modelde nasıl gösterileceğinin bilinmesi gerekir.
Varlık Kümelerinin Dönüştürülmesi Varlık-ilişki modelindeki her varlık kümesi için ilişkisel modelde bir tablo oluşturulur. İlişkinin nitelikleri olarak da varlık kümesinin nitelikleri kullanılır.
Örnek DKODU SOYADI ADI CİNSİYETi DERS KREDİSİ ÖĞRNO ÖĞRENCİ DOĞTAR DERSADI Daha önce verilmiş bir örnek olan, ÖĞRENCİ ve DERS varlık kümelerine karşılık, ilişkisel modelde aşağıdaki tablolar oluşturulur. ÖĞRENCİ (ÖĞRNO, ADI, SOYADI, CİNSİYETİ, DOĞTAR) DERS (DKODU, DERSADI, KREDİSİ)
Zayıf Varlık Kümelerinin Dönüştürülmesi Eğer varlık kümesi en az bir anahtarı bulunan güçlü bir varlık kümesi ise, tablo alanları olarak varlık kümesinin niteliklerinin kullanılması yeterlidir. Eğer varlık kümesi anahtarı olmayan zayıf bir varlık kümesi ise (niteliklerin hepsi birlikte alındığında bile bir anahtar oluşturmuyorsa), tablo alanları olarak zayıf varlık kümesinin niteliklerinin kullanılması yeterli değildir.
Zayıf Varlık Kümelerinin Dönüştürülmesi Bu nedenle zayıf bir varlık kümesine karşı gelen tablo oluşturulurken, ilişki nitelikleri olarak zayıf varlık kümesinin niteliklerine ek olarak, bu varlık kümesinin var olma bağımlı olduğu güçlü varlık kümesinin anahtarında yer alan niteliklerde kullanılır.
Örnek SOYADI LİSENO ADI LİSEADI OKUDUĞU ÖĞRNO ÖĞRENCİ LİSE KENT Daha önce verdiğimiz yukarıdaki çizimdeki güçlü LİSE varlık kümesi ile zayıf ÖĞRENCİ varlık kümelerine karşılık, ilişkisel modelde aşağıdaki tablolar oluşturulur: LİSE (LİSENO, LİSEADI, KENT) ÖĞRENCİ (LİSENO, ÖĞRNO, ADI, SOYADI)
İlişki Kümelerinin Dönüştürülmesi Varlık-ilişki modelindeki her ilişki kümesi için ilişkisel modelde bir tablo oluşturulmasına gerek yoktur. Sadece çoğa-çok ilişki türü için bir ara-tablo kullanmak gereklidir. Eğer ilişki türü birden-çoğa yada birden-bire ise varlık kümesi için oluşturulan tablolardan birine, diğer varlık kümesinin anahtarında yer alan nitelikleri eklemek yeterlidir.
İkili Çoktan-Çoğa İlişki Kümelerinin Dönüştürülmesi Eğer bir ikili ilişki kümesinin türü çoktan-çoğa (ilişki hiçbir yönde işlevsel değil) ise ilişkisel modelde bu ilişki kümesi için ayrı bir şema oluşturulur. İlişki kümesine karşılık gelen ilişki tabloda, her iki varlık kümesinin anahtarları ile, varsa ilişki tanımlayıcı niteliklerine yer verilir.
Örnek Örneğin SATTIĞI ilişkisi ilişkisel modelde aşağıda şeması verilen ilişki ile gösterilir. SATTIĞI (MAĞNO, ÜRÜNKODU, MİKTAR) MAĞNO MAĞADI ÜRÜNKODU ÜRÜNADI SATTIĞI n m MAĞAZA ÜRÜN MİKTAR
İkiden Büyük Dereceli İlişki Kümelerinin Dönüştürülmesi Eğer bir ilişki kümesi ikiden çok varlık kümesi arasında kurulmuşsa, ilişkinin diğer özellikleri (eşleme sınırlamaları, ilişkinin tanımlayıcı niteliklerinin bulunup bulunmaması, ..vb.) ne olursa olsun, ilişkisel modelde bu ilişki kümesine karşılık ayrı bir tablo oluşturulur. Oluşturulan tabloda, aralarında ilişki kurulan tüm varlık kümelerinin anahtarlarına ek olarak, varsa ilişkinin tanımlayıcı niteliklerine yer verilir. Bu varlık kümelerinden biri ya da birkaçı zayıf varlık kümesi ise, bu varlık kümelerinin anahtarlarını bulmak için ilgili yöntem kullanılır.
Örnek GÖREVİ SALON ESNO TARİH ESADI KATILIM KONSNO KONSER ESER BESTECİ ESTÜRÜ MZSNO MÜZİSYEN SOYADI ADI KONSER, ESER ve MÜZİSYEN varlık kümeleri arasındaki KATILIM adlı üçlü ilişki kümesini düşünelim.
Örnek GÖREVİ SALON ESNO TARİH ESADI KATILIM KONSNO KONSER ESER BESTECİ ESTÜRÜ MZSNO MÜZİSYEN SOYADI ADI Bu ilişki kümesi hangi konserde, hangi eser çalınırken orkestrada hangi müzisyenlerin yer aldığını ve görevlerinin ne olduğunu göstermektedir.
Örnek GÖREVİ SALON ESNO TARİH ESADI KATILIM KONSNO KONSER ESER BESTECİ ESTÜRÜ MZSNO MÜZİSYEN SOYADI ADI KONSER(KONSNO, TARİH, SALON) ESER(ESNO, ESADI, ESTÜRÜ, BESTECİ) MÜZİSYEN(MZSNO, ADI, SOYADI)
Örnek Üçlü KATILIM ilişkisi için, ilişkisel modelde aşağıdaki tablo oluşturulur: KATILIM (KONSNO, ESNO, MZSNO, GÖREVİ) Eğer varlık kümeleri arasındaki ikili eşlemelerin (konser-eser, konser-müzisyen ve eser-müzisyen) her üçü de çoktan-çoğa ise KATILIM ilişkisinin anahtarı, yukarıdaki tabloda görüldüğü gibi üç varlık kümesinin anahtarlarının birleşiminden oluşur.
İkili Birden-Çoğa İlişki Kümelerinin Dönüştürülmesi Eğer bir ikili ilişki kümesinin türü birden-çoğa ya da çoktan-bire (ilişki bir yönde işlevsel) ise ilişkisel modelde bu ilişki kümesi için ayrı bir şema oluşturmaya gerek yoktur. Örneğin BÖLÜM ve PERSONEL varlık kümeleri arasındaki ÇALIŞAN ilişkisini düşünelim.
Örnek Eğer her personel yalnız bir bölümde çalışıyorsa, bu ilişkinin türü BÖLÜM'den PERSONEL'e birden-çoğadır. Yani ilişki PERSONEL'den BÖLÜM'e işlevseldir. Bu varlık-ilişki çizelgesi ilişkisel modele dönüştürülürken BÖLÜM ve PERSONEL varlık kümelerine karşı gelen ve anahtarları sırasıyla BNO ve PNO olan iki şema oluşturulur.
Örnek Eğer ÇALIŞAN ilişki kümesi için ayrı bir şema oluşturulursa, bu şema, anahtarı PNO olan ve çalışan her personel için yalnız bir satırı olan bir şema olacaktır. Oysa anahtarı PNO olan ve kurumdaki her personel için yalnız bir satır içeren PERSONEL şeması zaten vardır. Dolayısıyla ÇALIŞAN ilişki kümesini göstermek için ayrı bir ilişki oluşturmaya gerek yoktur.
Örnek Bu ilişki kümesini göstermek için PERSONEL ilişkisine BÖLÜM varlık kümesinin anahtarı olan BNO ile ilişkinin tanımlayıcı nitelikleri olan GÖREVİ ve GBAŞTAR eklenir. Bu durumda, yukarıdaki çizimdeki PERSONEL ve BÖLÜM varlık kümeleri ile aralarındaki ÇALIŞAN ilişkisine karşılık, ilişkisel modelde iki şema oluşturulur.
Örnek BÖLÜM (BNO, BADI) PERSONEL (PNO, ADI, SOYADI, DOĞTAR, BNO, GÖREVİ, GBAŞTAR) Yukarıdaki tablolardan ilki varlık-ilişki çizeneğindeki BÖLÜM varlık kümesine, ikincisi ise hem PERSONEL varlık kümesine hem de ÇALIŞAN ilişkisine karşılık gelmektedir.
İkili Birden-Bire İlişki Kümelerinin Dönüştürülmesi Eğer bir ikili ilişki kümesinin türü birden-bire (ilişki her iki yönde de işlevsel) ise ilişkisel modelde bu ilişki kümesini göstermek için de ayrı bir şema oluşturmaya gerek yoktur. Örneğin BÖLÜM ve PERSONEL varlık kümeleri arasındaki BBAŞKANI (bölüm başkanı) ilişkisini düşünelim.
Örnek Eğer her bölümün bir başkanı olabiliyorsa; bir personel de en çok bir bölümün başkanı olabiliyorsa, her iki yönde de işlevsel olan bu ilişkinin türü bire-birdir.
Örnek Bire-bir varlık kümelerini ilişkisel modelde göstermek için, varlık kümelerinden birinin anahtarını, varsa ilişkinin tanımlayıcı nitelikleri ile birlikte, diğer varlık kümesine karşı gelen şemaya eklemek yeterlidir. Bunun için de olası iki seçenekten biri seçilir. İlişkilerin anlamlarına ve kullanım ortamına göre bu seçeneklerden biri daha uygun olabilir.
Örnek 1. seçenek: BÖLÜM (BNO, BADI) PERSONEL (PNO, ADI, SOYADI, DOĞTAR, YBNO, GBAŞTAR) Burada YBNO personelin (bölüm başkanının) yönettiği bölümün numarasıdır.
Örnek 2. seçenek: BÖLÜM (BNO, BADI, BBPNO, GBAŞTAR) PERSONEL (PNO, ADI, SOYADI, DOĞTAR) Burada BBPNO bölüm başkanı personel numarasıdır. (Bu örnek için bu seçenek daha uygun bir çözüm olarak görülmektedir.)
Aynı Varlık Kümesi İçindeki İlişki Kümeleri Eğer ilişki kümesi iki farklı varlık kümesi arasında tanımlanmak yerine, aynı varlık kümesi içinde tanımlanmışsa, bu varlık kümesinin ilişkisel modele dönüştürülmesinde hiçbir farklılık yoktur. İlişki kümesinin türünün birden-bire, birden-çoğa ya da çoktan-çoğa olmasına göre yukarıda söylenenlerin tümü geçerlidir.
Aynı Varlık Kümesi İçindeki İlişki Kümeleri Ancak aralarında ilişki kurulan varlık kümeleri aynı olduğu için, bir tabloda aynı niteliğin farklı rollerde yer alması söz konusu olabilir. Bunun için de, roller de düşünülerek niteliklere uygun adlar seçilmesi gerekir.
Örnek PERSONEL varlık kümesi ve bu varlık kümesi içindeki birden-çoğa YÖNETİCİ ilişkisi ilişkisel modelde tek bir şema ile gösterilebilir. PERSONEL(SİCİLNO, ADI, BÖLÜMÜ, GÖREVİ, GBAŞTAR, YSİCİLNO) BÖLÜMÜ SİCİLNO YÖNETİCİ ADI PERSONEL 1 üst n GBAŞTAR ast GÖREVİ
Örnek Soru Bir sanal alışveriş sitesi için geliştirilen veri tabanında ürünler, kategoriler, tedarikçi firmalar, müşteriler ve siparişler varlık kümelerini, bu kümeler arasındaki ilişki kümelerini (ilişki türlerini de belirterek) ve size göre bu kümelerin sahip olması gerekli nitelikleri de gösterecek şekilde varlık-ilişki modeli çizelgesini oluşturunuz.
Sorunun Cevabı ÜRÜN KATEGORİ SİPARİŞ FİRMA MÜŞTERİ AİT OLDUĞU n 1 n n Alış Fiyat Satış Fiyat KDV Oranı AİT OLDUĞU n 1 Ürün ID ÜRÜN KATEGORİ Kategori Adı n n Ürün Adı Kategori ID YER ALDIĞI TEDARİK EDEN Adet Sipariş ID Adres n Tarih 1 SİPARİŞ Firma ID FİRMA n Adres Ad Firma Adı VERDİĞİ Telefon 1 MÜŞTERİ Soyad Müşteri ID Telefon
İlişkisel Veri Modeli Gösterimi ÜRÜNLER(Ürün ID, Ürün Adı, Alış Fiyatı, Satış Fiyatı, Kategori ID, Firma ID) KATEGORİLER(Kategori ID, Kategori Adı, KDV Oranı) FİRMALAR(Firma ID, Firma Adı, Telefon, Adres) MÜŞTERİLER(Müşteri ID, Adı, Soyadı, Adresi, Telefonu) SİPARİŞLER(Sipariş ID, Müşteri ID, Tarih) SİPARİŞ_DETAY(Sipariş ID, Ürün ID, Adet)
İlişkilerin Tablolar ile Gösterimi