Database Relationships

ການພົວພັນຖານຂໍ້ມູນແມ່ນຈຸດສຸມຂອງຖານຂໍ້ມູນທັງຫມົດທີ່ພົວພັນກັນ

ສາຍພົວພັນທີ່ຖືກສ້າງຂຶ້ນລະຫວ່າງສອງ ຕາຕະລາງຖານຂໍ້ມູນ ໃນເວລາຫນຶ່ງຕາຕະລາງທີ່ມີຫຼັກຕ່າງປະເທດທີ່ອ້າງອີງຫຼັກຫຼັກຂອງຕາຕະລາງອື່ນ. ນີ້ແມ່ນແນວຄວາມຄິດພື້ນຖານທີ່ຢູ່ເບື້ອງຫລັງຂອງຖານຂໍ້ມູນກ່ຽວກັບໄລຍະຍາວ.

ວິທີການຕ່າງປະເທດເຮັດວຽກເພື່ອສ້າງຄວາມສໍາພັນ

ໃຫ້ພິຈາລະນາພື້ນຖານຂອງຄີຫລັກແລະຕ່າງປະເທດ. ກຸນແຈ ຫລັກໆລະບຸໄວ້ແຕ່ລະບັນທຶກໃນຕາຕະລາງ. ມັນເປັນປະເພດຂອງ ປຸ່ມຜູ້ສະຫມັກ ທີ່ມັກຈະເປັນຄໍລໍາທໍາອິດໃນຕາຕະລາງແລະສາມາດສ້າງໂດຍອັດຕະໂນມັດໂດຍຖານຂໍ້ມູນເພື່ອໃຫ້ແນ່ໃຈວ່າມັນເປັນເອກະລັກ.

ກຸນແຈຕ່າງປະເທດແມ່ນປຸ່ມຄົນອື່ນ (ບໍ່ແມ່ນກຸນແຈຫລັກ) ທີ່ນໍາໃຊ້ເພື່ອເຊື່ອມຕໍ່ບັນທຶກກັບຂໍ້ມູນໃນຕາຕະລາງອື່ນ.

ຕົວຢ່າງ, ໃຫ້ພິຈາລະນາສອງຕາຕະລາງເຫຼົ່ານີ້ທີ່ລະບຸວ່າຄູໃດສອນທີ່ແນ່ນອນ.

ທີ່ນີ້ຫລັກຫຼັກສູດຂອງຫລັກສູດຂອງ 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 ພາສາອັງກິດ

ນີ້ຍັງເປັນການອອກແບບທີ່ອ່ອນແອ, ນໍາສະເຫນີການຄັດລອກທີ່ບໍ່ຈໍາເປັນແລະສິ່ງທີ່ເອີ້ນວ່າ ຂໍ້ຜິດພາດການໃສ່ຂໍ້ມູນ , ຊຶ່ງຫມາຍຄວາມວ່າມັນສາມາດປະກອບສ່ວນເຂົ້າຂໍ້ມູນທີ່ບໍ່ສອດຄ່ອງ.

ຕົວຢ່າງເຊັ່ນຖ້າຄູສອນມີບັນທຶກຫຼາຍ, ຈະເປັນແນວໃດຖ້າມີບາງຂໍ້ຕ້ອງການແກ້ໄຂ, ແຕ່ຄົນທີ່ປະຕິບັດການແກ້ໄຂຂໍ້ມູນບໍ່ໄດ້ຮັບຮູ້ວ່າມີບັນທຶກຫຼາຍຢ່າງ? ຕາຕະລາງຫຼັງຈາກນັ້ນຈະມີຂໍ້ມູນທີ່ແຕກຕ່າງກັນສໍາລັບບຸກຄົນດຽວກັນ, ໂດຍບໍ່ມີວິທີທີ່ຈະແຈ້ງກ່ຽວກັບການກໍານົດຫຼືຫຼີກລ້ຽງມັນ.

ການລຸດຕາລາງນີ້ເຂົ້າໄປໃນຕາຕະລາງສອງ, ຄູແລະວິຊາ (ດັ່ງທີ່ເຫັນໃນຂ້າງເທິງ), ສ້າງຄວາມສໍາພັນລະຫວ່າງຂໍ້ມູນແລະຊ່ວຍໃຫ້ຂໍ້ມູນສອດຄ່ອງແລະຄວາມຖືກຕ້ອງ.