ການປະຕິບັດຫນ້າທີ່ເປັນຢ່າງເຕັມທີ່ແມ່ນລັດຂອງ ຖານຂໍ້ມູນປົກກະຕິ ທີ່ສອດຄ່ອງກັບມາດຕະຖານປົກກະຕິຂອງ ແບບປະກະຕິທີ່ສອງ (2NF) . ໂດຍຫຍໍ້ແລ້ວ, ນີ້ຫມາຍຄວາມວ່າມັນສາມາດຕອບສະຫນອງຄວາມຕ້ອງການຂອງ First Normal Form (1NF), ແລະຄຸນລັກສະນະທັງຫມົດທີ່ບໍ່ແມ່ນສໍາຄັນແມ່ນຂຶ້ນຢູ່ກັບຫຼັກການຫຼັກ.
ນີ້ບໍ່ແມ່ນສັບສົນເພາະມັນອາດຈະມີສຽງ. ໃຫ້ເບິ່ງນີ້ໃນລາຍລະອຽດເພີ່ມເຕີມ.
ຂໍ້ສະຫຼຸບຂອງແບບປະກະຕິທໍາອິດ
ກ່ອນທີ່ຈະຖານຂໍ້ມູນສາມາດເຕັມໄປດ້ວຍຫນ້າທີ່ເຮັດວຽກໄດ້, ມັນຕ້ອງໄດ້ປະຕິບັດຕາມ ທໍາອິດ Normal Form .
ທັງຫມົດນີ້ຫມາຍຄວາມວ່າຄຸນລັກສະນະແຕ່ລະຕ້ອງຖືເປັນຄ່າດຽວ, ຄ່າປະລໍາມະນູ.
ຕົວຢ່າງ, ຕາຕະລາງຕໍ່ໄປນີ້ ບໍ່ ປະຕິບັດຕາມ 1NF, ເພາະວ່າພະນັກງານ Tina ໄດ້ເຊື່ອມໂຍງກັບສອງສະຖານທີ່, ທັງສອງຄົນຢູ່ໃນຫ້ອງດຽວ:
ລູກຈ້າງ | ສະຖານທີ່ |
---|---|
John | Los Angeles |
Tina | Los Angeles, Chicago |
ອະນຸຍາດໃຫ້ການອອກແບບນີ້ສາມາດສົ່ງຜົນກະທົບທາງລົບຕໍ່ການປັບປຸງຂໍ້ມູນຫຼືລາຍການຕ່າງໆ. ເພື່ອຮັບປະກັນການປະຕິບັດຕາມ 1NF, ຈັດຕາຕະລາງໃຫມ່ເພື່ອໃຫ້ຄຸນລັກສະນະທັງຫມົດ (ຫລືຄໍລໍາຄໍລໍາ) ຖືເປັນຄ່າດຽວ:
ລູກຈ້າງ | ສະຖານທີ່ |
---|---|
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
ແຕ່ 1NF ຍັງບໍ່ພຽງພໍເພື່ອຫຼີກເວັ້ນບັນຫາກັບຂໍ້ມູນ.
2NF ເຮັດແນວໃດເພື່ອຮັບປະກັນຄວາມຂັດແຍ້ງຢ່າງເຕັມທີ່
ເພື່ອໃຫ້ເຂົ້າໃຈຢ່າງເຕັມສ່ວນ, ຄຸນລັກສະນະທີ່ບໍ່ແມ່ນຜູ້ນໍາໃຊ້ທັງຫມົດຕ້ອງຂຶ້ນຢູ່ກັບຫຼັກຫຼັກ. (ຈົ່ງຈື່ໄວ້, ຄຸນລັກສະນະ ສໍາຄັນຂອງຜູ້ນໍາໃຊ້ ແມ່ນສໍາຄັນໃດໆ (ສໍາລັບຕົວຢ່າງຫຼັກຫຼັກຕ່າງປະເທດຫຼືຕ່າງປະເທດ) ທີ່ໃຊ້ເພື່ອບັນທຶກຂໍ້ມູນຖານຂໍ້ມູນເປັນເອກະລັກ.
ຜູ້ອອກແບບຖານຂໍ້ມູນໃຊ້ການຫມາຍເພື່ອອະທິບາຍຄວາມສໍາພັນທີ່ກ່ຽວຂ້ອງກັບລະຫວ່າງຄຸນລັກສະນະ:
ຖ້າຄວາມສໍາຄັນ A ກໍານົດຄ່າຂອງ B, ພວກເຮົາຂຽນ A -> B - ຊຶ່ງຫມາຍຄວາມວ່າ B ແມ່ນຂຶ້ນຢູ່ກັບການເຮັດວຽກໃນ A. ໃນຄວາມສໍາພັນນີ້, A ກໍານົດຄ່າຂອງ B, ໃນຂະນະທີ່ B ແມ່ນຂຶ້ນກັບ A.
ຕົວຢ່າງ, ຢູ່ໃນຕາຕະລາງ ພະແນກພະນັກງານ ດັ່ງຕໍ່ໄປນີ້, EmployeeID ແລະ DeptID ແມ່ນທັງສອງທີ່ໃຊ້ໃນການໃຊ້ງານ: EmployeeID ເປັນຫຼັກຫຼັກຂອງຕາຕະລາງໃນຂະນະທີ່ DeptID ເປັນກຸນແຈຕ່າງປະເທດ.
ຄຸນລັກສະນະອື່ນໃດ - ໃນກໍລະນີນີ້, EmployeeName ແລະ DeptName - ຕ້ອງຂຶ້ນຢູ່ກັບຫຼັກຫຼັກເພື່ອຮັບມູນຄ່າຂອງມັນ.
EmployeeID | EmployeeName | DeptID | DeptName |
---|---|---|---|
Emp1 | John | Dept001 | ການເງິນ |
Emp2 | Tina | Dept003 | ຂາຍ |
Emp3 | Carlos | Dept001 | ການເງິນ |
ໃນກໍລະນີນີ້, ຕາຕະລາງບໍ່ແມ່ນຄວາມຕ້ອງການອັນເຕັມທີ່ເພາະວ່າໃນຂະນະທີ່ EmployeeName ຂື້ນກັບ Key employee EmployeeID, DeptName ແມ່ນຂຶ້ນກັບ DeptID. ນີ້ເອີ້ນວ່າ ການອາໄສຢູ່ສ່ວນຫນຶ່ງ .
ເພື່ອເຮັດໃຫ້ຕາຕະລາງນີ້ສອດຄ່ອງກັບ 2NF, ພວກເຮົາຕ້ອງແຍກຂໍ້ມູນເປັນສອງຕາຕະລາງ:
EmployeeID | EmployeeName | DeptID |
---|---|---|
Emp1 | John | Dept001 |
Emp2 | Tina | Dept003 |
Emp3 | Carlos | Dept001 |
ພວກເຮົາລຶບ DeptName attribute ຈາກ Table Employees ແລະສ້າງຕາຕະລາງໃຫມ່ ຫ້ອງການ :
DeptID | DeptName |
---|---|
Dept001 | ການເງິນ |
Dept002 | ຊັບພະຍາກອນມະນຸດ |
Dept003 | ຂາຍ |
ໃນປັດຈຸບັນ, ການພົວພັນລະຫວ່າງຕາຕະລາງແມ່ນຂຶ້ນຢູ່ກັບຢ່າງເຕັມສ່ວນ, ຫຼືໃນ 2NF.
ເປັນຫຍັງຄວາມຂັດແຍ້ງຢ່າງເຕັມທີ່ຈຶ່ງເປັນສິ່ງສໍາຄັນ
ຄວາມເຂົ້າໃຈຢ່າງເຕັມທີ່ລະຫວ່າງຄຸນລັກສະນະຂອງຖານຂໍ້ມູນຈະຊ່ວຍໃຫ້ຄວາມສົມບູນຂອງຂໍ້ມູນແລະຫລີກລ່ຽງຄວາມຜິດພາດຂອງຂໍ້ມູນ.
ຕົວຢ່າງ, ພິຈາລະນາຕາຕະລາງໃນພາກຂ້າງເທິງທີ່ຕິດຕາມພຽງແຕ່ 1NF ເທົ່ານັ້ນ. ນີ້ແມ່ນ, ອີກເທື່ອຫນຶ່ງ:
ລູກຈ້າງ | ສະຖານທີ່ |
---|---|
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Tina ມີສອງບັນທຶກ. ຖ້າພວກເຮົາປັບປຸງຫນຶ່ງໂດຍບໍ່ຮູ້ວ່າມີສອງ, ຜົນໄດ້ຮັບຈະເປັນຂໍ້ມູນທີ່ບໍ່ສອດຄ່ອງ.
ຫລື, ຖ້າພວກເຮົາຕ້ອງການເພີ່ມພະນັກງານເຂົ້າມາໃນຕາຕະລາງນີ້, ແຕ່ພວກເຮົາຍັງບໍ່ຮູ້ວ່າບ່ອນໃດ? ພວກເຮົາອາດຈະບໍ່ອະນຸຍາດໃຫ້ເພີ່ມພະນັກງານໃຫມ່ຖ້າຫາກວ່າຄຸນສົມບັດສະຖານທີ່ບໍ່ອະນຸຍາດໃຫ້ຄ່າ NULL.
ການຕິດຕາມຢ່າງເຕັມທີ່ບໍ່ແມ່ນຮູບພາບທັງຫມົດ, ເຖິງແມ່ນວ່າ, ໃນເວລາທີ່ມັນມາກັບການປົກກະຕິ. ທ່ານຕ້ອງໃຫ້ແນ່ໃຈວ່າຖານຂໍ້ມູນຂອງທ່ານຢູ່ໃນ ຮູບແບບປົກກະຕິທີສາມ (3NF).