การพึ่งพาการทำงานแบบเต็มรูปแบบคือสถานะของการ ทำให้เป็นบรรทัดฐาน ของ ฐานข้อมูล ซึ่งสอดคล้องกับมาตรฐาน normalization ของ Normal Normal Form (2NF) สรุปได้ว่านี่เป็นไปตามข้อกำหนดของ First Normal Form (1NF) และคุณลักษณะที่ไม่สำคัญทั้งหมดขึ้นอยู่กับคีย์หลัก
นี่ไม่ซับซ้อนเท่าที่ควร ลองดูที่รายละเอียดเพิ่มเติม
สรุปแบบฟอร์มปกติครั้งแรก
ก่อนที่ฐานข้อมูลจะสามารถทำงานได้โดยขึ้นอยู่กับฟอร์แมทแรกจะต้องสอดคล้องกับ First Normal Form
ทั้งหมดนี้หมายความว่าแต่ละแอ็ตทริบิวต์ต้องมีค่าอะตอมเดี่ยว
ตัวอย่างเช่นตารางต่อไปนี้ ไม่ สอดคล้องกับ 1NF เนื่องจาก Tina พนักงานเชื่อมโยงกับตำแหน่งที่ตั้งสองแห่งทั้งในเซลล์เดียว:
ลูกจ้าง | ที่ตั้ง |
---|---|
จอห์น | Los Angeles |
ทีน่า | Los Angeles, Chicago |
การอนุญาตการออกแบบนี้อาจส่งผลเสียต่อการอัปเดตข้อมูลหรือรายการ เพื่อให้แน่ใจว่าการปฏิบัติตามข้อกำหนด 1NF ให้จัดเรียงตารางใหม่เพื่อให้แอตทริบิวต์ทั้งหมด (หรือคอลัมน์คอลัมน์) มีค่าเดียว:
ลูกจ้าง | ที่ตั้ง |
---|---|
จอห์น | Los Angeles |
ทีน่า | Los Angeles |
ทีน่า | เมืองชิคาโก |
แต่ 1NF ยังไม่เพียงพอที่จะหลีกเลี่ยงปัญหาเกี่ยวกับข้อมูล
2NF ทำงานอย่างไรเพื่อให้แน่ใจว่ามีความพึ่งพาอาศัยกันอย่างเต็มที่
แอตทริบิวต์ที่สำคัญทั้งหมดที่ไม่ใช่ผู้สมัครจะต้องขึ้นอยู่กับคีย์หลัก (โปรดจำไว้ว่าแอ็ตทริบิวต์ หลักของผู้สมัคร คือคีย์ใด ๆ (เช่นคีย์หลักหรือคีย์ต่างประเทศ) ที่ใช้ในการระบุระเบียนฐานข้อมูลโดยไม่ซ้ำกัน
นักออกแบบฐานข้อมูลใช้สัญกรณ์เพื่ออธิบายถึงความสัมพันธ์ระหว่างแอตทริบิวต์:
ถ้าแอ็ตทริบิวต์ A กำหนดค่าของ B เราจะเขียน A -> B - ความหมายว่า B เป็นฟังก์ชันขึ้นอยู่กับ A. ในความสัมพันธ์นี้ A กำหนดค่าของ B ในขณะที่ B ขึ้นอยู่กับ A.
ตัวอย่างเช่นในตาราง หน่วยงาน ต่อไปนี้ EmployeeID และ DeptID มีคีย์ candidate: EmployeeID เป็นคีย์หลักของตารางในขณะที่ DeptID เป็นคีย์ต่างประเทศ
แอตทริบิวต์อื่น ๆ - ในกรณีนี้ EmployeeName และ DeptName - ต้องขึ้นอยู่กับคีย์หลักเพื่อรับค่า
EmployeeID | ชื่อพนักงาน | DeptID | DeptName |
---|---|---|---|
Emp1 | จอห์น | Dept001 | การเงิน |
Emp2 | ทีน่า | Dept003 | ขาย |
Emp3 | คาร์ลอ | Dept001 | การเงิน |
ในกรณีนี้ตารางไม่ได้ขึ้นอยู่อย่างสมบูรณ์เนื่องจากในขณะที่ EmployeeName ขึ้นอยู่กับคีย์หลัก EmployeeID DeptName ขึ้นอยู่กับ DeptID แทน นี้เรียกว่า การพึ่งพาบางส่วน
เพื่อให้ตารางนี้สอดคล้องกับ 2NF เราจำเป็นต้องแยกข้อมูลออกเป็นสองตาราง:
EmployeeID | ชื่อพนักงาน | DeptID |
---|---|---|
Emp1 | จอห์น | Dept001 |
Emp2 | ทีน่า | Dept003 |
Emp3 | คาร์ลอ | Dept001 |
เราลบแอตทริบิวต์ DeptName ออกจากตาราง Employees และสร้าง แผนก ใหม่:
DeptID | DeptName |
---|---|
Dept001 | การเงิน |
Dept002 | ทรัพยากรมนุษย์ |
Dept003 | ขาย |
ตอนนี้ความสัมพันธ์ระหว่างตารางจะขึ้นอยู่อย่างเต็มที่หรือใน 2NF
เพราะเหตุใด Full Dependency เป็นสิ่งสำคัญ
การพึ่งพาอาศัยกันระหว่างแอตทริบิวต์ฐานข้อมูลช่วยให้มั่นใจได้ถึงความสมบูรณ์ของข้อมูลและหลีกเลี่ยงความผิดปกติของข้อมูล
ตัวอย่างเช่นพิจารณาตารางในส่วนด้านบนที่ใช้เฉพาะกับ 1NF เท่านั้น นี่เป็นอีกครั้ง:
ลูกจ้าง | ที่ตั้ง |
---|---|
จอห์น | Los Angeles |
ทีน่า | Los Angeles |
ทีน่า | เมืองชิคาโก |
Tina มีสองระเบียน ถ้าเราปรับปรุงหนึ่งโดยไม่ทราบว่ามีสองผลลัพธ์จะเป็นข้อมูลที่ไม่สอดคล้องกัน
หรือสิ่งที่ถ้าเราต้องการเพิ่มพนักงานลงในตารางนี้ แต่เรายังไม่ทราบสถานที่นี้หรือไม่? เราอาจจะไม่ได้รับอนุญาตให้เพิ่มพนักงานใหม่หากแอตทริบิวต์ Location ไม่อนุญาตค่า NULL
การพึ่งพาแบบเต็มไม่ได้เป็นภาพรวม แต่เมื่อพูดถึงการทำให้เป็นบรรทัดฐาน คุณต้องตรวจสอบให้แน่ใจว่าฐานข้อมูลของคุณอยู่ใน Third Normal Form (3NF)