Selam!
Bu yazımızda ER Diyagram (ERD)’ın ne olduğu, nasıl oluşturulduğu gibi konulara göz atacağız.
ER Diyagram Nedir?
“Entity Relationship Diagram“(ERD)’yi, “Varlık İlişki Diyagramı” olarak çevirebiliriz. Varlık ilişki diyagramı, veritabanında bulunan tabloların birbirleri ile ilişkilerini gösterir.
Varlık (Entity) Nedir?
Varlık dediğimiz şey aslında veritabanımızdaki her bir tabloyu temsil eder. Bu tablolar arasındaki ilişkiyi ifade etmeye de ERD diyebiliriz.
Bu tabloları uygulama yazılımlarında nesne olarak ifade edebiliriz. (Nesne, sınıf kavramları hakkında bilginiz olmalı)
Aşağıda küçük bir sınıf örneği verelim.
Örneğin :
class Ogrenci{
}
Şu anda basitçe Ogrenci adında bir sınıf oluşturduk. Bu sınıfı kullanabilmek için new keyword’ünü kullanarak bir instance oluşturmamız gerekiyor ancak şu anda basit olarak varlığı açıklamaya çalışıyoruz. Bu yüzden yazdığımız sınıfı kullanma gibi aşamalara girmeyeceğiz.
Sınıflara özellik ekleyerek o sınıfı işlevsel hale getirebiliyoruz. Burada sınıfın özelliklerini tanımlayan bilgiler olabilir. (OgrenciNo, OgrenciAdi gibi. Daha fazla ekleme yapılabilir tabii ki)
public class Ogrenci{
public int OgrenciNo {get; set;}
public string OgrenciAdi {get; set;}
}
Varlıkların özelliklerini tanımlayarak ve aralarındaki ilişkileri göstererek bir ER diyagramı oluşturmak, veritabanlarının mantıksal yapısı hakkında bilgi sahibi olmamızı sağlar.
ERD Neden Kullanılır?
Veritabanı diyagramı oluşturmanın aslında iki nedeni vardır. Yeni bir şema tasarlamak istiyor olabilir ya da mevcut şema yapınızı anlaşılabilir halde göstermek istiyor olabilirsiniz. Bu iki durumdan herhangi birindeyseniz ER Diagram oluşturmak isteyebilirsiniz.
Yaygın ERD Sembolleri
Bir Varlık İlişki Diyagram’ın ana bileşenlerini inceleyelim. Açıklamalarda kafanız karışabilir ama merak etmeyin aşağıda bir örnek üzerinde hepsini kullanacağız.
1. Entity (Varlık) : Hakkında bilgi depolamak istediğimiz bir nesne olarak düşünebiliriz.
Örneğin yukarıda oluşturduğumuz Ogrenci varlığı(nesnesi) hakkında adı, soyadı, doğum yeri gibi bilgileri depolamak istiyor olabiliriz.
Dikdörtgen kullanılarak temsil ediliyor.
Weak Entity (Zayıf Varlık) : Zayıf bir varlık, yalnızca kendi özellikleri ile benzersiz bir şekilde tanımlanamayacağı için başka bir varlığa Foreign Key ilişkisi ile tanımlanması gereken bir varlıktır. Yani kısaca, zayıf varlığın Primary Key’i yoktur. bu yüzden zayıf varlık olarak adlandırıyoruz.
2. Action (Eylem) : İki varlığın veritabanında nasıl bilgi paylaştığını gösterir. Aşağıda göreceğiniz üzere eşkenar dörtgene benzer bir şekil ile temsil ediliyor.
3. Attribute (Özellik) : Varlıkların özelliklerini gösterir. “Key Attribute” dediğimiz özelliğin altı çizili olanı ile Primary Key özelliği gösteriyoruz.(örn. OgrenciNo)
Elips ile temsil ediliyor.
Multivalued Attribute : Türkçe’ye “Birden Fazla Değerli Özellik” olarak çevirebiliriz. Adından da anlaşılacağı üzere bu özellikler birden fazla değer alabilir. Örneğin bir öğretmenin birden fazla telefon numarası olabilir. (örn. Sabit telefon, cep telefonu)
Derived Attribute (Türetilmiş Özellik): Bu özellikler başka bir özelliğe dayanır. Örneğin bir öğrencinin bilgilerini tuttuğumuz tabloda Doğum Günü bilgisini tutuyoruz, buna ek olarak birde Yaşını tutuyoruz diyelim. İşte burada yaş bilgisi Türetilmiş Özellik oluyor. Yani aslında biz doğum tarihini kullanarak öğrencinin yaşını bulabiliriz. Ama bazı durumlarda erişmek istediğimizde hızlıca erişebilmek için türetilmiş özelliği kullanabiliyoruz.
4. Cardinality (Sayısallık): Sayısallık, bir varlığın kaç örneğinin başka bir varlığın bir örneğiyle ilişkili olduğunu belirtir.
*Yukarıdakilere ek olarak bir de Many to Many (Çoka çok) ilişki var. Bunu başka bir yazıda tek bir konu başlığı olarak ele alacağız.
Bunları daha iyi ve anlaşılır olarak açıklayabilmek için tablolar şeklinde inceleyelim.
İlişkileri nasıl belirleyebiliriz?
Aşağıdaki basit şema, bir üniversite öğrencisinin ders kaydını gösteriyor.
Bire Çok İlişki
Ogrenci tablosu ile Kayit tablosu arasındaki ilişkinin neden Bire Çok olduğuna beraber bakalım.
Bir öğrenci birden fazla derse kayıt olabilir mi? Tabii ki olabilir. Bu yüzden Ogrenci tablosu ile Kayit tablosu arasındaki sayısallık ilişkisinin “Bire Çok” olduğunu söyleyebiliriz. Daha iyi anlamak için diğer tablolar arasındaki ilişkilere bakalım.
Aynı şekilde Kayit ile Ders tabloları arasındaki sayısallık ilişkisine bakarsak, bir ders birden fazla kez kayıt edilebilir. Örnek vermek gerekirse, Fizik dersini düşünelim. Bilgisayar Mühendisliğinden bir öğrenci de Fizik dersine kayıt olabilir, Makine Mühendisliğinden başka bir öğrenci de aynı hocanın Fizik dersine kayıt olabilir. Bu durumda bir ders, birden fazla kez kayıt tablosuna farklı öğrenciler tarafından eklenmiş oldu.
Daha açık bir şekilde bakmak gerekirse, Kayit tablosundaki verilere baktığımızda, aynı OgrenciNo’ya ait birden çok veri görebiliriz(Aynı öğrenci birden fazla farklı derse kayıt olabilir). Aynı şekilde aynı DersId’ye ait birden çok veri görebiliriz(Farklı öğrenciler aynı derse kayıt olabilir).
Sonuç olarak Ogrenci ile Kayit tablosu arasında ve Ders ile Kayit tablosu arasında “Bire Çok” ilişki olduğunu görüyoruz.
Son olarak Bolum ve Ders tablosu arasındaki ilişkiye bakacak olursak, bir bölümde birden fazla ders olabilir. Örneğin, Bilgisayar Mühendisliği bölümünde Nesneye Yönelik Programlama, Algoritma Analizi, Web Tasarım gibi dersler olabilir. Sonuç olarak Bolum tablosu ile Ders tablosu arasındaki sayısallık ilişkisinin de “Bire Çok” olduğunu görüyoruz.
Çoka Çok (Many to Many) İlişki
Normalde örneğimizde Çoka Çok (Many to Many) ilişki bulunmuyor. Bire çok ilişkiye göre biraz daha karmaşık olduğu için bir başka yazıda many to many ilişkiyi daha detaylı inceleyeceğiz.
Yukarıda One to Many(Bire Çok) ilişkisinin nasıl olduğunu örneklerle beraber gördük. Diğer ilişkiler için de benzer soruları sorarak, başka örneklerdeki tablolar arasındaki ilişkileri belirleyebiliriz.
Örneklediğimiz ERD :
Sayısallık Gösterim Stilleri
Cardinality(Sayısallık) gösterimi farklı kaynaklarda ve videolarda farklı şekillerde gösterilebiliyor. Aslında hepsi benzer şeyleri ifade etse de bazen kafa karışıklığına yol açabiliyor. Sık kullanılan gösterim stillerine kısaca göz atalım. Biz Information Engineering Style’ı kullandık. Diğerlerinin detaylarına bu yazıda çok girmeyeceğim sadece gördüğünüzde kafa karışıklığını önlemek için hangi gösterimin adının ne olduğu hakkında bilginiz olması için adlarını ve birer görsellerini inceleyelim. Bizim kullandığımızın dışındaki gösterimlerin detaylıca araştırmasını internette yapabilirsiniz.
INFORMATION ENGINEERING STYLE :
CHEN STYLE :
BACHMAN STYLE :
Kendi Varlık İlişki Diyagramı‘nızı çizmek istiyorsanız, internette bunu yapabileceğiniz web sayfaları mevcut. Ancak buraya tıklayarak bu yazıda kullandığım sayfaya ulaşabilirsiniz.
Umarım faydalı bir yazı olmuştur. Yanlış olduğunu düşündüğünüz veya aklınıza takılan bir kısım olursa yorumlarda berlirtebilir veya mail ile iletişime geçebilirsiniz.
Herkese iyi çalışmalar dilerim.
resources:
https://www.smartdraw.com/entity-relationship-diagram/
Bir sonraki yazı olan “Windows’a Kendi Git Servisinizi Kurun” yazısına gitmek için TIKLAYIN.
Göz atmak istersen :
SÜPER MARKET OTOMASYONU
ÖĞRENCİ OTOMASYONU
PYTHON İLE 2.DERECEDEN DENKLEM KÖKÜ BULAN KOD
Güzel kaynak oldu benim için. Teşekkürler.
Cok faydali
Tesekkürler