Back to IF2240 Basis Data

Topic

Questions/Cues

  • Bagaimana memetakan Strong Entity Set?
  • Bagaimana memetakan Weak Entity Set?
  • Bagaimana memetakan Atribut Composite?
  • Bagaimana memetakan Atribut Multi-valued?
  • Bagaimana memetakan relasi Many-to-Many (N:M)?
  • Bagaimana cara optimal memetakan relasi One-to-Many (1:N)?
  • Bagaimana memetakan relasi Ternary?
  • Bagaimana memetakan Specialization/Generalization?

Aturan Pemetaan Entitas dan Atribut

Proses ini mengubah konsep visual dari ERD menjadi struktur tabel yang konkret.

  • Strong Entity Set:

    • Aturan: Setiap strong entity set menjadi sebuah tabel (relasi) dengan kolom-kolom yang sama persis dengan atribut-atributnya.
    • Contoh: Entitas course dengan atribut _course_id_, title, credits menjadi tabel course(course_id, title, credits).
  • Weak Entity Set:

    • Aturan: Setiap weak entity set menjadi sebuah tabel yang berisi semua atributnya, ditambah dengan Primary Key dari identifying entity sebagai Foreign Key. Gabungan dari Primary Key identifying entity dan discriminator dari weak entity akan menjadi Primary Key tabel baru ini.
  • Atribut Composite:

    • Aturan: Atribut composite “diratakan” (flattened out) dengan membuat kolom terpisah untuk setiap komponennya.
    • Contoh: Atribut name(first_name, last_name) pada entitas instructor akan menjadi dua kolom, first_name dan last_name, di dalam tabel instructor.
  • Atribut Multi-valued:

    • Aturan: Atribut multi-valued TIDAK menjadi kolom di tabel aslinya. Sebaliknya, ia dibuatkan menjadi tabel baru yang terpisah.
    • Tabel baru ini berisi Primary Key dari entitas asli (sebagai Foreign Key) dan satu kolom untuk atribut multi-valued itu sendiri.
    • Contoh: Atribut {phone_number} pada instructor menjadi tabel inst_phone(ID, phone_number).
  • Atribut Derived:

    • Aturan: Atribut ini diabaikan selama pembuatan skema fisik. Nilainya tidak disimpan, melainkan dihitung saat dibutuhkan, biasanya melalui view atau logika aplikasi.

Aturan Pemetaan Relationship Sets

  • Relasi Many-to-Many (N:M):

    • Aturan: Setiap relasi N:M menjadi sebuah tabel baru (disebut junction table).
    • Tabel ini minimal berisi Primary Key dari kedua entitas yang berpartisipasi (keduanya sebagai Foreign Key). Atribut deskriptif dari relasi juga menjadi kolom di tabel ini.
  • Relasi One-to-Many (1:N):

    • Aturan (Optimal): Tidak perlu membuat tabel baru. Cukup tambahkan sebuah kolom Foreign Key pada tabel di sisi “Many” yang merujuk ke Primary Key di sisi “One”.
    • Contoh: Relasi inst_dept (1:N) antara department (sisi “one”) dan instructor (sisi “many”) dipetakan dengan menambahkan kolom dept_name (FK) ke dalam tabel instructor.
  • Relasi Ternary (dan n-ary):

    • Aturan: Sama seperti relasi N:M, setiap relasi ternary menjadi sebuah tabel baru yang berisi Primary Key dari semua entitas yang berpartisipasi sebagai Foreign Key.
  • Specialization/Generalization (IS A):

    • Aturan: Ada beberapa metode, salah satu yang umum adalah membuat tabel terpisah. Buat satu tabel untuk entitas level tinggi (superclass) dan satu tabel untuk setiap entitas level rendah (subclass). Tabel subclass berisi atribut lokalnya dan Primary Key dari superclass (yang berfungsi sebagai PK dan FK sekaligus).

Studi Kasus: Translasi ERD ke Skema

Permasalahan:

“Diberikan ERD berikut, translasikan ke dalam skema relasional (CREATE TABLE).”

  +---------------+ 1                N +-----------------+
  |   Department  |<----(works_in)-----|    Employee     |
  |---------------|                    |-----------------|
  | _dept_id_     |                    | _emp_id_        |
  | dept_name     |                    | emp_name        |
  +---------------+                    | {skills}        |
                                       +-----------------+

Analisis & Solusi:

  1. Entitas Department menjadi tabel Department.
  2. Entitas Employee menjadi tabel Employee.
  3. Relasi works_in adalah 1:N. Maka, kita tambahkan Foreign Key (dept_id) ke sisi ‘N’, yaitu tabel Employee.
  4. Atribut skills adalah multi-valued. Maka, kita buat tabel baru Employee_Skills.

Skema Relasional Solusi:

-- Tabel untuk entitas Department
CREATE TABLE Department (
    dept_id   VARCHAR(10) PRIMARY KEY,
    dept_name VARCHAR(50) NOT NULL
);
 
-- Tabel untuk entitas Employee (dengan FK dari relasi 1:N)
CREATE TABLE Employee (
    emp_id    VARCHAR(10) PRIMARY KEY,
    emp_name  VARCHAR(50),
    dept_id   VARCHAR(10),
    FOREIGN KEY (dept_id) REFERENCES Department(dept_id)
);
 
-- Tabel untuk atribut multi-valued 'skills'
CREATE TABLE Employee_Skills (
    emp_id    VARCHAR(10),
    skill     VARCHAR(50),
    PRIMARY KEY (emp_id, skill),
    FOREIGN KEY (emp_id) REFERENCES Employee(emp_id)
);

Summary

Reduksi ER ke Relasional adalah proses sistematis untuk mengubah desain konseptual menjadi tabel fisik. Aturannya jelas: Entitas menjadi tabel, atribut composite diratakan, atribut multi-valued menjadi tabel baru, dan relasi dipetakan secara berbeda tergantung kardinalitasnya. Relasi N:M menjadi tabel baru, sementara relasi 1:N secara efisien dipetakan dengan menambahkan sebuah Foreign Key pada tabel di sisi ‘N’.