ER’nin İlişkisel Modele Dönüştürmesinin Gerçekleştirimi
Adım 1 – Nesne tiplerinin dönüştürülmesi;
Her bir normal nesne E için bir ilişki R yaratılır. E’nin anahtar niteliklerinden biri ilişki R için birincil nitelik (pk) olarak tayin edilir. Birleşik nitelikler için sadece basitleri alınır.
Adım 2 – Zayıf nesne tiplerinin dönüştürülmesi:
Her bir zayıf nesne tipi W için, bir ilişki R yaratılır ve W’nin bütün nitelikleri bu R’de içerilir. Ancak tanımlayıcı nesne tipinin anahtar niteliği de R’de yabancı nitelik, fk(foreign key), olarak alınır. R’nin pk’si fk artı W’nin kısmi anahtar niteliğinin kombinasyonundan oluşur.
Adım 3 – 5 – İlişkisel tiplerin dönüştürülmesi :
Adım 3: Her 1:1 ilişki tipi R için bu ilişkide olan nesneler E ve F için S ve T ilişkileri belirlenir. Bu ilişkilerden biri seçilir, S olsun. T’nin pk’si S için fk olarak S’de içerilir. Buna alternatif olarak bu iki ilişki bir tek ilişki olarak birleştirilir. Ancak bu yaklaşım ilişkinin toptan (total) olması ve nesne tiplerinin başka ilişki içinde olmamaları durumunda mümkündür.
Adım 4: Her 1:N ilişki tipi R için ilişkinin N tarafındaki katılan nesne tipi (S) belirlenir. R ilişkisinin diğer tarafındaki nesne tipi de T olsun. Bu durumda S ilişkisinde T’nin pk’sı fk olarak eklenir. Bunu yapmamızın sebebi, N tarafındaki her bir nesnenin diğer taraftaki en fazla bir tane nesneyle ilişkili olmasıdır.Son olarak da 1:N ilişkisinin basit nitelikleri de S’e nitelik olarak dahil edilir.
Adım 5: Her M:N ilişki tipi R için yeni bir ilişki Y yaratılır. Bu Y ilişkisine ilişki tipi R’de olan tüm nesne tiplerinin pk’leri fk olarak içerilir. Bu fk’lerin kombinasyonu Y’nin pk’sini oluşturur. Ayrıca aynı ilişki Y’ye bu ilişki tipinde var olan tüm basit niteliklerde Y’nin nitelikleriymiş gibi içerilir.
Adım 6 – Çok verili niteliklerin dönüştürülmesi (her bir çok verili nitelik için yeni bir ilişki kur):
Her bir çok verili(multivalued) nitelik A için yeni bir ilişki S yaratılır ve A ile birlikte A’nın bulunduğu nesne tipinin, diyelim E’nin pk’si de S’de bulundurulur. S’nin pk’si A ile E’nin pk’sinin kombinasyonudur. Eğer A bir birleşik(composite) nitelik ise o zaman sadece basit nitelikleri içerilir.
Adım 7 – Yüksek dereceli ilişkilerin dönüştürülmesi (her bir yüksek dereceli ilişki için ayrı bir ilişki oluştur):
Eğer ilişkinin derecesi üçlü(ternary) ise yapılacak olan , adım 5’tekine benzerdir.
Adım 8 – ISA hiyerarşilerinin dönüştürülmesi (tek ilişkide toplanma olasılığına karşın her farklı sınıf için bir ilişkinin oluşturulması söz konusudur):
ISA hiyerarşisinin ilişkisel modele dönüştürülmesi şu şekilde yapılabilir: Herbir alt sınıfı, {S1, … , Sm} ve süper sınıfı C (C’nin niteliklerinin a1, … , an ve birincil anahtarının k olduğunu farz edelim) birer ilişki şemasına dönüştürelim. Bir L ilişkisini C sınıfı için oluşturalım ve şu niteliklerden oluşsun:
Nitelikler(L) = {k, a1, … ,an} ve birincil anahtar(L) = k olsun.
Her bir alt sınıf Si, 1<= I <= m, için bir Li ilişkisi yaratalım ve bunların nitelikleri de şunlar olsun:
Nitelikler(Li) = {k} U {Si’nin nitelikleri} ve her Li’nin birincil anahtarı k olsun.
Burada anlatılan dönüştürmeden farklı şemalarla sonuçlanabilecek başka dönüştürme biçimleri de vardır ve bunları ders kitabınızdan ve başka kaynaklardan öğrenebilirsiniz.
Şimdi burada anlatılan dönüştürmeye parça parça örnekler verelim.
Örnek-1
Herhangi bir nesne niteliklerince tanımlanabilir ve diğer nesnelerden ayırt edilebilen bir gerçek-dünya nesnesidir. İlişkisel şemaya dönüştürülmesine bir örnek verelim:
ŞEKİL 7.1 – ÇALIŞAN ilişkisi ve nesne tipi
SQL ile bu şemayı şu şekilde tanımlayabiliriz:
CREATE TABLE Çalışan
(çno CHAR(12),
isim CHAR(30),
yaş INTEGER
PRIMARY KEY (çno))Örnek-2
ER’da ilişkiyi iki ya da daha fazla nesnenin birbiriyle olan ilintisi olarak tanımlayabiliriz. İlişkisel bir şemaya dönüşümü için m-n(çok-çok) durumunu örneklendirelim:
ŞEKİL 7.2 – M-N ilişki örneği
Dönüştürme algoritması aşağıdaki ilişkisel şemaları verir.
Çalışan
çno çisim yaş Çalıştığı
çno bno zaman Bölüm
bno bisim
SQL’de sadece ÇALIŞTIĞI ilişkisinin yaratılmasını sunalım. Diğer şemaların SQL ile gösterimi benzer şekilde yapılabilir.
CREATE TABLE Çalıştığı
(çno CHAR(12),
bno INTEGER,
zaman DATE,
PRIMARY KEY (çno, bno),
FOREIGN KEY (çno) REFERENCES Çalışan,
FOREIGN KEY (dno) REFERENCES Bölüm)Hatırlanabileceği gibi zayıf nesne (weak entity) sahip (owner) nesnenin birincil anahtarı kullanılarak tanına bilinmekteydi. Sahip nesne ile zayıf nesne 1-n (bir-çok) ilişki kümesi ile ilişkilendirilirler (bir sahip nesne, çok zayıf nesneler). Ayrıca zayıf nesne kümesi toplam katılım kısıtı ile tanımlayıcı ilişki kümesinde yer alır.
Örnek-3
ŞEKİL 7.3 – Zayıf nesne örneği
Zayıf nesne kümesi ile tanımlayıcı ilişki kümesi bir tek tabloya dönüşür. Her ne zaman sahip nesne silinirse, bütün sahip olduğu zayıf nesneler de silinmek durumundadır.
SQL’de şu şekilde sunulur:
CREATE TABLE Bağımlısı
(bisim CHAR(30),
yaş İNTEGER,
çno CHAR(12) NOT NULL,
PRIMARY KEY (bismi, çno),
FOREIGN KEY (çno) REFERENCES Çalışan,
ON DELETE CASCADE)
Çalışan
çno çisim yaş Bağımlısı
çno bisim yaş