25  Mermaid ER Diyagramları

ER modelleme için mermaid Entity Relationship Diagram kullanacağız. Çünkü mermaid’in markdown sözdizimi daha kolay anlaşılmaktadır. Ayrıca markdown düz metin olarak git gibi kaynak kontrol araçlarıyla sürüm kontrolü yapılabilir. Ek olarak mermaid diyagramları github, gitlab ve azure devops gibi kaynak kontrol araçlarının web sürümleri tarafından otomatik olarak gösterilir.

25.1 Varlık (Entity)

Varlıklar diyagramlardaki en temel kısımdır. Normalde veritabanı tablolarına karşılık gelirler. Ayrıca diyagramda niteliklerini veya sütunlarını da verebiliriz. Aşağıdaki örneğe bakınız.

erDiagram
    Ogrenci {
        int ogrenci_id PK
        string adi
    }

erDiagram
    Ogrenci {
        int ogrenci_id PK
        string adi
    }

25.2 Varlık İlişkileri

Varlıkların ilişkileri olmalıdır. Diğer varlıklarla etkileşimleri bu şekildedir. Bunun sözdizimi aşağıdadır:

<birinci-varlık> [<ilişki> <ikinci-varlık> : <ilişki-etiketi>]

İlişki etiketi, gereksinimlerde veya sahada nasıl çalıştığını göstermelidir. Lütfen buna göre seçmeye çalışın.

Bir öğrencinin birçok derse kaydolduğu bir örnek. Bunu aşağıdaki gibi yazabiliriz.

erDiagram
    Ogrenci ||--o{ Ders : "kayıt_olur"

erDiagram
    Ogrenci ||--o{ Ders : "kayıt_olur"

Bu sözdiziminde, aşağıdaki tablo varlıkların kardinalitesini nasıl modelleyebileceğimizi göstermektedir. Bu, varlıklar arasında 0,1 veya çok olduğu bilgisidir.

Değer (Sol) Değer (Sağ) Anlamı
|o o| Sıfır veya bir
|| || Tam olarak bir
}o o{ Sıfır veya çok (Üst limit yok)
}| |{ One veya çok (Üst limit yok)

Bu bilgiyi şu şekilde okuyabiliriz:

  • Öğrencinin sıfırdan bire kadar danışmanı var
  • Öğrencinin tam olarak bir danışmanı var
  • Öğrenci 0’dan çoka kadar derse kaydoluyor
  • Öğrenci 1’den çoka kadar derse kaydoluyor

25.3 Tam Örnek 1

erDiagram
    Ogrenci ||--o{ Kurs : "kayıt_olur"
    Kurs ||--|{ Ders : "içerir"
    Ogretmen ||--o{ Kurs : "Ögretir"
    Ogretmen ||--o{ Ders : verir
    Ogrenci ||--o{ Ders : "katılır"


    Ogrenci {
        int id PK
        string adi
        date olusturuldugu_tarih
        date guncellendigi_tarih
    }
    Kurs {
        int id PK
        string baslik
        string tanim
        date olusturuldugu_tarih
        date guncellendigi_tarih
    }
    Ders {
        int id PK
        int Kurs_id FK
        string baslik
        date planlanan_tarih
        date olusturuldugu_tarih
        date guncellendigi_tarih
    }
    Ogretmen {
        int id PK
        string adi
        string eposta
        date olusturuldugu_tarih
        date guncellendigi_tarih
    }

erDiagram
    Ogrenci ||--o{ Kurs : "kayıt_olur"
    Kurs ||--|{ Ders : "içerir"
    Ogretmen ||--o{ Kurs : "Ögretir"
    Ogretmen ||--o{ Ders : verir
    Ogrenci ||--o{ Ders : "katılır"


    Ogrenci {
        int id PK
        string adi
        date olusturuldugu_tarih
        date guncellendigi_tarih
    }
    Kurs {
        int id PK
        string baslik
        string tanim
        date olusturuldugu_tarih
        date guncellendigi_tarih
    }
    Ders {
        int id PK
        int Kurs_id FK
        string baslik
        date planlanan_tarih
        date olusturuldugu_tarih
        date guncellendigi_tarih
    }
    Ogretmen {
        int id PK
        string adi
        string eposta
        date olusturuldugu_tarih
        date guncellendigi_tarih
    }

25.4 ER diyagramları oluşturmak için LLM’leri kullanın

Mermaid normal bir markdown kodu olduğundan taslak diyagramlarımızı oluşturmak için ChatGPT, Gemini veya Perplexity gibi LLM’leri kullanabiliriz.

Aşağıdaki AI istemi (prompt), başlamak için taslak bir mermaid diyagramı oluşturur.

Lütfen bana öğrencileri, kursları, dersleri ve öğretmenleri gösteren basit bir mermaid entity relationship diyagramı oluşturun. Tüm varlıkların ortak sütunları olmalıdır.

Sonucu görmek için AI araçlarında deneyin.