İngilizce adıyla “Entity Relationship Diagram“(ERD), Türkçe adıyla “Varlık İlişki Diyagramı” olarak kısaltmanın açılımını açıklayabiliriz. Varlık ilişki diyagramı, veritabanında bulunan tabloların birbirleri ile ilişkilerini gösterir.
Nedir bu Varlık?
Varlık dediğimiz şey aslında veritabanımızdaki her bir tablodur. Bu tablolar arasında ilişkiyi ifade etmeye de ERD diyoruz.
Bu tabloları yazılımlarımızda nesne olarak ifade ediyoruz. Nesne kavramına hakim değilseniz araştırmanızı öneririm. Örneğin ‘C# nesne nedir’ şeklinde arama yaparak inceleyebilirsiniz.
Aşağıda küçük bir örnek vereceğim.
Örneğin :
class Ogrenci{ }
1
2
3
4
5
6
7
class Ogrenci{
}
Şu anda basitçe Ogrenci adında bir nesne oluşturdum. Bu nesneyi kullanabilmek için new’lemek gerekiyor ancak şu anda basit olarak varlığı açıklamaya çalışıyoruz.
Sınıflara özellik ekleyerek o nesneyi işlevsel hale getiriyoruz. Burada varlığın özelliklerini tanımlayan bilgiler olabilir.(OgrenciNo, OgrenciAdi gibi…)
public class Ogrenci{ public int OgrenciNo {get; set;} public string OgrenciAdi {get; set;} }
1
2
3
4
5
6
7
8
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ını gösterir.
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. Bunları 4 grupta inceleyebiliriz:
One to one (Bire bir ilişkiler)
One to many (Bire çok ilişkiler)
Many to one (Çoka bir ilişkiler)
Many to many (Çoka çok ilişkiler)
*Çoka bir veya çoka çok için sadece yönleri değişiyor.
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.
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. Gelin daha iyi anlamak için diğer tablolar arasındaki ilişkilere bakalım.
PK : Primary Key (Birincil Anahtar)
FK : Foreign Key
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 ne oldu? 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.
Yukarıda One to Many(Bire Çok) ve Many to One(Çoka Bir) ilişkilerinin nasıl olduğunu örneklerle beraber gördük. Diğer ilişkiler için de aynı soruyu sorarak, başka örneklerdeki tablolar arasındaki ilişkileri belirleyebilirsiniz.
Ö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.
Faydalandığım kaynaklar:
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
Paylaşmak istersen?
Bu Yazının Görüntülenme Sayısı: 15.087
Posted in VeritabanıTagged attribute, cardinality, connecting lines, derived attribute, entity, entity relationship diagram, er diagram, ilişki, kardinalite, konu anlatım, multivalued attribute, özellik, relationship, sayısallık, varlık ilişkisi diyagramı, veritabanı, weak entitycommentERD (Varlık İlişki Diyagramı) Nedir? için 2 yorum	
Author: Serdar Sarı
Ben İ. Serdar Sarı. Balıkesir Üniversitesi, Bilgisayar Mühendisliği bölümünden Temmuz 2021 tarihinde mezun oldum. Vaktim oldukça, bu blogda C#, Python veya diğer programlama dilleri ile ilgili bildiğim ve yeni öğrendiğim bilgileri diğer yazılıma hevesli arkadaşlara paylaşmayı ve yeri geldiğinde sizden öğrenmeyi, aynı zamanda Teknoloji ile ilgili haber ve paylaşımlar da yapmayı planlıyorum.	View all posts by Serdar Sarı	
Yazı dolaşımı
String Sınıfı ve String Metotları C#
Windows’a Kendi Git Servisinizi Kurun Detaylı Anlatım (Türkçe)
2 Replies to “ERD (Varlık İlişki Diyagramı) Nedir?”	
Faruk İpek dedi ki:	
2 Aralık 2020, 00:36
Güzel kaynak oldu benim için. Teşekkürler.	
Cevapla
Fatih dedi ki:	
8 Mart 2021, 02:24
Cok faydali
Tesekkürler	
Cevapla
Bir cevap yazın Cevabı iptal et
E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir
Yorum
İsim *
E-posta *
İnternet sitesi
Bir dahaki sefere yorum yaptığımda kullanılmak üzere adımı, e-posta adresimi ve web site adresimi bu tarayıcıya kaydet.