[英]Composite keys in a Multi-tenant database
我正在設計一個純多租戶數據庫(一個數據庫,一個模式),我想在我的大多數表中保留一個Tenant_Id作為安全措施,以確保數據不會落入錯誤的租戶手中。 看起來這需要每個表上的復合鍵。
例:
在單租戶情況下,我會有一個主鍵:
Animal_Id (PK)
Animal_Type
Animal_Name
在多租戶情況下,我會為Tenant_Id添加另一個主鍵:
Animal_Id (PK)
Tenant_Id (PK)
Animal_Type
Animal_Name
是否在每個表中添加一個Tenant_Id列意味着我需要在每個表中都有一個復合鍵,或者有一種安全的方法可以避免這種情況嗎? 復合鍵是可以的,但如果可以,我想避免使用它們。
如果所有id都是自動增量整數,則可以添加不屬於主鍵的tenant_id
,只需在所有查詢中檢查它。
但是,這有幾個副作用,您可能會或可能不會將其視為缺點:
FOREIGN KEY
約束不會阻止您這樣做(就像tenant_id
是PRIMARY KEY
的一部分一樣) 換句話說,如果您真的不喜歡實體的復合鍵,則可以在沒有它們的情況下設計數據庫。
除非你為每個客戶重復其他id(你可能有兩個或更多的animal_id = 1),否則沒有理由讓它成為一個復合鍵。 您只需添加該字段即可。 這對我們有用。
您真的需要支持具有相同ANIMAL_ID
值的兩個不同租戶嗎? 無論您使用什么機制來生成看似合成的主鍵值,都應該能夠生成跨租戶唯一的值。 向表中添加TENANT_ID
列可能有意義,但將其添加到主鍵並不明顯是有益的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.