Panduan Sintaks Diagram Hubungan Entitas PlantUML

Apa itu Diagram Hubungan Entitas (ERD)?

Sebuah Diagram Hubungan Entitas (ERD) adalah kerangka struktural yang digunakan untuk merancang, mendokumentasikan, dan menganalisis basis data relasional. Ini memvisualisasikan tabel (entitas) dalam suatu sistem, kolom-kolom tertentu (atribut) yang dimilikinya, dan bagaimana tabel-tabel tersebut saling terhubung. Dalam PlantUML, ERD dibuat menggunakan notasi Teknik Informasi (IE), yang menerapkan standar notasi kaki burung untuk mewakili batasan relasional.

Apakah Anda sedang merancang penyimpanan data mikroservis, mengoptimalkan jalur join SQL, atau memetakan arsitektur gudang data skala perusahaan, ERD UML berbasis teks memastikan skema basis data Anda sangat jelas. Dengan VPasCode, Anda dapat mendefinisikan tabel basis data, kunci indeks, dan hubungan logis menggunakan sintaks yang bersih dan deklaratif. Mesin secara otomatis menangani ukuran kotak tabel dan mengarahkan string koneksi kunci asing Anda tanpa garis tata letak yang tumpang tindih.

Panduan Sintaks Inti: Elemen dan Konstruksi

Membangun ERD gaya IE yang kuat di PlantUML bergantung pada blok entitas yang terstruktur, penunjukan kunci yang eksplisit, dan modifikasi kardinalitas kaki burung.

1. Deklarasi Entitas (Tabel Basis Data)

Anda mendeklarasikan tabel basis data menggunakan entitykata kunci, diikuti oleh nama tabel dan sepasang kurung kurawal. Di dalam kurung kurawal, Anda daftarkan kolom tabel Anda. Untuk membuat skema Anda bersih dan mudah dibaca, gunakan pemisah garis horizontal (--) untuk memisahkan kunci primer/kunci asing dari atribut data standar:

entity "users" as users_table {
    id : INT [PK]
    --
    email : VARCHAR(255)
    created_at : TIMESTAMP
}

2. Menetapkan Kunci Primer dan Kunci Asing

Meskipun indikator teks seperti `[PK]` atau `[FK]` berfungsi dengan baik, mesin IE PlantUML juga mendukung ikon kunci visual. Menempatkan tanda bintang (*) sebelum suatu atribut menandakan bahwa kolom tersebut adalah **wajib (tidak boleh kosong)**, sementara string teks bersih atau tag menambahkan konteks indeks yang eksplisit:

entitas "orders" {
    * id : INT <<PK>>
    --
    * user_id : INT <<FK>>
    kode_diskon : VARCHAR(50)
}

3. Pemetaan Kardinalitas dan Hubungan Crow’s Foot

