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