Desain Database Lebih Mudah di Visual Studio Code dengan DBML Previewer

By Rizky Kurniawan - August 21, 2025 ~8 mins read

ruangdeveloper.com - Halo Talenta Digital! Pernahkah kalian merasa kesulitan saat harus mendesain struktur database yang kompleks? Atau mungkin bingung memvisualisasikan relasi antar tabel ketika membuat dokumentasi database? Nah, kali ini saya akan membahas solusi yang bisa memudahkan pekerjaan tersebut, yaitu menggunakan DBML (Database Markup Language) dan ekstensi Visual Studio Code yang saya kembangkan bernama DBML Previewer.

Sebagai seorang developer, saya sering menghadapi tantangan dalam mendesain dan mendokumentasikan struktur database, terutama ketika bekerja dalam tim atau mengembangkan sistem yang kompleks. Dari pengalaman itulah lahir ide untuk membuat ekstensi yang dapat memvisualisasikan struktur database dengan mudah dan interaktif langsung dari dalam VSCode.

Apa itu DBML (Database Markup Language)?

DBML atau Database Markup Language adalah bahasa markup berbasis teks yang dirancang khusus untuk mendefinisikan dan mendeskripsikan struktur database. Dikembangkan oleh tim dbdiagram.io, DBML memberikan cara yang sederhana dan intuitif untuk menggambarkan skema database menggunakan sintaks yang mudah dibaca dan dipahami.

Mengapa DBML Penting?

Dalam pengembangan aplikasi modern, database menjadi fondasi yang sangat krusial. Namun, mengelola dan mendokumentasikan struktur database yang kompleks seringkali menjadi tantangan tersendiri. Berikut adalah beberapa alasan mengapa DBML menjadi solusi yang tepat:

1. Readability dan Simplicity

DBML menggunakan sintaks yang sangat mudah dibaca, bahkan untuk developer yang baru pertama kali melihatnya. Tidak seperti SQL DDL yang bisa terlihat verbose dan rumit, DBML fokus pada kesederhanaan tanpa mengurangi fungsionalitas.

2. Version Control Friendly

Karena DBML adalah file teks biasa, ia sangat cocok untuk disimpan dalam sistem version control seperti Git. Ini memungkinkan tim untuk melacak perubahan struktur database dari waktu ke waktu, melakukan code review terhadap perubahan skema, dan berkolaborasi dengan lebih efektif.

3. Platform Agnostic

DBML tidak terikat pada database engine tertentu. Kamu bisa menggunakan DBML untuk mendesain skema yang nantinya bisa diimplementasikan di MySQL, PostgreSQL, SQL Server, atau database lainnya.

4. Documentation as Code

Dengan DBML, dokumentasi database menjadi bagian dari kode itu sendiri. Ini memastikan dokumentasi selalu up-to-date dengan implementasi aktual dan mengurangi risiko inkonsistensi.

Sintaks Dasar DBML

Mari kita lihat contoh sintaks DBML untuk memahami bagaimana bahasa ini bekerja:

// Mendefinisikan tabel
Table users {
  id bigint [primary key, increment]
  username varchar(50) [unique, not null]
  email varchar(100) [unique, not null]
  password varchar(255) [not null]
  created_at timestamp [default: `now()`]
  updated_at timestamp [default: `now()`]

  Note: 'Tabel untuk menyimpan data pengguna aplikasi'
}

Table posts {
  id bigint [primary key, increment]
  title varchar(200) [not null]
  slug varchar(200) [unique, not null]
  content text
  author_id bigint [not null]
  published_at timestamp
  created_at timestamp [default: `now()`]
  updated_at timestamp [default: `now()`]

  Note: 'Tabel untuk menyimpan artikel/postingan'
}

Table categories {
  id bigint [primary key, increment]
  name varchar(100) [unique, not null]
  slug varchar(100) [unique, not null]
  description text
  created_at timestamp [default: `now()`]
}

// Mendefinisikan relasi
Ref: posts.author_id > users.id [delete: cascade]
Ref: post_categories.post_id > posts.id [delete: cascade]
Ref: post_categories.category_id > categories.id [delete: cascade]

// Tabel junction untuk many-to-many relationship
Table post_categories {
  post_id bigint [not null]
  category_id bigint [not null]

  indexes {
    (post_id, category_id) [primary key]
  }
}

Dari contoh di atas, kita bisa melihat betapa sederhana dan mudah dibacanya sintaks DBML. Setiap elemen memiliki makna yang jelas:

  • Table: Mendefinisikan struktur tabel
  • Kolom: Ditulis dengan format nama_kolom tipe_data [atribut]
  • Atribut: Seperti primary key, unique, not null, default
  • Ref: Mendefinisikan foreign key relationship
  • Note: Menambahkan dokumentasi untuk tabel atau kolom

Fitur-Fitur DBML yang Powerful

1. Tipe Data yang Komprehensif

DBML mendukung berbagai tipe data yang umum digunakan dalam database:

