Back to IF5101 Manajemen Data

Functional Dependency dan Keys

Questions/Cues

  • Apa tujuan teori normalisasi dan apa tiga syarat dekomposisi yang baik?
  • Apa itu functional dependency (FD) dan bagaimana definisi formalnya?
  • Apa itu legal instance dari sebuah relasi?
  • Bagaimana FD berhubungan dengan superkey dan candidate key?
  • FD apa yang kita harapkan (dan tidak harapkan) berlaku pada in_dep?

Reference Points

  • IF5101 — Relational Data Model Part 4 (Slides 9-13)
  • Silberschatz, Korth, Sudarshan — Database System Concepts 7th Ed., Chapter 7.4 (Functional Dependency Theory)

Tujuan Teori Normalisasi

Teori normalisasi bertugas:

  1. Memutuskan apakah suatu relasi berada dalam bentuk yang baik (good form).
  2. Bila tidak, mendekomposisi menjadi sehingga:
    • setiap relasi berada dalam good form,
    • dekomposisi lossless,
    • sebaiknya dependency preserving.

Landasan teorinya: functional dependencies dan multivalued dependencies.

Constraint di Dunia Nyata

Di basis data universitas, kita mengharapkan aturan seperti:

  • Mahasiswa dan dosen dikenali secara unik oleh ID.
  • Setiap mahasiswa/dosen hanya punya satu nama.
  • Setiap mahasiswa/dosen (utamanya) terkait dengan satu departemen.
  • Setiap departemen punya satu budget dan satu gedung.

Sebuah instance relasi yang memenuhi semua aturan ini disebut legal instance; basis data legal bila semua relasinya legal. Constraint semacam ini menyatakan bahwa nilai sekumpulan atribut menentukan secara unik nilai himpunan atribut lain. FD adalah generalisasi dari konsep key.

Definisi Formal

Misalkan skema relasi, dan . FD

berlaku pada jika dan hanya jika untuk setiap relasi legal , bila dua tuple dan sama pada , maka keduanya juga sama pada :

Contoh dengan tuple :

  • berlaku (tiap nilai B hanya muncul sekali).
  • tidak berlaku (A = 1 punya B = 4 dan 5).

FD dan Keys

  • adalah superkey dari jika dan hanya jika .
  • adalah candidate key dari jika dan hanya jika dan tidak ada dengan (minimal).

FD mampu menyatakan constraint yang tidak bisa dinyatakan dengan superkey saja. Untuk

in_dep = (ID, name, salary, dept_name, building, budget)

kita mengharapkan: dept_name → building, ID → building; tetapi tidak dept_name → salary (banyak dosen berbeda gaji di departemen yang sama).

flowchart LR
    ID["ID"] --> N["name"]
    ID --> S["salary"]
    ID --> D["dept_name"]
    D --> B["building"]
    D --> BU["budget"]

Diagram menunjukkan dan — sehingga secara transitif. dept_name bukan superkey in_dep, itulah sumber redundancy.

Summary

Normalisasi memeriksa apakah relasi dalam good form; bila tidak, dekomposisi harus lossless dan sebaiknya dependency preserving. FD berlaku bila dua tuple yang sama di pasti sama di — generalisasi dari key. adalah superkey iff , dan candidate key bila minimal. Pada in_dep, dept_name → building berlaku tetapi dept_name bukan superkey, sehingga muncul redundancy.