1
คีย์หลักคอมโพสิตในฐานข้อมูล SQL Server แบบหลายผู้เช่า
ฉันกำลังสร้างแอพหลายผู้เช่า (ฐานข้อมูลเดียวสกีมาเดียว) โดยใช้ ASP Web API, Entity Framework และฐานข้อมูล SQL Server / Azure แอปนี้จะใช้งานโดยลูกค้า 1,000-5,000 คน ตารางทั้งหมดจะมีฟิลด์TenantId(Guid / UNIQUEIDENTIFIER) ตอนนี้ฉันใช้คีย์หลักของฟิลด์เดียวซึ่งเป็นรหัส (Guid) แต่ด้วยการใช้เพียงแค่รหัสเขตข้อมูลฉันต้องตรวจสอบว่าข้อมูลที่ให้โดยผู้ใช้นั้นมาจาก / สำหรับผู้เช่าที่เหมาะสมหรือไม่ ตัวอย่างเช่นฉันมีSalesOrderตารางที่มีCustomerIdเขตข้อมูล ทุกครั้งที่ผู้ใช้โพสต์ / อัปเดตคำสั่งขายฉันต้องตรวจสอบว่าCustomerIdมาจากผู้เช่ารายเดียวกันหรือไม่ แย่ลงเพราะผู้เช่าแต่ละรายอาจมีหลายสาขา แล้วฉันจะมีการตรวจสอบและTenantId OutletIdมันเป็นฝันร้ายของการบำรุงรักษาและไม่ดีต่อประสิทธิภาพ ฉันคิดว่าจะเพิ่มไปยังคีย์หลักพร้อมกับTenantId Idและอาจเพิ่มOutletIdด้วย ดังนั้นหลักสำคัญในSalesOrderตารางจะเป็น: Id, และTenantId OutletIdข้อเสียของวิธีการนี้คืออะไร? ประสิทธิภาพจะเจ็บอย่างรุนแรงโดยใช้คีย์ผสมหรือไม่ คีย์ใบสั่งผสมมีความสำคัญหรือไม่ มีวิธีแก้ปัญหาที่ดีกว่าสำหรับฉันหรือไม่?