Table data_types_example {
  // Numeric types
  small_int smallint
  integer_col integer
  big_int_col bigint
  decimal_col decimal(10,2)
  float_col float
  double_col double

  // String types
  char_col char(10)
  varchar_col varchar(255)
  text_col text

  // Date and time
  date_col date
  time_col time
  timestamp_col timestamp
  datetime_col datetime

  // Boolean
  is_active boolean [default: true]

  // JSON (untuk database yang mendukung)
  metadata json
}

2. Relationship Types

DBML mendukung berbagai jenis relasi database:

// One-to-many (satu user bisa punya banyak posts)
Ref: posts.user_id > users.id

// One-to-one (satu user punya satu profile)
Ref: profiles.user_id - users.id

// Many-to-many (melalui junction table)
Ref: post_tags.post_id > posts.id
Ref: post_tags.tag_id > tags.id

3. Indexes dan Constraints

Table products {
  id bigint [primary key]
  name varchar(100) [not null]
  price decimal(10,2) [not null]
  category_id bigint
  sku varchar(50) [unique]

  indexes {
    name [type: btree]
    (category_id, price) [name: 'category_price_idx']
    sku [unique]
  }
}

4. Database Schema Grouping

Untuk database yang mendukung schema (seperti PostgreSQL), DBML juga bisa mengorganisir tabel dalam schema yang berbeda:

Table auth.users {
  id bigint [primary key]
  email varchar(100) [unique]
}

Table blog.posts {
  id bigint [primary key]
  title varchar(200)
  author_id bigint
}

Ref: blog.posts.author_id > auth.users.id

5. Enums dan Custom Types

enum order_status {
  pending
  processing
  shipped
  delivered
  cancelled
}

Table orders {
  id bigint [primary key]
  status order_status [default: 'pending']
  total decimal(10,2)
}

Mengenal DBML Previewer Extension

Setelah memahami apa itu DBML dan kekuatannya, sekarang saatnya kita membahas bagaimana cara memvisualisasikan file DBML tersebut dengan mudah menggunakan ekstensi Visual Studio Code yang saya kembangkan.

DBML Previewer adalah ekstensi open source untuk Visual Studio Code yang memungkinkan developer untuk mengubah file DBML menjadi diagram database interaktif secara real-time. Ekstensi ini lahir dari kebutuhan pribadi saya untuk memiliki cara yang cepat dan mudah dalam memvisualisasikan struktur database tanpa harus keluar dari environment development.

Latar Belakang Pengembangan

Sebagai developer yang sering bekerja dengan database kompleks, saya menghadapi beberapa tantangan:

  1. Switching Context: Harus berpindah dari VSCode ke tools lain untuk melihat diagram database
  2. Sync Issues: Dokumentasi database yang terpisah dari kode sering kali tidak sinkron
  3. Collaboration: Sulit untuk berbagi dan mendiskusikan struktur database dengan tim
  4. Learning Curve: Tools existing seringkali memiliki learning curve yang cukup tinggi

Dari pengalaman tersebut, saya memutuskan untuk membuat ekstensi yang:

  • Terintegrasi langsung dengan VSCode
  • Zero configuration - langsung bisa digunakan
  • Real-time preview - otomatis update saat file DBML berubah
  • Interactive - bisa drag & drop, zoom, dan explore diagram
  • Lightweight - tidak memperlambat performa VSCode

Fitur-Fitur Unggulan

1. One-Click Preview

Dengan shortcut sederhana Ctrl+Shift+D (Windows/Linux) atau Cmd+Shift+D (macOS), langsung bisa melihat diagram database dari file DBML yang sedang dibuka.

2. Real-time Updates

Setiap kali kamu save file DBML, diagram akan otomatis terupdate. Ini sangat membantu saat sedang melakukan iterasi desain database.

3. Interactive Diagram

  • Drag & Drop: Posisi tabel bisa dipindah-pindah sesuai keinginan
  • Zoom: Bisa zoom in/out untuk melihat detail atau overview
  • Relationship Tooltips: Hover pada garis relasi untuk melihat detail
  • Table Notes: Notes yang ditulis dalam DBML akan muncul sebagai tooltip

4. Smart Table Layout

Algoritma layout otomatis akan mengatur posisi tabel agar mudah dibaca dan relasi terlihat jelas.

5. Multi-Schema Support

Mendukung database dengan multiple schema, dengan pengelompokan visual yang jelas.

6. Theme Integration

Secara otomatis mengikuti tema VSCode yang sedang aktif, baik light maupun dark theme.

Instalasi dan Setup

Proses instalasi DBML Previewer sangat mudah dan straightforward:

Cara 1: Melalui VSCode Marketplace

  1. Buka Visual Studio Code
  2. Tekan Ctrl+Shift+X untuk membuka Extensions panel
  3. Search “DBML Previewer”
  4. Klik Install pada ekstensi yang dibuat oleh “rizkykurniawan”

Cara 2: Command Line

code --install-extension rizkykurniawan.dbml-previewer

