Faculty of Engineering and Architecture Computer Engineering Department DATABASE MANAGEMENT SYSTEMS LAB 2 WORKSHEET LOGICAL SCHEMA ER-to-Relational Mapping Algorithm Bir ER diyagramına uygun olan veritabanı tablolar şeklinde gösterilebilir. Her bir entity ve ilişki seti için, onların adına düzenlenmiş farklı bir tablo bulunur. Her tablo birbirinden farklı sütun isimleri(özellikler)ne sahiptir. Bir ER diyagramını tablolara çevirmek, ilişkisel bir veritabanı oluşturmanın temelidir. Bileşik özellikler kendilerini oluşturan basit özelliklerden sütun oluşturularak çevrilebilir. Ör. İsim özelliği, önisim ve soyisim olmak üzere iki ayrı özellik şeklinde sütunlara dönüşür. Adım 1 : ER diyagramda çizdiğin tüm regular (strong) entityler için bir tane tablo oluştur. Her entity nin simple attribute ünü de tabloya sütun olarak ekle. Composite attributelerin her bir simple attribute ünü de sütün olarak ekle. Entity de key olarak belirtilen attributelerden bir tanesini tablomuz için primary key olarak seç. Eğer entity nin seçilen key i composite bir attribute ise o zaman tabloda bulunan basit sutünlar hep birlikte bir primary key i oluşturacaktır. Adım 2 : ER diyagramdaki her weak entity type W için bir R relation oluştur. Tüm simple attributeleri sütun yap. Composite attributelerin de simple attributelerini tabloya sütun olarak yerleştir. Weak entity type ın sahibi entity nin primary key ini sütuna ekle. Wean entity type ın partial key i ile birlikte owner entity nin primary keyi bu tablo için primary key olacak.
Adım 3 : ER diyagramdaki her bir 1 : 1 R ilişki tipi için R ilişkisine katılan entityler için S ve T tabloları tanımla. Üç yaklaşım mevcut : 1) Foregin Key Yaklaşımı (En kullanışlı olan) 2) Merged Relation yaklaşımı 3) Cross reference ya da relationship relation yaklaşımı Foreign Key yaklaşımı : S ya da T tablosundan birini seç. Örneğin S yi seçelim. T nin primary key ini S tablosuna foreign key olarak yerleştirelim. Eğer entitylerden ilişkiye total katılan varsa ona foreign key i koymak daha mantıklıdır. Böylelikle NULL değerlerden kaçınmış oluruz. Örneğin departman ve employee arasında 1:1 lik yönetme işi mevcut. Departman ilişkiye total olarak katılır. Eğer departmanın primary key ini Employee e foreign key yaparsak : Herkes departman yönetmediği için bir çok gereksiz NUL değerine sahip olacağız. Oysa ki Departman tablosuna Employee primary key i foreign key olarak konulsa bu sıkıntı ortadan kalkacaktır. İlişkinin attribute ü de aynı tabloya sütun olarak eklenir. Adım 4 : 1 : N ilişkisinde N tarafındaki entity için bir S tablosu oluştur. S de ilişkinin 1 kısmını oluşturan T tablosunun primary key i foreign key olarak bulunsun. Çünkü N tarafındaki diğer tablo ile en fazla bir kere ilişkilidir. Gereksiz satırlardan kurtulmak için doğru dönüştürme yapmaya çalışıyoruz. Bizim örneğimizde 3 tane 1:N ilişki var. 1. EMPLOYEE : EMPLOYEE, 2. DEPARTMENT : EMPLOYEE, 3. DEPARTMENT : PROJECT. 1.için Super_ssn adlı bir foreign key ekliyoruz. Employee nin supervisior ının primary key ine reference edecek.
2.için N kısmı yine Employee olduğu için çalışanın çalıştığı departmanı gösteren departman numarasını ekliyoruz. 3.için N kısmında olan Project e Dnum adlı foreign key eklenmiştir. Adım 5 : ER diyagramdaki her M:N ilişkisi için ilişkiyi gösteren bir tablo oluştur. İlişkiye katılan iki entity nin de keyleri bu tabloda yer alacak ve birlikte primary keyi oluşturacaktır. İlişkide bulunan attributeler sütun olarak eklenecektir. Burada iki tane attribute ile primary key oluşturuyoruz. Sadece bir tane attribute ten oluşamazdı primary key. Çünkü o zaman Essn ya da Pno tek başına kayıtlara uniquelik kazandıramayacaktı. Adım 6 : Her multivalued attribute A için bir tablo oluştur. A ile ilgili tüm attributeleri sütun olarak içerecektir. Bunun yanında tablonun primary key i olan K yı ve foreign key olarak da multivalued attribute e sahip tablonun primary key ini içerecektir. Eğer multivalued attribute aynı zamanda composite bir attribute ise simple attributelerini de tabloya sütun olarak ekleyeceğiz. Adım 7 : n ary bir ilişkide (n>2 olmak üzere) ilişki R yi gösterebilmek için bir S tablosu oluşturulur. Bu tablo foreign key olarak ilişkiye katılan entitylerin primary keylerini içerecektir. Aynı zamanda ilişkinin basit attributeleri varsa composite attributelerin simple attributelerini de sütun olarak içerecektir. Bu yeni tablonun primary key i de ilişkiye katılan entityleri referans eden foreign keylerin kombinasyonudur. Adım 8 : Class hiyerarşisini çevirmede 3 seçenek mevcuttur. Seçenek 8A : Superclass ve her bir subclass için tablo oluşturulur. Superclass ın primary key i subclasslarda da primary keydir. Bu seçenek her durumda çalışır.
Seçenek 8B: Sadece her bir subclass için ayrı tablo yapılır. Her bir tablo hem kendi attributelerini hem de superclass ının attributelerini içerecek. Primary key süper class ın primary key i olacak. Bu seçenek total katılımlı disjoint kalıtımda önerilir. Aksi takdirde tekrar eden kayıtlar olacaktır.
Seçenek 8C: Superclass ve tüm subclasslar attributeleri ile birlikte tek bir tabloda toplanırlar. Sadece disjointte çalışır. Subclasslar da çok fazla sayıda spesifik attributeler var ise çok sayıda NULL değer içerilmesine sebep olur. Seçenek 8D: Bu seçenekde de süper klass ve sub classlar tek bir tabloda. Tüm attributeler de burada. Bir tane boolean flag sütunu mevcut. O kaydın S i subclassına ait olup olmadığını gösteriyor. Overlapping özelliği bulunan subclasslarda kullanılır. Disjointde de çalışır.