📊 Data Modelling
🎓 Pertemuan
Pertemuan 4: Entity Relationship Diagram (ERD)

MODUL PERTEMUAN 4

ENTITY RELATIONSHIP DIAGRAM (ERD)


A. INFORMASI UMUM MATA KULIAH

ItemKeterangan
Mata KuliahData Modelling
Kode MKSSD1019
Bobot3 SKS (Praktikum)
Semester4 (Empat)
Program StudiSains Data
FakultasEkonomi dan Bisnis Islam
UniversitasUIN K.H. Abdurrahman Wahid Pekalongan
Dosen PengampuMohammad Reza Maulana, M.Kom

B. INFORMASI PERTEMUAN

B.1 Sub-CPMK Pertemuan 4

Sub-CPMK 4.1: Mahasiswa mampu menyusun model data konseptual dari tahap identifikasi hingga representasi visual menggunakan notasi ERD standar (Chen dan Crow's Foot), termasuk memodelkan weak entity dan hierarki generalisasi/spesialisasi.

B.2 Tujuan Pembelajaran (Learning Objectives)

Setelah mengikuti pertemuan ini, mahasiswa akan mampu:

  1. Membedakan notasi Chen dan Crow's Foot serta memilih notasi yang tepat untuk konteks yang berbeda (C2 – Memahami)
  2. Menerapkan simbol-simbol notasi ERD dengan benar untuk entity, attribute, dan relationship (C3 – Mengaplikasikan)
  3. Menentukan kardinalitas dan participation constraint dari sebuah relationship berdasarkan business rules (C3 – Mengaplikasikan)
  4. Memodelkan weak entity beserta identifying relationship-nya dalam ERD (C3 – Mengaplikasikan)
  5. Menggambar hierarki generalisasi dan spesialisasi (ISA) dengan tepat (C3 – Mengaplikasikan)
  6. Merancang ERD lengkap dari narasi bisnis dengan menerapkan best practices (C4 – Menganalisis)

B.3 Kompetensi yang Dikembangkan

DomainKompetensi
KognitifMemahami notasi (C2), Menerapkan dalam kasus (C3), Menganalisis kebutuhan desain (C4)
AfektifMengembangkan ketelitian dan presisi dalam representasi visual; menghargai standar notasi
PsikomotorikMenggunakan tools ERD digital (Draw.io) untuk menghasilkan diagram yang rapi dan benar

B.4 Indikator Pencapaian

Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu:

  1. Menggambar simbol-simbol Chen notation dengan benar tanpa melihat referensi
  2. Menerjemahkan kardinalitas ke dalam simbol Crow's Foot yang tepat (one, many, zero-or-one, one-or-many, zero-or-many)
  3. Membedakan total participation dan partial participation serta cara merepresentasikannya
  4. Mengidentifikasi dan menggambar weak entity dengan double rectangle dan double diamond
  5. Merancang hierarki ISA dengan menentukan constraintnya (disjoint/overlapping, total/partial)
  6. Menghasilkan ERD lengkap yang rapi, konsisten, dan sesuai dengan narasi bisnis

B.5 Alokasi Waktu

NoKegiatanDurasiKeterangan
1Pembukaan & Review Latihan Pertemuan 310 menitHighlight temuan menarik dari latihan identifikasi
2Aktivitas Pemantik: "Tebak ERD-nya!"10 menitMahasiswa membaca diagram ERD dan menebak sistem apa
3Materi 1: Notasi Chen dan Crow's Foot25 menitCeramah + demonstrasi live di tools
4Materi 2: Kardinalitas dan Participation Constraint20 menitCeramah + latihan berpasangan
5Break10 menit
6Materi 3: Weak Entity dalam ERD15 menitCeramah + demonstrasi
7Materi 4: Generalisasi & Spesialisasi (ISA)15 menitCeramah + contoh kasus
8Materi 5: Best Practices Menggambar ERD10 menitCeramah + tips & common mistakes
9Praktikum Terbimbing: Gambar ERD dari Kasus25 menitKerja individual/berpasangan di tools
10Review & Diskusi Hasil Praktikum10 menitPresentasi singkat + umpan balik
11Evaluasi, Briefing Tugas & Penutup10 menitKuis, penjelasan tugas ERD, refleksi
Total160 menit(termasuk fleksibilitas 10 menit)

C. MATERI PEMBELAJARAN

C.1 Aktivitas Pemantik – "Tebak ERD-nya!"

Instruksi (10 menit): Dosen menampilkan sebuah ERD sederhana di layar tanpa label nama sistem. ERD tersebut menampilkan entity, attribute, dan relationship dalam bentuk diagram visual. Mahasiswa diberi waktu 5 menit untuk mengamati, lalu menjawab pertanyaan berikut secara lisan.

ERD yang Ditampilkan:

ERD Aktivitas Pemantik — Tebak ERD-nya!

Deskripsi ERD:

  • Terdapat 4 entity: [A] (ID, Nama, Tanggal_Lahir, Alamat), [B] (Kode, Judul, Deskripsi, Durasi), [C] (ID_C, Tanggal, Status, Nilai), [D] (ID_D, Nama, Kategori)
  • Relationship: [A] ──(1)──"mengikuti"──(M)──[B] dengan atribut Tanggal_Mulai & Nilai_Akhir, [D]──(1)──"berisi"──(M)──[B], dan [A]──(1)──"membuat"──(M)──[C]

Pertanyaan:

  1. Sistem apa yang kamu bayangkan dari ERD ini?
  2. Apa makna bisnis dari relationship "mengikuti"?
  3. Mengapa atribut Nilai_Akhir berada di relationship, bukan di entity [A] atau [B]?

Poin Pembelajaran: Aktifitas ini menunjukkan bahwa ERD adalah bahasa universal — seseorang yang memahami notasinya bisa membaca dan memahami model data sistem apapun tanpa harus mengetahui domainnya terlebih dahulu. Itulah mengapa kita perlu belajar notasi ERD dengan benar.


C.2 Materi 1: Notasi ERD — Chen dan Crow's Foot

ERD (Entity Relationship Diagram) adalah representasi visual dari model data konseptual. Ada beberapa notasi yang digunakan di industri, dan dua yang paling umum adalah Chen Notation dan Crow's Foot Notation.

C.2.1 Chen Notation

Dikembangkan oleh Peter Chen pada tahun 1976 dalam makalahnya yang berjudul "The Entity-Relationship Model—Toward a Unified View of Data". Notasi ini adalah yang paling sering digunakan dalam konteks akademik dan pendidikan karena sangat eksplisit dalam merepresentasikan setiap komponen.

Referensi Visual: Untuk melihat ilustrasi lengkap simbol Chen Notation beserta contoh visualnya, baca artikel Redgate: Chen ERD Notation (opens in a new tab). Artikel ini menampilkan gambar simbol entity, weak entity, associative entity, atribut (key, partial key, multivalued, derived, composite), serta relationship (strong, weak, kardinalitas, dan participation constraint) dalam notasi Chen.

Simbol-Simbol Chen Notation:

┌─────────────────────────────────────────────────────────────────┐
│                    SIMBOL CHEN NOTATION                         │
├──────────────────────┬──────────────────────────────────────────┤
│ SIMBOL               │ MAKNA                                    │
├──────────────────────┼──────────────────────────────────────────┤
│ ┌───────────┐        │ ENTITY (Strong)                         │
│ │  ENTITY   │        │ Rectangle / kotak                        │
│ └───────────┘        │ Contoh: MAHASISWA, PRODUK, PESANAN       │
├──────────────────────┼──────────────────────────────────────────┤
│ ╔═══════════╗        │ WEAK ENTITY                             │
│ ║  W.ENTITY ║        │ Double rectangle / kotak ganda           │
│ ╚═══════════╝        │ Contoh: ITEM_PESANAN, TANGGUNGAN         │
├──────────────────────┼──────────────────────────────────────────┤
│     ╱ ─── ╲          │ RELATIONSHIP                             │
│    ╱ REL.  ╲         │ Diamond / belah ketupat                  │
│    ╲       ╱         │ Contoh: mengambil, membuat, berisi       │
│     ╲─────╱          │                                          │
├──────────────────────┼──────────────────────────────────────────┤
│    ╔══════╗          │ IDENTIFYING RELATIONSHIP                 │
│   ╔╬══════╬╗         │ Double diamond / belah ketupat ganda     │
│   ╚╬══════╬╝         │ Menghubungkan weak entity ke owner-nya   │
│    ╚══════╝          │                                          │
├──────────────────────┼──────────────────────────────────────────┤
│      ╭───╮           │ ATTRIBUTE (Simple)                      │
│      │attr│          │ Ellipse / oval                           │
│      ╰───╯           │ Contoh: Nama, Harga, Tanggal             │
├──────────────────────┼──────────────────────────────────────────┤
│    ╭───────╮         │ MULTIVALUED ATTRIBUTE                   │
│   ╭┤  attr ├╮        │ Double ellipse / oval ganda              │
│   ╰┤       ├╯        │ Contoh: Nomor_HP, Keahlian               │
│    ╰───────╯         │                                          │
├──────────────────────┼──────────────────────────────────────────┤
│     ╭ ─ ─ ╮          │ DERIVED ATTRIBUTE                       │
│     │ attr │         │ Dashed ellipse / oval putus-putus        │
│     ╰ ─ ─ ╯          │ Contoh: Umur, Total, Rating_Rata         │
├──────────────────────┼──────────────────────────────────────────┤
│      ╭───╮           │ KEY ATTRIBUTE (Primary Key)             │
│      │attr│          │ Ellipse dengan nama atribut digarisbawahi│
│      ╰───╯           │ Contoh: NIM, Kode_Produk                 │
│       ‾‾‾‾           │                                          │
├──────────────────────┼──────────────────────────────────────────┤
│       ╭──╮           │ PARTIAL KEY (Weak Entity Key)           │
│       │key│          │ Ellipse dengan nama atribut bergaris     │
│       ╰──╯           │ putus-putus di bawahnya                  │
│        ╌╌╌           │                                          │
└──────────────────────┴──────────────────────────────────────────┘

Contoh Lengkap ERD Chen — Sistem Sederhana Perpustakaan:

                    ╭────╮  ╭──────────╮  ╭──────────╮
                    │ NIM │  │   Nama   │  │ Angkatan │
                    ╰──┬─╯  ╰────┬─────╯  ╰────┬─────╯
                       │         │              │
                    ┌──┴─────────┴──────────────┴──┐
                    │          MAHASISWA            │
                    └──────────────┬───────────────┘
                                   │ M
                              ╱────┴───╲
                             ╱ meminjam ╲
                             ╲          ╱
                              ╲────┬───╱
                                   │ N       ╭──────────────╮
                    ┌──────────────┴──────┐  │ Tanggal_Pinjam│
                    │        BUKU         │  ╰──────────────╯
                    └──────────────┬──────┘  ╭───────────────╮
                    ╭──────╮  ╭────┴──╮      │ Tanggal_Kembali│
                    │ ISBN │  │ Judul │      ╰───────────────╯
                    ╰──────╯  ╰───────╯
         (atribut di relationship "meminjam": Tanggal_Pinjam, Tanggal_Kembali)

Cara Membaca Kardinalitas di Chen:

  • Angka atau huruf ditulis di dekat garis yang menghubungkan entity ke relationship
  • 1 berarti "satu", N atau M berarti "banyak"
  • Dibaca dari entity ke arah relationship: "Satu MAHASISWA dapat meminjam banyak (N) BUKU"

C.2.2 Crow's Foot Notation

Crow's Foot (atau disebut juga Information Engineering Notation) adalah notasi yang lebih banyak digunakan di industri dan dalam tools seperti MySQL Workbench dan Draw.io. Notasi ini lebih compact dan lebih intuitif untuk menunjukkan kardinalitas. Nama "Crow's Foot" berasal dari simbol tiga cabang yang menyerupai kaki gagak untuk menandai sisi "many" pada sebuah relationship.

Referensi Visual: Untuk melihat ilustrasi lengkap simbol Crow's Foot Notation beserta contoh visualnya, baca artikel Redgate: Crow's Foot Notation (opens in a new tab). Artikel ini menampilkan gambar simbol entity, atribut, serta semua varian kardinalitas (zero-or-many, one-or-many, one-and-only-one, zero-or-one) dalam notasi Crow's Foot.

Simbol-Simbol Crow's Foot:

┌─────────────────────────────────────────────────────────────────┐
│                  SIMBOL CROW'S FOOT NOTATION                    │
├─────────────────────────────────────────────────────────────────┤
│ ENTITY → Kotak/rectangle dengan nama di dalam                   │
│                                                                 │
│ Atribut → Listed di dalam kotak entity (berbeda dari Chen)      │
│           Format: [PK] nama_atribut : tipe                      │
│                                                                 │
│ RELATIONSHIP → Garis yang menghubungkan dua entity              │
│                Nama relationship ditulis di atas/bawah garis    │
└─────────────────────────────────────────────────────────────────┘

SIMBOL KARDINALITAS (dibaca dari ujung garis ke entity):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ──|         → EXACTLY ONE (tepat satu)
               Satu garis vertikal tegak
               
  ──<         → MANY (banyak / satu atau lebih)
               Tiga garis seperti kaki gagak (crow's foot)
               
  ──o|        → ZERO OR ONE (nol atau satu / opsional-satu)
               Lingkaran + garis vertikal
               
  ──o<        → ZERO OR MANY (nol atau banyak / opsional-banyak)
               Lingkaran + kaki gagak
               
  ──||        → ONE AND ONLY ONE (tepat satu, wajib)
               Dua garis vertikal
               
  ──|<        → ONE OR MANY (satu atau lebih, wajib)
               Garis vertikal + kaki gagak
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CARA MEMBACA:
  Simbol dibaca dari kanan ke kiri (dari entity ke pusat garis):
  
  Simbol di sisi entity → berapa banyak instance entity TERSEBUT
  yang terlibat dalam relationship

Contoh Pembacaan Crow's Foot:

Kasus 1: Satu DEPARTEMEN memiliki banyak KARYAWAN (wajib)
         Setiap KARYAWAN harus berada di tepat satu DEPARTEMEN (wajib)

DEPARTEMEN  ||──────────|<  KARYAWAN
            ↑                ↑
         "tepat satu"    "satu atau banyak"

Dibaca dari KARYAWAN: "Setiap KARYAWAN berada di tepat satu DEPARTEMEN"
Dibaca dari DEPARTEMEN: "Setiap DEPARTEMEN memiliki satu atau banyak KARYAWAN"

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Kasus 2: Mahasiswa mengambil mata kuliah (banyak ke banyak, keduanya opsional)
         Mahasiswa boleh belum ambil MK (baru daftar), MK boleh belum ada peminat

MAHASISWA  o<──────────o<  MATA_KULIAH
           ↑               ↑
        "nol atau banyak" "nol atau banyak"

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Kasus 3: Karyawan boleh punya mobil dinas atau tidak (1:1 opsional di satu sisi)
         Mobil dinas pasti milik tepat satu karyawan (tidak boleh berbagi)

KARYAWAN  ||──────────o|  MOBIL_DINAS
          ↑               ↑
       "tepat satu"   "nol atau satu"

Dibaca dari MOBIL_DINAS: "Setiap MOBIL_DINAS dimiliki oleh tepat satu KARYAWAN"
Dibaca dari KARYAWAN: "Setiap KARYAWAN boleh tidak punya atau punya satu MOBIL_DINAS"

Format Entity di Crow's Foot (dalam tools):

┌──────────────────────────┐
│       MAHASISWA          │  ← Nama Entity (header)
├──────────────────────────┤
│ PK │ nim      │ CHAR(10) │  ← Primary Key (bold/italic)
├──────────────────────────┤
│    │ nama     │ VARCHAR  │
│    │ tgl_lahir│ DATE     │
│    │ email    │ VARCHAR  │
│ FK │ prodi_id │ INT      │  ← Foreign Key
└──────────────────────────┘

C.2.3 Perbandingan Chen vs Crow's Foot

AspekChen NotationCrow's Foot
Representasi AtributOval terpisah (lebih visual)Daftar di dalam kotak entity
Representasi RelationshipDiamond terpisahGaris langsung antar entity
KardinalitasAngka di dekat garisSimbol di ujung garis (lebih visual)
Weak EntityDouble rectangleBiasanya dengan label/notasi khusus
Popularitas AkademikSangat tinggiSedang
Popularitas IndustriSedangSangat tinggi
ToolsDraw.ioMySQL Workbench, Draw.io
Keterbacaan Diagram BesarBisa padat/ramai (banyak oval)Lebih compact dan rapi
Cocok untukPembelajaran konsep, dokumen akademikDokumentasi teknis, implementasi

Rekomendasi Kelas: Kita akan belajar keduanya. Untuk latihan konseptual dan tugas akademik, gunakan Chen notation. Untuk proyek semester dan pekerjaan yang lebih dekat ke implementasi, gunakan Crow's Foot. Di industri, Crow's Foot jauh lebih umum.


C.3 Materi 2: Kardinalitas dan Participation Constraint

Dua konsep yang sangat penting dan sering membingungkan: kardinalitas (berapa banyak) dan participation (apakah wajib).

C.3.1 Kardinalitas (Cardinality)

Kardinalitas menggambarkan berapa banyak instance dari satu entity yang dapat berasosiasi dengan berapa banyak instance dari entity lain.

Tiga Jenis Kardinalitas Dasar:

1. ONE-TO-ONE (1:1)
   Satu instance A ↔ tepat satu instance B
   
   Contoh: MAHASISWA ──── KTM
   (Satu mahasiswa memiliki tepat satu KTM; satu KTM milik satu mahasiswa)
   
   Pertanyaan diagnostik:
   "Bisakah satu mahasiswa punya 2 KTM?" → Tidak → sisi mahasiswa: 1
   "Bisakah satu KTM dimiliki 2 mahasiswa?" → Tidak → sisi KTM: 1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. ONE-TO-MANY (1:N)
   Satu instance A ↔ banyak instance B
   Satu instance B ↔ tepat satu instance A
   
   Contoh: DEPARTEMEN ──── KARYAWAN
   (Satu departemen punya banyak karyawan; satu karyawan di satu departemen)
   
   Contoh lain dari kehidupan nyata:
   - IBU ──── ANAK (satu ibu → banyak anak; satu anak → satu ibu kandung)
   - PENULIS ──── BUKU (satu penulis → banyak buku; satu buku → satu penulis)
   - KATEGORI ──── PRODUK (satu kategori → banyak produk)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3. MANY-TO-MANY (M:N)
   Satu instance A ↔ banyak instance B
   Satu instance B ↔ banyak instance A
   
   Contoh: MAHASISWA ──── MATA_KULIAH
   (Satu mahasiswa ambil banyak MK; satu MK diambil banyak mahasiswa)
   
   Contoh lain:
   - PENULIS ──── BUKU (buku bisa multi-penulis; penulis bisa multi-buku)
   - DOKTER ──── PASIEN (satu dokter tangani banyak pasien; satu pasien bisa ke banyak dokter)
   - AKTOR ──── FILM (satu aktor main di banyak film; satu film punya banyak aktor)

Teknik Menentukan Kardinalitas — "The Two-Question Method":

Untuk menentukan kardinalitas antara Entity A dan Entity B, tanyakan dua pertanyaan:

PERTANYAAN 1: "Berapa banyak instance B yang dapat dihubungkan 
               dengan SATU instance A tertentu?"
               → Jawaban ini menentukan sisi B (banyak atau satu)

PERTANYAAN 2: "Berapa banyak instance A yang dapat dihubungkan 
               dengan SATU instance B tertentu?"
               → Jawaban ini menentukan sisi A (banyak atau satu)

CONTOH: PENULIS dan ARTIKEL di sebuah jurnal ilmiah

Q1: "Berapa banyak ARTIKEL yang bisa ditulis oleh satu PENULIS?"
A1: "Banyak" → sisi ARTIKEL = N (many)

Q2: "Berapa banyak PENULIS yang bisa menulis satu ARTIKEL?"
A2: "Bisa lebih dari satu (co-authorship)" → sisi PENULIS = M (many)

Hasil: PENULIS ──M:N── ARTIKEL

C.3.2 Participation Constraint (Batasan Partisipasi)

Participation constraint menentukan apakah setiap instance dari sebuah entity wajib berpartisipasi dalam relationship. Ada dua jenis:

Total Participation (Mandatory / Wajib)

Setiap instance dari entity HARUS berpartisipasi dalam relationship. Tidak boleh ada instance yang "berdiri sendiri" tanpa relasi.

  • Di Chen notation: digambarkan dengan garis ganda (double line)
  • Di Crow's Foot: simbol di ujung garis tidak mengandung lingkaran o
  • Kata kunci dalam business rules: "harus", "wajib", "setiap...pasti..."
Contoh Total Participation:
  "Setiap KARYAWAN HARUS bekerja di satu DEPARTEMEN"
  → KARYAWAN memiliki total participation terhadap DEPARTEMEN
  
  "Setiap item PESANAN HARUS merujuk ke satu PRODUK"
  → ITEM_PESANAN memiliki total participation terhadap PRODUK

Partial Participation (Optional / Opsional)

Instance dari entity BOLEH tidak berpartisipasi dalam relationship. Ada instance yang tidak memiliki relasi, dan itu diperbolehkan.

  • Di Chen notation: digambarkan dengan garis tunggal biasa
  • Di Crow's Foot: simbol di ujung garis mengandung lingkaran o
  • Kata kunci: "boleh", "bisa", "mungkin", "opsional"
Contoh Partial Participation:
  "MAHASISWA boleh belum mengajukan skripsi" 
  → MAHASISWA memiliki partial participation terhadap SKRIPSI
  
  "PRODUK boleh belum masuk ke keranjang belanja manapun"
  → PRODUK memiliki partial participation terhadap KERANJANG
  
  "KARYAWAN boleh tidak punya jabatan manajerial"
  → KARYAWAN memiliki partial participation terhadap peran MANAJER

C.3.3 Menggabungkan Kardinalitas dan Participation

Dengan menggabungkan keduanya, kita bisa mengekspresikan constraint yang lebih kaya:

FORMAT NOTASI CHEN: (min, max)
  Di sisi setiap entity ditulis pasangan (minimum, maksimum):
  (0,1) = opsional, maksimal satu  → partial participation, one
  (1,1) = wajib, tepat satu        → total participation, one
  (0,N) = opsional, bisa banyak    → partial participation, many
  (1,N) = wajib, paling sedikit satu → total participation, many

CONTOH:
  MAHASISWA (1,N) ──mengambil── (0,N) MATA_KULIAH
  
  Dibaca dari MAHASISWA: "Satu mahasiswa mengambil minimal 1, maksimal N mata kuliah"
  Dibaca dari MATA_KULIAH: "Satu mata kuliah diambil minimal 0 (boleh kosong), maksimal N mahasiswa"

Tabel Kombinasi Kardinalitas + Participation:

KardinalitasParticipation AParticipation BContoh
1:1TotalTotalNegara ↔ Ibu Kota
1:1PartialPartialKaryawan ↔ Mobil Dinas
1:NTotal (N)Total (1)Karyawan ↔ Departemen
1:NPartial (N)Total (1)Produk ↔ Kategori
M:NTotalTotalMahasiswa ↔ MK (semester aktif)
M:NPartialPartialPenulis ↔ Artikel (bisa belum punya)

C.4 Materi 3: Weak Entity dalam ERD

C.4.1 Recap: Definisi Weak Entity

Dari pertemuan 3, kita ingat bahwa weak entity adalah entity yang:

  • Tidak memiliki atribut yang bisa menjadi identifier unik secara mandiri
  • Bergantung pada identifying entity (strong entity) untuk keberadaan dan identitasnya
  • Memiliki partial key (discriminator) — atribut yang unik hanya dalam konteks entity induknya

C.4.2 Komponen Weak Entity dalam ERD

Dalam Chen notation, weak entity memiliki representasi khusus:

KOMPONEN WEAK ENTITY DI CHEN NOTATION:

1. WEAK ENTITY → Double Rectangle (kotak ganda)
   ╔══════════════╗
   ║ NAMA_ENTITY  ║
   ╚══════════════╝

2. IDENTIFYING RELATIONSHIP → Double Diamond (berlian ganda)
   ╔═══════════════╗
   ║  nama_relasi  ║
   ╚═══════════════╝

3. PARTIAL KEY → Atribut dengan nama bergaris putus-putus di bawah
   ╭───────────╮
   │ nama_attr │
   ╰───────────╯
    ╌╌╌╌╌╌╌╌╌╌╌ (dashed underline)

4. Garis penghubung ke identifying entity selalu TOTAL PARTICIPATION
   (double line dari weak entity ke identifying relationship)

Contoh Lengkap — PESANAN dan ITEM_PESANAN:

Narasi: 
  "Setiap pesanan terdiri dari satu atau lebih item.
   Setiap item hanya ada dalam konteks satu pesanan tertentu.
   Item diidentifikasi dengan nomor urut dalam pesanan tersebut
   (item ke-1, ke-2, ke-3, dst.)."

ERD (Chen Notation):

╭─────────────╮  ╭──────────╮  ╭──────────╮
│ ID_Pesanan  │  │ Tanggal  │  │  Status  │
╰──────┬──────╯  ╰────┬─────╯  ╰────┬─────╯
       │              │              │
  ┌────┴──────────────┴──────────────┴────┐
  │              PESANAN                  │ ← Strong Entity
  └────────────────────┬──────────────────┘
                       ║ 1    ← total participation
                  ╔════╬════╗
                  ║  berisi ║  ← Identifying Relationship (double diamond)
                  ╚════╬════╝
                       ║ N    ← total participation dari ITEM_PESANAN
  ╔════════════════════╬═══════════════════╗
  ║          ITEM_PESANAN                  ║  ← Weak Entity (double rectangle)
  ╚════════════════════╬═══════════════════╝
       │               │              │
╭──────────╮  ╭────────────╮  ╭────────────╮
│ Nomor_   │  │ ID_Produk  │  │  Kuantitas │
│ Urut_Item│  │            │  │            │
╰──────────╯  ╰────────────╯  ╰────────────╯
 ╌╌╌╌╌╌╌╌╌╌ (partial key)

Partial Key: Nomor_Urut_Item
  → Dalam Pesanan #001: Item ke-1, Item ke-2, Item ke-3
  → Dalam Pesanan #002: Item ke-1, Item ke-2 (BERBEDA dengan di atas!)
  → Identifier lengkap: (ID_Pesanan, Nomor_Urut_Item)

Contoh Lain Weak Entity:

1. TANGGUNGAN (Weak) bergantung pada KARYAWAN (Strong)
   Partial Key: Nama_Tanggungan
   Identifier: (ID_Karyawan, Nama_Tanggungan)
   
   → "Anak bernama 'Budi' dari Karyawan ID=K001" ≠ 
     "Anak bernama 'Budi' dari Karyawan ID=K002"

2. RUANG (Weak) bergantung pada GEDUNG (Strong)
   Partial Key: Nomor_Ruang
   Identifier: (ID_Gedung, Nomor_Ruang)
   
   → "Ruang 101 di Gedung A" ≠ "Ruang 101 di Gedung B"

3. PERTANYAAN (Weak) bergantung pada KUIS (Strong)
   Partial Key: Nomor_Soal
   Identifier: (ID_Kuis, Nomor_Soal)
   
   → "Soal no. 5 pada Kuis UTS" ≠ "Soal no. 5 pada Kuis UAS"

C.4.3 Aturan Penting Weak Entity

✅ ATURAN YANG HARUS DIPERHATIKAN:

1. Weak entity selalu memiliki TOTAL PARTICIPATION terhadap 
   identifying entity (karena tanpa entity induk, weak entity 
   tidak bisa eksis).

2. Garis dari weak entity ke identifying relationship 
   digambar GANDA (double line) untuk menunjukkan total participation.

3. Jika identifying entity dihapus (DELETE), semua weak entity 
   yang bergantung padanya ikut terhapus (CASCADE DELETE).
   Contoh: Hapus Pesanan → hapus semua Item_Pesanan

4. Satu weak entity bisa bergantung pada lebih dari satu 
   identifying entity (dalam kasus ternary identifying relationship).

C.5 Materi 4: Generalisasi dan Spesialisasi (Hierarki ISA)

C.5.1 Konsep Dasar

Generalisasi dan Spesialisasi adalah dua cara pandang terhadap hierarki entity yang saling berlawanan arah:

  • Spesialisasi (top-down): Mulai dari entity umum (supertype), kemudian dibuat subtype yang lebih spesifik. "Dari ORANG, kita turunkan MAHASISWA dan DOSEN."
  • Generalisasi (bottom-up): Mulai dari entity spesifik, kemudian diidentifikasi kesamaan dan digabung ke supertype. "MAHASISWA dan DOSEN memiliki banyak kesamaan — kita buat supertype ORANG."

Hasil akhirnya sama: hierarki ISA (IS-A), yang menyatakan bahwa "MAHASISWA IS-A ORANG" dan "DOSEN IS-A ORANG".

C.5.2 Konsep Inheritance

Dalam hierarki ISA, subtype mewarisi (inherits) semua atribut dan relationship dari supertype-nya. Subtype kemudian menambahkan atribut dan relationship spesifik miliknya sendiri.

CONTOH:

ORANG (Supertype)
├── Atribut: NIK, Nama, Tanggal_Lahir, Jenis_Kelamin, Alamat
├── Relationship: bertempat_tinggal_di KOTA

  ISA  ┌─────────────────────────────┐
       │                             │
MAHASISWA (Subtype)            DOSEN (Subtype)
├── Mewarisi: NIK, Nama,        ├── Mewarisi: NIK, Nama,
│            Tgl_Lahir, dll.    │            Tgl_Lahir, dll.
├── Tambahan: NIM, Prodi,       ├── Tambahan: NIP, Spesialisasi,
│            Tahun_Masuk, IPK   │            Jabatan_Fungsional
└── Tambahan rel: mengambil MK  └── Tambahan rel: mengampu MK

C.5.3 Constraint Hierarki ISA

Ada dua dimensi constraint yang perlu ditentukan untuk setiap hierarki ISA:

Dimensi 1: Disjoint vs Overlapping

DISJOINT (exclusive / saling eksklusif):
  Satu instance HANYA bisa menjadi anggota dari SATU subtype.
  
  Contoh: 
  PRODUK → { PRODUK_FISIK, PRODUK_DIGITAL }
  Sebuah produk tidak bisa sekaligus fisik dan digital.
  
  Notasi di ERD: "d" di dalam lingkaran pada hierarki ISA

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

OVERLAPPING (non-exclusive / bisa tumpang tindih):
  Satu instance BISA menjadi anggota dari LEBIH DARI SATU subtype.
  
  Contoh:
  ORANG → { MAHASISWA, DOSEN, STAF }
  Seseorang bisa sekaligus berstatus mahasiswa DAN dosen tidak tetap.
  
  Contoh lain:
  KARYAWAN → { INSINYUR, MANAJER }
  Seorang insinyur senior bisa merangkap sebagai manajer tim.
  
  Notasi di ERD: "o" di dalam lingkaran pada hierarki ISA

Dimensi 2: Total vs Partial Specialization

TOTAL SPECIALIZATION (complete):
  Setiap instance supertype HARUS menjadi anggota minimal satu subtype.
  Tidak ada instance supertype yang "tidak punya subtype".
  
  Contoh:
  ORANG → { LAKI_LAKI, PEREMPUAN }
  Setiap orang PASTI adalah salah satu (atau keduanya dalam kasus khusus).
  
  AKUN → { AKUN_TABUNGAN, AKUN_GIRO, AKUN_DEPOSITO }
  Setiap akun bank pasti memiliki tipe tertentu.
  
  Notasi: Garis ganda dari supertype ke lingkaran ISA

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

PARTIAL SPECIALIZATION (incomplete):
  Instance supertype BOLEH tidak memiliki subtype.
  Ada instance yang hanya ada di level supertype saja.
  
  Contoh:
  ORANG → { MAHASISWA, DOSEN }
  Ada orang (misalnya: staf kebersihan) yang bukan mahasiswa maupun dosen.
  
  KENDARAAN → { MOBIL, MOTOR }
  Ada kendaraan lain (sepeda, kapal) yang tidak tercakup subtype manapun.
  
  Notasi: Garis tunggal dari supertype ke lingkaran ISA

Representasi ERD Hierarki ISA:

NOTASI HIERARKI ISA (Chen-style):

              ┌─────────────┐
              │    ORANG    │  ← Supertype
              └──────┬──────┘

              ╭──────┴──────╮
              │  ISA / {o}  │  → "o" = overlapping
              ╰──────┬──────╯  → garis ganda = total specialization
                ╔════╝════╗
                ║         ║
         ┌──────┴──┐  ┌───┴──────┐
         │MAHASISWA│  │  DOSEN   │  ← Subtypes
         └─────────┘  └──────────┘

EMPAT KOMBINASI CONSTRAINT:
  {d, total}    = Disjoint + Total    → Setiap instance masuk tepat satu subtype
  {d, partial}  = Disjoint + Partial  → Instance boleh tidak punya subtype, jika punya hanya satu
  {o, total}    = Overlapping + Total → Setiap instance masuk minimal satu subtype (bisa lebih)
  {o, partial}  = Overlapping + Partial → Instance boleh tidak punya subtype, jika punya bisa lebih

Contoh Nyata Empat Kombinasi:

{d, total} — AKUN BANK:
  Setiap akun PASTI salah satu tipe, tidak bisa dua tipe sekaligus.
  AKUN → { TABUNGAN | GIRO | DEPOSITO }

{d, partial} — KENDARAAN (di sistem transportasi umum):
  Tidak semua kendaraan terdaftar sebagai kendaraan umum.
  Jika terdaftar, hanya satu tipe.
  KENDARAAN → { BUS | ANGKOT | OJEK_ONLINE }

{o, total} — PERAN SISTEM:
  Setiap user PASTI punya minimal satu peran, bisa punya lebih.
  USER → { ADMIN | PENULIS | PEMBACA }

{o, partial} — ORANG dalam konteks akademik:
  Seseorang boleh tidak punya peran di sistem.
  Jika punya, bisa lebih dari satu.
  ORANG → { MAHASISWA | DOSEN | ALUMNI }

C.6 Materi 5: Best Practices Menggambar ERD

Sebuah ERD yang benar secara teknis belum tentu baik secara komunikasi. Best practices berikut membantu menghasilkan ERD yang tidak hanya akurat, tetapi juga mudah dibaca dan dipelihara.

C.6.1 Konvensi Penamaan

ENTITY:
  ✓ Gunakan kata benda tunggal (singular noun)
  ✓ Huruf kapital semua atau CamelCase
  ✓ Deskriptif dan tidak ambigu
  ✓ Hindari singkatan yang tidak umum
  
  Baik:   MAHASISWA, PRODUK, PESANAN, JADWAL_KELAS
  Buruk:  mhs, Prods, order, JdwlKls

RELATIONSHIP:
  ✓ Gunakan kata kerja aktif (verb phrase)
  ✓ Bisa dibaca dari kiri ke kanan
  ✓ Mencerminkan makna bisnis yang sesungguhnya
  
  Baik:   mengambil, membuat, berisi, mengampu, mendaftar_ke
  Buruk:  hubungan, relasi, terkait, ada_di

ATRIBUT:
  ✓ Kata benda, deskriptif, tidak ambigu
  ✓ Hindari nama yang terlalu generik
  ✓ Konsisten dalam penggunaan bahasa (Indonesia atau Inggris, pilih satu)
  
  Baik:   tanggal_lahir, harga_satuan, status_pesanan
  Buruk:  tgl, harga, status (terlalu generik)

C.6.2 Layout dan Keterbacaan

TIPS LAYOUT ERD:
  
  ✓ Minimalkan garis silang (crossing lines)
    → Tempatkan entity yang sering berhubungan berdekatan
    → Gunakan fitur auto-layout pada tools sebagai titik awal
  
  ✓ Hierarchy dari atas ke bawah atau kiri ke kanan
    → Entity utama/pusat di tengah
    → Entity pendukung di sekitarnya
  
  ✓ Ukuran dan jarak yang konsisten
    → Semua entity dengan ukuran yang seragam
    → Jarak antar entity yang cukup agar tidak berjubel
  
  ✓ Label yang terbaca
    → Font cukup besar untuk dibaca
    → Hindari label yang terpotong
  
  ✓ Gunakan warna dengan bijak (opsional)
    → Satu warna per kategori entity (mis: hijau = master, biru = transaksi)
    → Jangan terlalu banyak warna — menggangu, bukan membantu

C.6.3 Kesalahan Umum yang Harus Dihindari

❌ KESALAHAN 1: Atribut yang Seharusnya Menjadi Entity
   
   SALAH:
   PESANAN ──── atribut: Nama_Produk, Harga_Produk, Stok_Produk
   
   BENAR:
   PESANAN ──── PRODUK (relasi M:N dengan ITEM_PESANAN sebagai bridge)
   
   Tanda bahaya: Jika sebuah "atribut" punya sub-atributnya sendiri 
   atau punya relasi ke hal lain → kemungkinan besar harus jadi entity.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

❌ KESALAHAN 2: Entity yang Seharusnya Menjadi Atribut
   
   SALAH: Membuat entity STATUS dengan instance: "Aktif", "Non-aktif", "Cuti"
   
   BENAR: STATUS adalah atribut (enum) di entity MAHASISWA
   
   Tanda bahaya: Jika entity hanya punya 1-2 atribut dan nilainya 
   terbatas (enum) → mungkin lebih tepat sebagai atribut.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

❌ KESALAHAN 3: Relationship Redundan
   
   SALAH:
   MAHASISWA ──mengambil── MATA_KULIAH
   MAHASISWA ──belajar──   MATA_KULIAH  (dua relationship untuk hal yang sama!)
   
   BENAR: Hanya satu relationship yang mewakili koneksi tersebut.
   Jika ada perbedaan makna → definisikan dengan jelas dan beri nama berbeda.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

❌ KESALAHAN 4: Kardinalitas Terbalik
   
   SALAH: KARYAWAN (1) ── bekerja_di ── (N) DEPARTEMEN
   (menyatakan: satu karyawan bekerja di banyak departemen — umumnya tidak benar)
   
   BENAR: KARYAWAN (N) ── bekerja_di ── (1) DEPARTEMEN
   (satu departemen punya banyak karyawan, satu karyawan di satu departemen)
   
   Tip: Selalu verifikasi dengan "two-question method" (lihat C.3.1)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

❌ KESALAHAN 5: Mengabaikan Participation Constraint
   
   SALAH: Menggambar semua garis sebagai partial participation tanpa dipikirkan
   
   BENAR: Setiap sisi relationship harus dipikirkan apakah total atau partial
   berdasarkan business rules dari pertemuan 2.
   
   Contoh: "Setiap pesanan HARUS memiliki minimal 1 item" 
   → PESANAN memiliki total participation terhadap ITEM_PESANAN.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

❌ KESALAHAN 6: Lupa Relationship Attribute
   
   SALAH: Menaruh "Nilai" sebagai atribut MAHASISWA atau MATA_KULIAH
   
   BENAR: "Nilai" adalah atribut dari relationship MENGAMBIL antara 
   MAHASISWA dan MATA_KULIAH, karena nilai baru ada saat ada kombinasi 
   "mahasiswa tertentu mengambil MK tertentu".

C.7 Studi Kasus Komprehensif: ERD Sistem E-Commerce "BatikNusantara"

C.7.1 Narasi Bisnis

BatikNusantara adalah platform jual-beli online produk batik UMKM. Penjual adalah UMKM yang mendaftar dan menjual produk mereka. Pembeli adalah konsumen yang mendaftar dan membeli produk. Setiap produk dikategorikan dan bisa memiliki beberapa foto. Pembeli bisa memasukkan produk ke keranjang belanja sebelum checkout. Setiap pesanan bisa berisi banyak item produk. Setelah transaksi selesai, pembeli bisa memberikan ulasan (rating dan teks) untuk produk yang dibeli.

C.7.2 Daftar Entity, Atribut, dan Relationship (dari hasil pertemuan 3)

ENTITY:
  PEMBELI       - ID_Pembeli (PK), Nama, Email, Nomor_HP, Alamat
  PENJUAL       - ID_Penjual (PK), Nama_Toko, Email, Nomor_HP, NPWP
  PRODUK        - ID_Produk (PK), Nama, Deskripsi, Harga, Stok
  KATEGORI      - ID_Kategori (PK), Nama_Kategori
  FOTO_PRODUK   - (weak entity) Nomor_Urut (partial key), URL, Keterangan
  PESANAN       - ID_Pesanan (PK), Tanggal, Status, Total_Bayar
  ITEM_PESANAN  - (weak entity) Nomor_Item (partial key), Qty, Harga_Saat_Pesan
  ULASAN        - ID_Ulasan (PK), Rating, Teks_Ulasan, Tanggal

RELATIONSHIP:
  PEMBELI     – membuat     – PESANAN          (1:N, total dari PESANAN)
  PESANAN     – berisi      – ITEM_PESANAN     (1:N, weak entity)
  PRODUK      – masuk_ke    – ITEM_PESANAN     (1:N, total dari ITEM_PESANAN)
  PENJUAL     – menjual     – PRODUK           (1:N, total dari PRODUK)
  PRODUK      – dikategorikan_di – KATEGORI   (M:N)
  PRODUK      – memiliki    – FOTO_PRODUK      (1:N, weak entity)
  PEMBELI     – menulis     – ULASAN           (1:N)
  PRODUK      – menerima    – ULASAN           (1:N)

C.7.3 Representasi ERD Tekstual (Chen Notation)

DIAGRAM ERD BATIK NUSANTARA (tekstual/ASCII-art):

╭───────╮ ╭───────╮ ╭──────╮     ╭────────────╮ ╭────────────╮
│Email  │ │ Nama  │ │ Stok │     │ID_Penjual  │ │Nama_Toko   │
╰───┬───╯ ╰───┬───╯ ╰───┬──╯     ╰─────┬──────╯ ╰─────┬──────╯
    │         │          │               │               │
┌───┴─────────┴──────────┴────┐   ┌──────┴───────────────┴──┐
│           PRODUK            │   │          PENJUAL         │
└───────────────┬─────────────┘   └──────────────┬───────────┘
         ╭──────┤ 1                               │ 1
         │      │                          ╱──────┴──╲
    ╱────┴──╲   └──────────────────────────╲  menjual ╱
    ╲dikate-╱                               ╱──────────╲
    ╱ gorikan╲   ← M:N                           ║ N (total)
    ╲        ╱                             ┌──────╨───────────┐
    ╱────────╲                             │      PRODUK      │
         │ N                               └──────────────────┘
┌────────┴─────────┐                        [dilanjutkan di bawah]
│     KATEGORI     │
└──────────────────┘


[PRODUK – lanjutan koneksi]

PRODUK (1) ──memiliki──(N, total)── ╔══════════╗
                                    ║FOTO_PRODUK║ ← weak entity
                                    ╚══════════╝

PRODUK (1) ──menerima──(N)── ULASAN ──menulis──(N) ── PEMBELI (1)

PEMBELI (1) ──membuat──(N, total)── PESANAN ──berisi──(N, total)── ╔══════════════╗
                                                                    ║ ITEM_PESANAN ║ ← weak entity
                                                                    ╚══════════════╝
                                                                           ║(total)
                                                                    PRODUK ──masuk_ke──(N)

C.7.4 Crow's Foot Representation

CROW'S FOOT — ENTITAS DAN RELASINYA:

┌─────────────┐         ┌─────────────┐
│  KATEGORI   │         │   PENJUAL   │
├─────────────┤         ├─────────────┤
│PK│id_kat    │         │PK│id_penjual│
│  │nama_kat  │         │  │nama_toko │
└──────┬──────┘         │  │email     │
       │                └──────┬──────┘
       │ o<                    │ ||
       │                       │ |<
┌──────┴──────────────────┐    │
│         PRODUK          │◄───┘
├─────────────────────────┤
│PK│id_produk             │
│  │nama                  │         ┌──────────────┐
│  │deskripsi             │         │  FOTO_PRODUK │ (weak)
│  │harga                 │||──────|<├──────────────┤
│  │stok                  │         │PK│id_foto     │
│FK│id_penjual            │         │  │nomor_urut  │
└──────┬───────────────┬──┘         │  │url         │
       │               │            └──────────────┘
       │||             │||
       │|<             │|<
       │               │
┌──────┴──────┐  ┌──────┴──────┐
│   ULASAN    │  │ ITEM_PESANAN│ (weak)
├─────────────┤  ├─────────────┤
│PK│id_ulasan │  │PK│id_item   │
│  │rating    │  │  │nomor_item│
│  │teks      │  │  │qty       │
│  │tanggal   │  │  │harga_saat│
│FK│id_pembeli│  │FK│id_pesanan│
│FK│id_produk │  │FK│id_produk │
└──────┬──────┘  └──────┬──────┘
       │                │
       │ o<             │ ||
       │                │ |<
┌──────┴──────┐  ┌──────┴──────┐
│   PEMBELI   │  │   PESANAN   │
├─────────────┤  ├─────────────┤
│PK│id_pembeli│  │PK│id_pesanan│
│  │nama      │  │  │tanggal   │
│  │email     │  │  │status    │
│  │nomor_hp  │  │  │total_bayar│
│  │alamat    │  │FK│id_pembeli│
└─────────────┘  └─────────────┘

D. PRAKTIKUM TERBIMBING

D.1 Latihan: Baca dan Interpretasi ERD (Berpasangan, 10 menit)

Perhatikan diagram ERD berikut (tekstual) dan jawab pertanyaan di bawahnya:

ERD SISTEM PERPUSTAKAAN DIGITAL

ANGGOTA  ||────────────o<  PEMINJAMAN  >o────────────||  BUKU
              "melakukan"                 "melibatkan"

PEMINJAMAN memiliki atribut: ID_Pinjam, Tgl_Pinjam, Tgl_Kembali, Status

BUKU memiliki: Kode_Buku (PK), Judul, Penulis, Tahun_Terbit
ANGGOTA memiliki: ID_Anggota (PK), Nama, Email, Status_Anggota

BUKU  ||──────────|<  EKSEMPLAR (weak entity)
         "memiliki"   Partial key: Nomor_Eksemplar

PENULIS  o<─────────o<  BUKU
              "menulis"

Pertanyaan:

  1. Bisa kah seorang ANGGOTA yang belum pernah meminjam tetap terdaftar di sistem? Tunjukkan simbol yang mendukung jawabanmu!
  2. Bisa kah satu BUKU tidak ditulis oleh PENULIS manapun di sistem? Tunjukkan simbol yang mendukung!
  3. Apa makna bisnis dari EKSEMPLAR sebagai weak entity? Mengapa EKSEMPLAR tidak bisa berdiri sendiri?
  4. Sebuah buku yang sama ditulis oleh tiga penulis berbeda. Penulis yang sama juga menulis buku lain. Apakah kardinalitas PENULIS o<──o< BUKU sudah benar? Jelaskan!
  5. Jika seorang ANGGOTA dihapus dari sistem, apa yang terjadi dengan data PEMINJAMAN-nya? Apa implikasi terhadap desain?

D.2 Praktikum: Gambar ERD dengan Tools (Individual, 25 menit)

Instruksi: Gunakan Draw.io untuk menggambar ERD dari narasi berikut. Gunakan Crow's Foot notation.


NARASI: Sistem Manajemen Klinik "Medika Prima"

Klinik Medika Prima memiliki beberapa dokter dengan spesialisasi masing-masing. Pasien mendaftar dengan data diri lengkap dan mendapatkan nomor rekam medis. Setiap kunjungan pasien ke dokter dicatat sebagai satu sesi pemeriksaan. Dalam satu kunjungan, dokter bisa meresepkan beberapa obat dengan dosis dan aturan pakai tertentu. Stok obat dikelola oleh apotek klinik.

Ketentuan bisnis yang relevan:

  • Setiap dokter harus terdaftar di minimal satu spesialisasi
  • Satu pasien bisa ditangani oleh banyak dokter (di kunjungan berbeda)
  • Satu dokter bisa menangani banyak pasien
  • Setiap kunjungan PASTI ditangani oleh tepat satu dokter
  • Setiap kunjungan PASTI milik tepat satu pasien
  • Resep obat hanya ada dalam konteks satu kunjungan (weak entity)
  • Satu obat bisa diresepkan di banyak kunjungan berbeda
  • Kunjungan boleh tanpa resep (dokter hanya konsultasi)

Yang Harus Digambar:

  1. Semua entity (strong dan weak) dengan atributnya
  2. Semua relationship dengan nama yang tepat
  3. Kardinalitas yang benar di setiap sisi relationship
  4. Participation constraint (mandatory/optional) yang sesuai business rules
  5. Weak entity dengan identifying relationship

Panduan Pengerjaan Bertahap:

LANGKAH 1 (3 menit): Identifikasi semua entity dari narasi
  Entity kandidat: ________________________________

LANGKAH 2 (3 menit): Tentukan mana strong dan weak entity
  Weak entity: ____________________________________
  Alasan: _________________________________________

LANGKAH 3 (5 menit): Tentukan atribut dan PK setiap entity

LANGKAH 4 (5 menit): Tentukan semua relationship + kardinalitas

LANGKAH 5 (9 menit): Gambar di tools dan rapikan layout

E. EVALUASI DAN PENILAIAN

E.1 Kuis Penutup (10 menit, bobot partisipasi)

  1. Gambarkan simbol-simbol berikut dalam Chen Notation: (a) weak entity, (b) multivalued attribute, (c) derived attribute, (d) identifying relationship, (e) key attribute!

  2. Dalam Crow's Foot notation, apa perbedaan antara simbol || dan |? Dan apa perbedaan antara o< dan |<? Berikan contoh nyata untuk masing-masing!

  3. Perhatikan business rule berikut: "Setiap karyawan baru HARUS segera ditempatkan di satu divisi. Namun, sebuah divisi boleh sementara tidak memiliki karyawan (misalnya divisi baru yang belum diisi)." Gambarkan kardinalitas dan participation constraint yang tepat dalam Crow's Foot!

  4. Sebuah platform music streaming memiliki entity LAGU dan PLAYLIST. Satu lagu bisa masuk ke banyak playlist, dan satu playlist berisi banyak lagu. Atribut apa yang paling tepat dijadikan relationship attribute? Jelaskan mengapa atribut tersebut tidak bisa diletakkan di LAGU atau PLAYLIST!

  5. Kapan kita perlu menggunakan hierarki ISA overlapping alih-alih disjoint? Berikan satu contoh domain bisnis yang memerlukan overlapping!

E.2 Tugas ERD (dikumpulkan sebelum pertemuan 5)

Judul: Perancangan ERD Sistem Pilihan

Konteks: Tugas ini adalah kelanjutan dari latihan identifikasi yang dikumpulkan setelah pertemuan 3. Mahasiswa akan menggambar ERD secara visual dari hasil identifikasi tersebut, dan memperbaiki/melengkapi jika ada kekurangan.

Ketentuan:

  1. Domain yang Digunakan: Domain yang sama dengan latihan pertemuan 3 (jika ingin ganti, konfirmasi ke dosen)

  2. Deliverable Utama — Diagram ERD:

    • Gunakan salah satu notasi: Chen ATAU Crow's Foot (pilih satu, konsisten)
    • Gambar menggunakan Draw.io atau MySQL Workbench
    • Simpan/export dalam format PNG atau PDF
    • Diagram harus mencakup:
      • Semua entity yang relevan (minimal 5 entity)
      • Atribut untuk setiap entity (minimal 4 atribut per entity)
      • Primary key yang jelas
      • Semua relationship dengan nama dan kardinalitas yang tepat
      • Participation constraint (total/partial) yang sesuai business rules
      • Weak entity jika ada dalam domain tersebut
      • Hierarki ISA jika ada dalam domain tersebut
  3. Deliverable Pendukung — Dokumen Penjelasan (1-2 halaman):

    • Daftar keputusan desain yang dibuat dan alasannya
    • Minimal 3 pertanyaan: "Mengapa kardinalitas X:Y untuk relationship Z?"
    • Daftar business rules yang mendasari setiap participation constraint
  4. Reflection (setengah halaman):

    • Apa perbedaan paling signifikan antara identifikasi tekstual (pertemuan 3) dengan menggambar ERD visual (pertemuan 4)?
    • Apakah ada entity atau relationship yang kamu ubah saat menggambar? Mengapa?

Format Pengumpulan:

  • Satu file PDF (gabungkan diagram + dokumen penjelasan)
  • Nama file: ERD_[NIM]_[Nama]_[Domain].pdf
  • Upload ke Ngaji UIN Gusdur sebelum jam kuliah pertemuan 5

Bobot: Bagian dari nilai Tugas Individu (komponen ERD, 25% dari total nilai)


F. PERSIAPAN PERTEMUAN 5

F.1 Yang Akan Dipelajari

Pertemuan 5 adalah Transformasi Conceptual Model ke Logical Model — kita akan mempelajari algoritma step-by-step untuk mengubah ERD (model konseptual) menjadi skema tabel relasional (model logikal). Ini adalah langkah penting yang menjembatani "gambar" ERD dengan "tabel" database yang sesungguhnya.

Topik utama pertemuan 5:

  • Mapping strong entity → tabel
  • Mapping relationship 1:1, 1:N, M:N → foreign key / junction table
  • Mapping weak entity → tabel
  • Mapping hierarki ISA → pilihan tabel (3 strategi)
  • Naming convention untuk primary key dan foreign key

F.2 Bacaan Wajib Sebelum Pertemuan 5

  • Elmasri & Navathe, Chapter 9: ER-to-Relational Mapping (baca Section 9.1 s.d. 9.6)
  • Hoberman, Chapter 5: Logical Data Model — Transformation Rules

F.3 Pertanyaan Pemantik

Bayangkan ERD yang sudah kamu buat untuk tugas pertemuan ini. Sekarang pikirkan:

  • Bagaimana relationship M:N antara dua entity direpresentasikan dalam tabel? (Petunjuk: tidak bisa langsung dengan satu kolom saja)
  • Bagaimana atribut multivalued direpresentasikan dalam tabel?
  • Untuk hierarki ISA, apakah subtype menjadi tabel terpisah, atau digabung ke satu tabel?

G. REFERENSI

G.1 Referensi Utama

  1. Elmasri, R. & Navathe, S. B. (2015). Fundamentals of Database Systems (7th Edition). Pearson. ISBN: 978-0133970777

    • Chapter 3: Data Modeling Using the Entity-Relationship Model (bacaan utama — notasi ERD, weak entity, ISA)
    • Section 3.3: Attributes
    • Section 3.4: Relationship Types
    • Section 3.7: Extended ER Features (Generalization, Specialization)
  2. Hoberman, S. (2009). Data Modeling Made Simple (2nd Edition). Technics Publications. ISBN: 978-0977140060

    • Chapter 5: Logical Data Model
    • Chapter 6: Relationships and Cardinality
  3. Connolly, T. & Begg, C. (2014). Database Systems: A Practical Approach to Design, Implementation, and Management (6th Edition). Pearson.

    • Chapter 11: Entity-Relationship Modeling (Chen & Crow's Foot notation)
    • Chapter 12: Enhanced Entity-Relationship Modeling (Generalization, Specialization)

G.2 Referensi Pendukung

  1. Simsion, G. & Witt, G. (2004). Data Modeling Essentials (3rd Edition). Morgan Kaufmann.

    • Chapter 5: Relationships — Cardinality and Optionality
  2. Chen, P. P. (1976). "The Entity-Relationship Model — Toward a Unified View of Data." ACM Transactions on Database Systems, 1(1), 9–36. (Paper asli yang memperkenalkan ERD — referensi historis penting)

G.3 Referensi Online dan Tools

  1. Lucidchart. "Entity Relationship Diagram Tutorial & Examples" — https://www.lucidchart.com/pages/er-diagrams (opens in a new tab)
  2. ERDPlus. "Documentation and Tutorials" — https://erdplus.com/faq (opens in a new tab)
  3. draw.io. "ER Diagram Template and Shapes" — https://app.diagrams.net (opens in a new tab)
  4. Crow's Foot Notation Guide. "Database Diagram Symbols" — https://www.vertabelo.com/blog/crow-s-foot-notation/ (opens in a new tab)
  5. Redgate. "Chen ERD Notation" — https://www.red-gate.com/blog/chen-erd-notation/ (opens in a new tab) (penjelasan lengkap simbol Chen beserta ilustrasi visual)
  6. Redgate. "Crow's Foot Notation" — https://www.red-gate.com/blog/crow-s-foot-notation/ (opens in a new tab) (penjelasan simbol Crow's Foot beserta sejarah dan ilustrasi visual)

G.4 Video Resources

  1. Lucidchart — "Entity Relationship Diagram (ERD) Tutorial — Part 1 & 2" (YouTube)
  2. freeCodeCamp — "Database Design Course" — Bagian ERD (YouTube, menit 1:30 s.d. 3:00)
  3. Database Star — "Crow's Foot Notation" (YouTube — penjelasan visual sangat baik)

H. LAMPIRAN

Lampiran A: Lembar Kerja Praktikum Pertemuan 4


LEMBAR KERJA PRAKTIKUM ERD Nama: ___________________________ NIM: _______________ Tanggal: ________________________


BAGIAN 1: Latihan Baca ERD — Sistem Perpustakaan Digital

Jawab pertanyaan berikut berdasarkan ERD di bagian D.1:

  1. Bisakah anggota yang belum pernah meminjam tetap terdaftar? Jawaban: ___________________________________________________ Simbol yang mendukung: _____________________________________

  2. Bisakah satu buku tidak ditulis penulis manapun? Jawaban: ___________________________________________________ Simbol yang mendukung: _____________________________________

  3. Makna bisnis EKSEMPLAR sebagai weak entity: Jawaban: ___________________________________________________

  4. Apakah kardinalitas PENULIS–BUKU sudah benar? Jelaskan: Jawaban: ___________________________________________________

  5. Jika anggota dihapus, apa yang terjadi pada PEMINJAMAN? Jawaban: ___________________________________________________ Implikasi desain: __________________________________________


BAGIAN 2: Identifikasi Sebelum Praktikum — Sistem Klinik "Medika Prima"

Entity yang teridentifikasi:

NoNama EntityStrong/Weak?Primary Key / Partial Key
1
2
3
4
5
6

Relationship yang teridentifikasi:

NoEntity ANama RelationshipEntity BKard.Part. APart. B
1Total/PartialTotal/Partial
2
3
4
5

Apakah ada weak entity? Jelaskan:


Apakah ada hierarki ISA? Jelaskan:



BAGIAN 3: Catatan Selama Praktikum

Tools yang digunakan: ________________________________________

Kesulitan yang ditemui:



Keputusan desain yang dibuat (dan alasannya):





Lampiran B: Tabel Referensi Cepat — Simbol ERD

╔══════════════════════════════════════════════════════════════════╗
║           REFERENSI CEPAT SIMBOL ERD — DUA NOTASI               ║
╠═════════════════════╦════════════════════════════════════════════╣
║ KOMPONEN            ║ CHEN           │ CROW'S FOOT               ║
╠═════════════════════╬════════════════╪════════════════════════════╣
║ Strong Entity       ║ Rectangle      │ Rectangle dengan list attr ║
║ Weak Entity         ║ Double Rect    │ Rectangle (label berbeda)  ║
║ Relationship        ║ Diamond        │ Garis + label              ║
║ Identifying Rel.    ║ Double Diamond │ Garis (ke weak entity)     ║
║ Attribute           ║ Oval           │ Baris dalam rectangle      ║
║ Multivalued Attr.   ║ Double Oval    │ {braces} atau catatan      ║
║ Derived Attribute   ║ Dashed Oval    │ "/" prefix atau catatan    ║
║ Key Attribute       ║ Underlined     │ "PK" label                 ║
║ Partial Key         ║ Dashed Under.  │ "PK" bersama FK            ║
╠═════════════════════╬════════════════╪════════════════════════════╣
║ KARDINALITAS        ║                │                            ║
║ One (tepat satu)    ║ 1              │ |  (garis tegak)           ║
║ Many                ║ N atau M       │ <  (kaki gagak)            ║
║ Zero or One         ║ (0,1)          │ o| (lingkaran + tegak)     ║
║ One or Many         ║ (1,N)          │ |< (tegak + gagak)         ║
║ Zero or Many        ║ (0,N)          │ o< (lingkaran + gagak)     ║
║ Exactly One         ║ (1,1)          │ || (dua garis tegak)       ║
╠═════════════════════╬════════════════╪════════════════════════════╣
║ PARTICIPATION       ║                │                            ║
║ Total (mandatory)   ║ Double line    │ Tidak ada "o" di simbol    ║
║ Partial (optional)  ║ Single line    │ Ada "o" di simbol          ║
╠═════════════════════╬════════════════╪════════════════════════════╣
║ ISA HIERARCHY       ║                │                            ║
║ Disjoint            ║ {d} dalam      │ Label atau catatan "d"     ║
║ Overlapping         ║ {o} dalam      │ Label atau catatan "o"     ║
║ Total Spec.         ║ Double line    │ Garis ganda ke ISA         ║
║ Partial Spec.       ║ Single line    │ Garis tunggal ke ISA       ║
╚═════════════════════╩════════════════╧════════════════════════════╝

Lampiran C: ERD Review Checklist

Gunakan checklist ini untuk memvalidasi ERD sebelum dikumpulkan:

Entity Review:

  • Setiap entity diberi nama kata benda tunggal yang deskriptif
  • Setiap entity memiliki definisi bisnis yang jelas
  • Strong entity vs weak entity sudah dibedakan dengan benar
  • Tidak ada entity yang sebenarnya lebih tepat menjadi atribut
  • Tidak ada atribut yang sebenarnya harus menjadi entity

Attribute Review:

  • Setiap entity memiliki primary key yang ditandai jelas
  • Primary key stabil, unik, dan tidak null
  • Atribut multivalued ditandai (double oval / catatan)
  • Atribut derived ditandai (dashed oval / prefix)
  • Atribut composite diurai jika sub-komponennya penting

Relationship Review:

  • Setiap relationship diberi nama (kata kerja aktif, bisa dibaca)
  • Kardinalitas di kedua sisi sudah ditentukan dan diverifikasi
  • Participation constraint (total/partial) ditentukan dan dijustifikasi
  • Relationship attribute dicantumkan jika ada
  • Tidak ada relationship redundan

Weak Entity Review:

  • Weak entity menggunakan simbol yang benar (double rect / double diamond)
  • Partial key teridentifikasi
  • Identifying entity sudah terhubung dengan benar
  • Total participation dari weak entity ke identifying entity

ISA Hierarchy Review:

  • Constraint disjoint/overlapping ditentukan
  • Constraint total/partial specialization ditentukan
  • Atribut yang diwarisi tidak diulang di subtype

Layout & Konsistensi:

  • Notasi konsisten (semua Chen ATAU semua Crow's Foot)
  • Naming convention konsisten sepanjang diagram
  • Layout rapi, garis silang diminimalkan
  • Semua label terbaca dengan jelas

Lampiran D: Panduan Singkat Menggunakan draw.io untuk ERD

LANGKAH-LANGKAH DASAR draw.io:

1. MULAI:
   Buka https://app.diagrams.net
   Pilih "Create New Diagram" → pilih "Blank Diagram"
   
2. TAMBAH SHAPE ERD:
   Di panel kiri, cari "Entity Relation" atau "ER Shapes"
   Atau gunakan: Extras → Edit Diagram (untuk import XML)

3. MEMBUAT ENTITY (Chen):
   Drag shape "Entity" (rectangle) ke kanvas
   Double-click untuk memberi nama

4. MEMBUAT ATTRIBUTE:
   Drag shape "Attribute" (ellipse) ke kanvas
   Hubungkan ke entity dengan "Connection" (klik tepi shape, tarik)

5. MEMBUAT RELATIONSHIP:
   Drag shape "Relationship" (diamond) ke kanvas
   Hubungkan ke entity di kedua sisi

6. MENAMBAH LABEL KARDINALITAS:
   Klik garis penghubung → tambah label di Connection Properties
   Atau: klik garis → kanan klik → "Edit Label"

7. EXPORT:
   File → Export As → PNG atau PDF

TIPS:
  • Gunakan Ctrl+Shift+H untuk auto-layout
  • Gunakan Ctrl+G untuk group entity dengan atributnya
  • Simpan sebagai .drawio untuk bisa diedit kembali
  • Aktifkan "Snap to Grid" untuk layout yang rapi

PENUTUP

Pertemuan 4 adalah jembatan antara identifikasi tekstual (pertemuan 3) dan komunikasi visual yang terstandar. ERD bukan hanya "gambar" — ini adalah bahasa teknis yang harus dipahami oleh semua pemangku kepentingan dalam proyek data, dari data scientist hingga database administrator.

Key Messages Pertemuan 4:

  1. Notasi ERD adalah bahasa universal pemodelan data — pelajari dengan serius karena akan digunakan sepanjang karier
  2. Kardinalitas dan participation constraint adalah representasi langsung dari business rules — jika business rules-nya salah, ERD-nya pun salah
  3. Weak entity dan hierarki ISA adalah konstruksi yang powerful untuk memodelkan realitas yang kompleks
  4. Diagram yang rapi dan konsisten adalah tanda profesionalisme — bukan sekadar estetika

Koneksi ke Proyek Semester: ERD yang dibuat dalam tugas pertemuan ini adalah tahap 2 dari proyek bertahap — Conceptual Model. Output ini akan langsung menjadi input untuk pertemuan 5 (transformasi ke Logical Model). Pastikan ERD-mu lengkap dan akurat sebelum pertemuan 5.

Preview Pertemuan 5: Di pertemuan 5, kita akan belajar algoritma transformasi ERD ke skema tabel relasional secara sistematis. Setiap jenis relationship (1:1, 1:N, M:N) dan setiap konstruksi khusus (weak entity, ISA) memiliki aturan transformasi yang berbeda-beda. Ini adalah langkah paling "teknis" dalam alur perancangan database.


Disusun oleh: Mohammad Reza Maulana, M.Kom Program Studi Sains Data Fakultas Ekonomi dan Bisnis Islam UIN K.H. Abdurrahman Wahid Pekalongan

Revisi: Februari 2026