Post 6: Attribute, Entitas, dan Relasi dalam ERD
Komponen Dasar ERD
Entity Relationship Diagram (ERD) adalah tools fundamental dalam perancangan database yang terdiri dari tiga komponen utama: Attribute, Entitas, dan Relasi. Memahami ketiga komponen ini adalah kunci untuk membuat desain database yang efektif.
1. Entitas (Entity)
Definisi Entitas
Entitas adalah objek atau "thing" di dunia nyata yang dapat diidentifikasi secara unik dan memiliki eksistensi independen. Entitas biasanya merepresentasikan orang, tempat, benda, atau konsep yang ingin kita simpan informasinya dalam database.
Contoh Entitas dalam Sistem Kampus:
- MAHASISWA - Orang yang belajar di kampus
- DOSEN - Pengajar di kampus
- MATA_KULIAH - Course yang diajarkan
- RUANGAN - Tempat perkuliahan
- JURUSAN - Program studi
Jenis-jenis Entitas
a. Strong Entity (Entitas Kuat)
Entitas yang dapat berdiri sendiri dan memiliki primary key sendiri tanpa bergantung pada entitas lain.
Contoh:
- MAHASISWA dengan primary key NIM
- DOSEN dengan primary key NIP
- BUKU dengan primary key ISBN
Digambarkan dengan persegi panjang dalam ERD.
b. Weak Entity (Entitas Lemah)
Entitas yang tidak dapat berdiri sendiri dan bergantung pada entitas lain untuk identifikasinya. Tidak memiliki primary key sendiri yang unik.
Contoh:
- TANGGUNGAN (bergantung pada KARYAWAN)
- ITEM_PESANAN (bergantung pada PESANAN)
- DETAIL_TRANSAKSI (bergantung pada TRANSAKSI)
Digambarkan dengan persegi panjang ganda dalam ERD.
2. Attribute (Atribut)
Definisi Attribute
Attribute adalah properti atau karakteristik yang mendeskripsikan entitas. Setiap attribute memiliki nama dan tipe data tertentu.
Jenis-jenis Attribute
a. Simple Attribute (Atomic)
Attribute yang tidak dapat dipecah lagi menjadi bagian yang lebih kecil.
Contoh pada Entitas MAHASISWA:
- NIM: "24416255201003"
- Jenis_Kelamin: "L" atau "P"
- Angkatan: 2024
- Email: "student@email.com"
b. Composite Attribute
Attribute yang dapat dipecah menjadi sub-attribute yang lebih kecil dan memiliki makna independen.
Contoh:
- Nama_Lengkap dapat dipecah menjadi:
- Nama_Depan: "Gilang"
- Nama_Belakang: "Ramadhan"
- Alamat dapat dipecah menjadi:
- Jalan: "Jl. Pendidikan No. 25"
- Kota: "Karawang"
- Provinsi: "Jawa Barat"
- Kode_Pos: "41316"
c. Derived Attribute (Turunan)
Attribute yang nilainya dapat diturunkan atau dihitung dari attribute lain. Biasanya tidak perlu disimpan dalam database.
Contoh:
- Umur dihitung dari: Tanggal_Lahir
- Total_Harga dihitung dari: Harga × Jumlah
- IPK dihitung dari: nilai-nilai mata kuliah
- Lama_Kerja dihitung dari: Tanggal_Mulai_Kerja
Digambarkan dengan oval putus-putus dalam ERD.
d. Multi-valued Attribute
Attribute yang dapat memiliki lebih dari satu nilai untuk satu entitas.
Contoh pada Entitas MAHASISWA:
- Nomor_Telepon:
- "081234567890"
- "021-12345678"
- Hobi: "Membaca", "Coding", "Gaming"
- Skill: Java, Python, SQL
Digambarkan dengan oval ganda dalam ERD.
e. Key Attribute
Attribute khusus yang uniquely identifies setiap instance dari entitas. Dikenal sebagai Primary Key.
Contoh:
- NIM untuk entitas MAHASISWA
- NIP untuk entitas DOSEN
- ISBN untuk entitas BUKU
- ID_Transaksi untuk entitas TRANSAKSI
Digambarkan dengan oval dengan garis bawah dalam ERD.
3. Relasi (Relationship)
Definisi Relasi
Relasi adalah asosiasi atau hubungan antara dua atau lebih entitas. Relasi menggambarkan bagaimana entitas-entitas berinteraksi satu sama lain.
Notasi Dasar Relasi
ENTITAS_A ——— [ RELASI ] ——— ENTITAS_B
Digambarkan dengan belah ketupat (diamond) dalam ERD
Cardinality Ratio (Rasio Kardinalitas)
a. One-to-One (1:1)
Satu instance entitas A berhubungan dengan tepat satu instance entitas B, dan sebaliknya.
Contoh:
- MAHASISWA (1:1) KARTU_MAHASISWA
- Satu mahasiswa memiliki satu kartu mahasiswa
- Satu kartu mahasiswa dimiliki oleh satu mahasiswa
- KEPALA_DESA (1:1) DESA
- Satu desa dipimpin oleh satu kepala desa
- Satu kepala desa memimpin satu desa
MAHASISWA ——1——— MEMILIKI ———1—— KARTU_MAHASISWA
b. One-to-Many (1:N)
Satu instance entitas A dapat berhubungan dengan banyak instance entitas B, tetapi satu instance B hanya berhubungan dengan satu instance A.
Contoh:
- DOSEN (1:N) MAHASISWA
- Satu dosen membimbing banyak mahasiswa
- Satu mahasiswa dibimbing oleh satu dosen
- JURUSAN (1:N) MAHASISWA
- Satu jurusan memiliki banyak mahasiswa
- Satu mahasiswa terdaftar di satu jurusan
- PELANGGAN (1:N) PESANAN
- Satu pelanggan dapat membuat banyak pesanan
- Satu pesanan dibuat oleh satu pelanggan
DOSEN ——1——— MEMBIMBING ———N—— MAHASISWA
c. Many-to-Many (M:N)
Satu instance entitas A dapat berhubungan dengan banyak instance entitas B, dan sebaliknya.
Contoh:
- MAHASISWA (M:N) MATA_KULIAH
- Satu mahasiswa mengambil banyak mata kuliah
- Satu mata kuliah diambil oleh banyak mahasiswa
- DOSEN (M:N) MATA_KULIAH
- Satu dosen mengajar banyak mata kuliah
- Satu mata kuliah dapat diajar oleh banyak dosen
MAHASISWA ——M——— MENGAMBIL ———N—— MATA_KULIAH
PENTING: Relasi Many-to-Many tidak dapat diimplementasikan langsung dalam database relasional. Harus dipecah menjadi dua relasi One-to-Many menggunakan Junction Table (tabel perantara).
Transformasi M:N ke Database Implementation
Contoh: MAHASISWA (M:N) MATA_KULIAH
Relasi Original (Konseptual):
MAHASISWA ———M:N——— MATA_KULIAH
Transformasi dengan Junction Table:
MAHASISWA ———1:N——— KRS ———N:1——— MATA_KULIAH
Struktur Tabel:
-- Tabel MAHASISWA
CREATE TABLE mahasiswa (
nim VARCHAR(15) PRIMARY KEY,
nama VARCHAR(100),
jurusan VARCHAR(50)
);
-- Tabel MATA_KULIAH
CREATE TABLE mata_kuliah (
kode_mk VARCHAR(10) PRIMARY KEY,
nama_mk VARCHAR(100),
sks INT
);
-- Tabel KRS (Junction Table)
CREATE TABLE krs (
id_krs INT PRIMARY KEY AUTO_INCREMENT,
nim VARCHAR(15),
kode_mk VARCHAR(10),
semester VARCHAR(10),
nilai CHAR(1),
FOREIGN KEY (nim) REFERENCES mahasiswa(nim),
FOREIGN KEY (kode_mk) REFERENCES mata_kuliah(kode_mk)
);
Best Practices dalam Mendesain ERD
Do's:
- Gunakan naming yang jelas: Nama entitas dan attribute harus deskriptif
- Hindari redundansi: Jangan simpan data yang sama di banyak tempat
- Identifikasi key dengan benar: Pastikan primary key benar-benar unique
- Dokumentasi relasi: Jelaskan business rules di balik relasi
- Normalisasi: Ikuti aturan normalisasi untuk menghindari anomali
- Konsisten: Gunakan konvensi penamaan yang konsisten
Don'ts:
- Jangan gunakan multi-valued attribute: Pecah menjadi entitas terpisah
- Hindari relasi ternary jika bisa: Pecah menjadi binary relationships
- Jangan abaikan weak entities: Identifikasi dependencies dengan benar
- Hindari circular dependencies: Dapat menyebabkan masalah integritas
- Jangan skip validasi: Pastikan ERD match dengan requirements
Tools untuk Membuat ERD
- Lucidchart: Web-based, collaborative, user-friendly
- Draw.io (diagrams.net): Free, open-source, powerful
- MySQL Workbench: Integrated dengan MySQL, auto-generate SQL
- ERDPlus: Educational tool, simple interface
- Visual Paradigm: Professional, comprehensive features
- DbDesigner: Online, collaborative, real-time
Kesimpulan
Memahami Attribute, Entitas, dan Relasi adalah fundamental dalam perancangan database. Ketiga komponen ini membentuk dasar dari Entity Relationship Diagram yang efektif. Dengan menguasai konsep-konsep ini, Anda dapat mendesain database yang terstruktur dengan baik, menghindari redundansi data, dan memastikan integritas referensial. ERD yang baik adalah kunci untuk implementasi database yang sukses dan mudah dimaintain.
← Kembali ke Beranda