Cara 3: Manual Installation

  1. Download VSIX file dari GitHub releases
  2. Di VSCode, buka Command Palette (Ctrl+Shift+P)
  3. Ketik “Extensions: Install from VSIX…”
  4. Pilih file VSIX yang sudah didownload

System Requirements

  • Visual Studio Code: Versi 1.102.0 atau lebih baru
  • File Format: File dengan ekstensi .dbml
  • DBML Version: Mendukung DBML v2 syntax

Cara Menggunakan DBML Previewer

Getting Started

Setelah membuat file DBML, penggunaan DBML Previewer sangat mudah:

  1. Buka file DBML: Pastikan file .dbml sudah terbuka di VSCode
  2. Gunakan shortcut: Tekan Ctrl+Shift+D (Windows/Linux) atau Cmd+Shift+D (macOS)
  3. Atau via Command Palette:
    • Tekan Ctrl+Shift+P
    • Ketik “DBML: Preview Database Diagram”
    • Tekan Enter

Setelah preview terbuka, kamu akan melihat diagram database yang interaktif dengan semua tabel, kolom, dan relasi yang terdefinisi dalam file DBML.

Fitur Navigasi

  • Zoom In/Out: Gunakan scroll wheel mouse atau pinch gesture di trackpad
  • Pan: Klik dan drag pada area kosong untuk menggeser diagram
  • Move Table: Klik dan drag pada header tabel untuk memindahkan posisi
  • View Details: Hover pada tabel atau relasi untuk melihat informasi detail
  • Fit to Screen: Double-click pada area kosong untuk fit diagram ke ukuran window

Keunggulan DBML Previewer

1. Zero Configuration

Tidak perlu setup configuration file atau pengaturan kompleks. Install ekstensi, buat file DBML, dan langsung bisa digunakan.

2. Developer-Friendly

  • Error Handling: Error messages yang jelas saat ada syntax error dalam DBML
  • Auto-completion: (Coming soon) IntelliSense untuk syntax DBML
  • Validation: Real-time validation untuk DBML syntax

3. Integration Ready

  • Git Friendly: File DBML cocok untuk version control
  • Export Options: (Coming soon) Export diagram ke berbagai format

5. Extensible Architecture

Dibangun dengan arsitektur yang extensible, memungkinkan pengembangan fitur-fitur advanced di masa depan.

Perbandingan dengan Tools Lain

FeatureDBML Previewerdbdiagram.ioQuickDBDDraw.io
IntegrationNative VSCodeWeb-basedWeb-basedWeb/Desktop
Real-time
Offline
Version ControlLimited
CostFreeFreemiumPaidFree
Learning CurveLowLowMediumHigh
Code GenerationComing

Tips Menggunakan DBML Previewer

1. Konsistensi

Gunakan naming convention yang konsisten dalam DBML file untuk mempermudah pemahaman dan maintenance.

2. Dokumentasi yang Jelas

Manfaatkan fitur Note untuk mendokumentasikan business rules dan informasi penting lainnya.

3. Organisasi File

Untuk project besar, pisahkan DBML file berdasarkan domain atau feature untuk memudah maintenance.

4. Gunakan TableGroup

Manfaatkan TableGroup untuk mengorganisir tabel-tabel yang saling berkaitan agar diagram lebih mudah dibaca.

Kesimpulan

DBML dan DBML Previewer extension memberikan solusi powerful untuk mengelola database schema dengan cara yang modern, collaborative, dan maintainable. Dari pengalaman saya sebagai developer dan creator ekstensi ini, saya melihat bagaimana tools ini dapat significantly meningkatkan produktivitas tim dan kualitas database design.

Key Benefits yang Sudah Terbukti:

1. Improved Documentation

File DBML menjadi single source of truth untuk database schema, complete dengan business rules dan technical constraints.

2. Better Collaboration

Tim bisa dengan mudah review, diskusi, dan iterate database design melalui DBML yang di-push ke version control.

3. Faster Development

Real-time visualization dengan DBML Previewer memungkinkan quick iteration dan immediate feedback pada design changes.

4. Reduced Errors

Dokumentasi yang jelas dan visualisasi membantu identifikasi potensi error terjadi dalam proses development.

5. Knowledge Transfer

Anggota tim baru dapat dengan cepat memahami struktur database melalui DBML yang dikelola dengan baik.

Looking Forward

Database design adalah salah satu aspek paling critical dalam software development. Dengan tools yang tepat seperti DBML dan DBML Previewer, kita bisa memiliki database design dengan lebih systematic, collaborative, dan maintainable.

Ekstensi DBML Previewer terus berkembang dengan fitur-fitur baru dan improvement berdasarkan feedback dari komunitas. Sebagai open source project, setiap kontribusi - baik itu bug report, feature request, atau code contribution - sangat berharga untuk kemajuan project ini.

Happy Database Designing, Talenta Digital! 🚀


DBML Previewer adalah open source project yang available di GitHub. Star repository jika artikel ini bermanfaat, dan jangan ragu untuk contribute atau memberikan feedback!

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.
Lightbox