Untuk menghubungkan tabel dan menerapkan batasan integritas referensial, gunakan kombinasi tanda hubung, kurung, dan karakter pipa. Dalam notasi IE, simbol-simbol ini membentuk kepala **crow’s foot** yang berbeda yang mewakili hubungan basis data:

  • ||--|| **Tepat Satu ke Tepat Satu:** Pemetaan satu-ke-satu yang ketat dan wajib.
  • ||--o| **Tepat Satu ke Nol atau Satu:** Pemetaan satu-ke-satu opsional.
  • ||--|{ **Tepat Satu ke Satu atau Banyak:** Ketergantungan satu-ke-banyak yang wajib.
  • ||--o{ **Tepat Satu ke Nol, Satu, atau Banyak:** Hubungan satu-ke-banyak standar yang opsional.

Praktik Terbaik untuk Skema Basis Data yang Bersih

  • Jaga Konvensi Penulisan Huruf Besar/Kecil: Pertahankan deklarasi entitas Anda agar dapat diprediksi. Gunakan snake_case huruf kecil (misalnya, order_items) untuk tabel yang dipetakan secara SQL, atau gunakan CamelCase huruf besar untuk model domain konseptual.
  • Selalu Dokumentasikan Kunci Asing: Saat menghubungkan dua tabel, selalu tentukan kolom kunci asing di dalam blok tabel anak. Ini memberikan konteks referensi yang jelas bagi tim rekayasa selama migrasi data.
  • Atur Jarak Crow’s Foot: Skema basis data yang kompleks dengan puluhan tabel dapat dengan cepat menjadi padat. Jika garis hubungan Anda mulai saling bersilangan secara tidak wajar, ganti penghubung tanda hubung ganda (--) dengan tiga atau empat tanda hubung (---) untuk menjauhkan tabel-tabel dan memberi mesin tata letak ruang lebih banyak untuk mengatur grid.

Contoh ERD PlantUML Dunia Nyata

Contoh 1: Model Relasional E-Commerce Inti (Kunci & Pemetaan)

Rancangan fungsional ini memodelkan putaran transaksi basis data e-commerce inti, menunjukkan bagaimana pengguna, pesanan, dan catatan pembayaran terhubung satu sama lain menggunakan hubungan crow’s foot yang ketat.

@startuml
' Membekukan rendering kotak entitas menjadi persegi modern yang tajam
hide circle
skinparam LINETYPE ortho

entity "pengguna" as user {
    * id : INT <<PK>>
    --
    * email : VARCHAR(100)
    * password_hash : VARCHAR(255)
    phone : VARCHAR(20)
}

entity "pesanan" as order {
    * id : INT <<PK>>
    --
    * user_id : INT <<FK>>
    * total_amount : DECIMAL(10,2)
    status : VARCHAR(50)
}

entity "catatan pembayaran" as ledger {
    * id : INT <<PK>>
    --
    * order_id : INT <<FK>>
    * referensi transaksi : VARCHAR(100)
    gateway : VARCHAR(50)
}

' Menentukan ikatan skema relasional
user ||--o{ order : "menempatkan"
order ||--|| ledger : "menghasilkan"
@enduml

Analisis Sintaks: Petunjuk hide circle menonaktifkan gelembung token kelas UML bawaan, sementara skinparam LINETYPE ortho memaksa jalur hubungan menjadi sudut siku-siku 90 derajat yang bersih. Skema ini dengan jelas menunjukkan bahwa seorang pengguna dapat menempatkan nol atau banyak pesanan (||--o{), sementara pesanan harus memiliki tepat satu catatan pembayaran yang terkait (||--||).

Contoh 2: Skema Sistem Manajemen Konten Lanjutan (Interseksi Banyak-ke-Banyak)

Rancangan perusahaan lanjutan ini memetakan topologi sistem manajemen konten (CMS) secara lengkap. Ini menunjukkan cara menangani arsitektur banyak-ke-banyak secara bersih dengan memanfaatkan tabel pemetaan antara.

@startuml
hide circle
skinparam LINETYPE ortho

entity "posting" as post {
    * id : INT <<PK>>
    --
    * author_id : INT <<FK>>
    * title : VARCHAR(255)
    slug : VARCHAR(255)
    body : TEXT
}

entity "kategori" as category {
    * id : INT <<PK>>
    --
    * name : VARCHAR(100)
    description : VARCHAR(255)
}

entity "pemetaan_post_kategori" as mapping {
    * post_id : INT <<PK>><<FK>>
    * category_id : INT <<PK>><<FK>>
    --
    assigned_at : TIMESTAMP
}

entity "komentar" as comment {
    * id : INT <<PK>>
    --
    * post_id : INT <<FK>>
    author_name : VARCHAR(100)
    * content : TEXT
}

' Struktur tautan relasional
post ||--o{ mapping : "berisi"
category ||--o{ mapping : "mengkategorikan"
post ||--o{ comment : "melampirkan"
@enduml

Analisis Sintaks: Templat ini memodelkan hubungan banyak-ke-banyak klasik antara posting dan kategori. Alih-alih menghubungkannya secara langsung, ia memperkenalkan tabel antara (pemetaan_post_kategori) di mana kedua kolom berfungsi sebagai kunci utama komposit. Indikator crow’s foot secara eksplisit memetakan hubungan yang menyebar hingga ke lapisan komentar.

Scroll to Top