ฉันกำลังดิ้นรนกับการอภิปรายเชิงปรัชญาว่าจะใช้คีย์หลักแบบผสมบนฐานข้อมูล SQL Server ของฉันหรือไม่ ฉันเคยใช้กุญแจตัวแทนมาโดยตลอดในอดีต และฉันกำลังท้าทายตัวเองด้วยการออกจากเขตความสะดวกสบายของฉันเพื่อลองสิ่งที่แตกต่างออกไป ฉันได้อ่านการสนทนามากมาย แต่ยังไม่สามารถหาวิธีแก้ปัญหาใดๆ ได้ ปัญหาที่ฉันมีคือเมื่อต้องอัปเดตบันทึกด้วย PK แบบผสม
ตัวอย่างเช่น บันทึกในคำถามจะเป็นดังนี้:
ContactID, RoleID, EffectiveDate, TerminationDT
PK ในกรณีนี้คือ (ContactID, RoleID, EffectiveDate)
TerminationDT
อาจเป็นโมฆะได้
หากใน UI ของฉัน ผู้ใช้เปลี่ยน RoleID
แล้วฉันต้องอัปเดตบันทึก การใช้คีย์ตัวแทน ฉันสามารถดำเนินการ Update Table Set RoleID = 1 WHERE surrogateID = Z
ได้ อย่างไรก็ตาม เมื่อใช้วิธีคีย์ผสม เมื่อฟิลด์ใดฟิลด์หนึ่งในคีย์คอมโพสิตเปลี่ยนแปลง ฉันไม่สามารถอ้างอิงบันทึกเก่าเพื่ออัปเดตได้โดยไม่ต้องรักษาที่ใดที่หนึ่งใน UI ไว้เพื่ออ้างอิงถึงค่าเก่า
ฉันไม่ผูกแหล่งข้อมูลใน UI ของฉัน ฉันเปิดการเชื่อมต่อ รับข้อมูลและจัดเก็บไว้ในบัคเก็ต จากนั้นปิดการเชื่อมต่อ ทุกคนมีความคิดเห็นอย่างไร? ขอบคุณ.