Functional Dependency คืออะไร?
Functional Dependency ใน DBMS คือความสัมพันธ์ระหว่างแอตทริบิวต์ของตารางที่พึ่งพากัน ถูกนำเสนอโดย E.F. Codd ช่วยป้องกัน Data Redundancy และรู้จัก Bad Designs
เพื่อเข้าใจอย่างลึกซึ้ง สมมติ P เป็น Relation ที่มีแอตทริบิวต์ A และ B Functional Dependency แสดงด้วย -> (ลูกศร)
Functional Dependency ระหว่างแอตทริบิวต์:
| A → B |
|---|
ข้างต้นบ่งชี้ว่า:

ตัวอย่าง
ตาราง <Department> มี 2 แอตทริบิวต์: DeptId และ DeptName
| DeptId | DeptName |
|---|---|
| 001 | Finance |
| 002 | Marketing |
| 003 | HR |
DeptId เป็น Primary Key ระบุ DeptName ได้อย่างเดียว เพราะถ้าต้องการรู้ชื่อแผนก ต้องมี DeptId ก่อน
Functional Dependency ระหว่าง DeptId และ DeptName:
| DeptId → DeptName |
|---|
ประเภทของ Functional Dependency (3 แบบ)
- Trivial Functional Dependency
- Non-Trivial Functional Dependency
- Completely Non-Trivial Functional Dependency
1. Trivial Functional Dependency
เกิดเมื่อ B เป็น Subset ของ A ใน A → B
ตัวอย่าง: {DeptId, DeptName} → DeptId (เพราะ DeptId เป็น subset ของ {DeptId, DeptName})
2. Non-Trivial Functional Dependency
เกิดเมื่อ B ไม่ใช่ Subset ของ A ใน A → B
ตัวอย่าง: DeptId → DeptName (DeptName ไม่ใช่ subset ของ DeptId)
3. Completely Non-Trivial Functional Dependency
เกิดเมื่อ A intersection B เป็น NULL ใน A → B
Armstrong's Axioms ( 공理ของ Armstrong)
พัฒนาโดย William Armstrong ในปี 1974 เพื่อให้เหตุผลเกี่ยวกับ Functional Dependencies กฎที่เป็นจริงถ้าเงื่อนไขต่อไปนี้เป็นจริง:
- Transitivity (การอนุกรม): ถ้า A→B และ B→C แล้ว A→C (ความสัมพันธ์แบบอนุกรม)
- Reflexivity (การสะท้อน): A→B ถ้า B เป็น Subset ของ A
- Augmentation (การเพิ่ม): AC→BC ถ้า A→B