ການ ພົວພັນ ແບບດຽວກັບຫລາຍຄົນ ໃນຖານຂໍ້ມູນ ເກີດຂື້ນໃນເວລາທີ່ແຕ່ລະບັນທຶກໃນຕາຕະລາງ A ອາດມີບັນທຶກການເຊື່ອມໂຍງຫຼາຍໃນຕາຕະລາງ B ແຕ່ແຕ່ລະບັນທຶກໃນຕາຕະລາງ B ສາມາດມີພຽງແຕ່ຫນຶ່ງບັນທຶກທີ່ສອດຄ້ອງກັນໃນຕາຕະລາງ A. ການພົວພັນຫນຶ່ງຫາຫຼາຍຄົນໃນ ຖານຂໍ້ມູນແມ່ນການອອກແບບຖານຂໍ້ມູນທີ່ສໍາຄັນທີ່ສຸດແລະເປັນຫົວໃຈຂອງການອອກແບບທີ່ດີ.
ພິຈາລະນາຄວາມສໍາພັນລະຫວ່າງຄູສອນແລະຫຼັກສູດທີ່ເຂົາເຈົ້າສອນ. ຄູສອນສາມາດສອນຫລັກສູດຕ່າງໆແຕ່ຫຼັກສູດບໍ່ມີຄວາມສໍາພັນກັບຄູ.
ເພາະສະນັ້ນ, ສໍາລັບບັນທຶກແຕ່ລະຕາຕະລາງຄູອາຈານ, ມັນອາດຈະມີບັນທຶກຈໍານວນຫຼາຍໃນຕາຕະລາງຮຽນ. ນີ້ແມ່ນຄວາມສໍາພັນອັນຫນຶ່ງກັບຫລາຍຄົນ: ຄູຫນຶ່ງຄົນເຂົ້າຮຽນຫຼາຍໆຄັ້ງ.
ເປັນຫຍັງການສ້າງຄວາມສໍາພັນຫນຶ່ງຫາຫຼາຍແມ່ນເປັນສິ່ງສໍາຄັນ
ເພື່ອເປັນຕົວແທນຂອງການພົວພັນຫນຶ່ງຫາຫຼາຍ, ທ່ານຕ້ອງການຢ່າງນ້ອຍສອງຕາຕະລາງ. ໃຫ້ເບິ່ງວ່າເປັນຫຍັງ.
ບາງທີພວກເຮົາສາມາດສ້າງຕາຕະລາງຄູສອນທີ່ພວກເຮົາຕ້ອງການທີ່ຈະບັນທຶກຊື່ແລະວິຊາທີ່ໄດ້ສອນ. ພວກເຮົາອາດຈະອອກແບບມັນຄືດັ່ງນີ້:
Teacher_ID | Teacher_Name | ຫລັກສູດ |
---|---|---|
Teacher_001 | Carmen | ຊີວະສາດ |
Teacher_002 | Veronica | Math |
Teacher_003 | Jorge | ພາສາອັງກິດ |
ຈະເປັນແນວໃດຖ້າ Carmen ສອນສອງຫຼືຫຼາຍກວ່ານັ້ນ? ພວກເຮົາມີສອງທາງເລືອກທີ່ມີການອອກແບບນີ້. ພວກເຮົາພຽງແຕ່ສາມາດເພີ່ມໃສ່ບັນທຶກທີ່ມີຢູ່ຂອງ Carmen ໄດ້ເຊັ່ນ:
Teacher_ID | Teacher _Name | ຫລັກສູດ |
---|---|---|
Teacher_001 | Carmen | ຊີວະສາດ, ຄະນິດສາດ |
Teacher_002 | Veronica | Math |
Teacher_003 | Jorge | ພາສາອັງກິດ |
ການອອກແບບຂ້າງເທິງ, ຢ່າງໃດກໍຕາມ, ແມ່ນບໍ່ຍືນຍົງແລະສາມາດສົ່ງຜົນຕໍ່ບັນຫາຕໍ່ມາໃນເວລາທີ່ພະຍາຍາມໃສ່, ດັດແກ້ຫຼືລຶບຂໍ້ມູນ.
ມັນເຮັດໃຫ້ມັນຍາກທີ່ຈະຄົ້ນຫາຂໍ້ມູນ. ການອອກແບບນີ້ທໍາລາຍຫຼັກການທໍາອິດຂອງການປົກກະຕິຂອງຖານຂໍ້ມູນ, ແບບ ທໍາອິດທໍາອິດ (1NF) , ເຊິ່ງລະບຸວ່າແຕ່ລະຫ້ອງຕາຕະລາງຄວນມີຂໍ້ມູນດຽວ, ແຍກຂໍ້ມູນ.
ອີກທາງເລືອກການອອກແບບອາດຈະເປັນພຽງແຕ່ເພີ່ມບັນທຶກສອງສໍາລັບ Carmen:
Teacher _ID | Teacher _Name | ຫລັກສູດ |
---|---|---|
Teacher_001 | Carmen | ຊີວະສາດ |
Teacher_001 | Carmen | Math |
Teacher_002 | Veronica | Math |
Teacher_003 | Jorge | ພາສາອັງກິດ |
ນີ້ປະຕິບັດຕາມ 1NF ແຕ່ວ່າມັນຍັງມີການອອກແບບຖານຂໍ້ມູນທີ່ບໍ່ດີເນື່ອງຈາກມັນນໍາໃຊ້ຄວາມຫຍຸ້ງຍາກແລະສາມາດຟື້ນຕົວຖານຂໍ້ມູນຂະຫນາດໃຫຍ່ທີ່ບໍ່ຈໍາເປັນ. ສິ່ງສໍາຄັນຫຼາຍ, ຂໍ້ມູນສາມາດກາຍເປັນບໍ່ສອດຄ່ອງ. ຕົວຢ່າງ, ຖ້າວ່າຊື່ຂອງຄາເມນມີການປ່ຽນແປງແນວໃດ? ຄົນທີ່ເຮັດວຽກຮ່ວມກັບຂໍ້ມູນອາດຈະປັບປຸງຊື່ຂອງນາງໃນບັນທຶກຫນຶ່ງແລະບໍ່ສາມາດປັບປຸງມັນໃນບັນທຶກທີສອງໄດ້. ການອອກແບບນີ້ປະຕິບັດຕາມແບບຟອມປະກະຕິທີ 2 (2NF) ຊຶ່ງປະຕິບັດຕາມ 1NF ແລະຕ້ອງຫຼີກລ່ຽງຄວາມຜິດພາດຂອງບັນທຶກຫລາຍໂດຍການແຍກຂໍ້ມູນຂອງຂໍ້ມູນເຂົ້າໄປໃນຫລາຍໆຕາຕະລາງແລະການສ້າງສາຍພົວພັນລະຫວ່າງເຂົາເຈົ້າ.
ວິທີການສ້າງຖານຂໍ້ມູນທີ່ມີຄວາມສໍາພັນແບບຫນຶ່ງກັບຫຼາຍ
ເພື່ອປະຕິບັດຄວາມສໍາພັນແບບຫນຶ່ງກັບຫຼາຍໃນຕາຕະລາງຄູແລະຕາຕະລາງ, ພວກເຮົາແບ່ງຕາຕະລາງເປັນສອງແລະເຊື່ອມຕໍ່ພວກເຂົາໂດຍນໍາໃຊ້ຫຼັກ ຕ່າງປະເທດ .
ນີ້, ພວກເຮົາໄດ້ຖອດຖອນຖັນຫຼັກສູດໃນຕາຕະລາງຄູອາຈານ:
Teacher _ID | Teacher _Name |
---|---|
Teacher_001 | Carmen |
Teacher_002 | Veronica |
Teacher_003 | Jorge |
ແລະນີ້ແມ່ນຕາຕະລາງຫຼັກສູດ. ໃຫ້ສັງເກດວ່າຫຼັກຕ່າງປະເທດຂອງຕົນ, Teacher_ID, ເຊື່ອມຕໍ່ແນ່ນອນກັບຄູອາຈານໃນຕາຕະລາງຄູສອນ:
Course_ID | Course_Name | Teacher_ID |
---|---|---|
Course_001 | ຊີວະສາດ | Teacher_001 |
Course_002 | Math | Teacher_001 |
Course_003 | ພາສາອັງກິດ | Teacher_003 |
ພວກເຮົາໄດ້ພັດທະນາສາຍພົວພັນລະຫວ່າງຄູອາຈານແລະຕາຕະລາງຫຼັກສູດໂດຍນໍາໃຊ້ຫຼັກຕ່າງປະເທດ.
ນີ້ບອກພວກເຮົາວ່າຊີວະສາດແລະຄະນິດສາດແມ່ນສອນໂດຍ Carmen ແລະ Jorge ສອນພາສາອັງກິດ.
ພວກເຮົາສາມາດເບິ່ງວິທີການອອກແບບນີ້ຫຼີກເວັ້ນການຢືດຢຸ່ນທີ່ເປັນໄປໄດ້, ອະນຸຍາດໃຫ້ຄູສອນແຕ່ລະຄົນສອນຫຼາຍວິຊາ, ແລະປະຕິບັດການພົວພັນຫນຶ່ງຫາຫຼາຍ.
ຖານຂໍ້ມູນຍັງສາມາດປະຕິບັດການພົວພັນຫນຶ່ງກັບຫນຶ່ງແລະເປັນຄວາມສໍາພັນຫຼາຍໆຄົນ.