复合主键可以用来防止链接不相关的对象吗?

发布于 2024-12-11 01:18:57 字数 546 浏览 1 评论 0原文

如果我有几个模型(说出您最喜欢的框架):

# pseudo-code
class Fruit
    primary_key = CompositeKey(tenant_id, object_id)
    weight = DecimalField()

class Restaurant
    primary_key = CompositeKey(tenant_id, object_id)
    haz_cheeseburger = BooleanField()
    fruit_available = ForeignKey(Fruit)  # <-- important part

是否可能存在数据库约束,导致无法插入属于 tenant_id 部分的 Resaturant主键指向 TenantA,谁的 fruit_availabletenant_id 指向 TenantB。基本上,防止我意外地将属于不同租户的对象关联起来。

If I have a couple models in (name your favorite framework):

# pseudo-code
class Fruit
    primary_key = CompositeKey(tenant_id, object_id)
    weight = DecimalField()

class Restaurant
    primary_key = CompositeKey(tenant_id, object_id)
    haz_cheeseburger = BooleanField()
    fruit_available = ForeignKey(Fruit)  # <-- important part

Is it possible to have a database constraint that will make it impossible to insert a Resaturant who's tenant_id part of the primary key points to TenantA and who's fruit_available's tenant_id points to TenantB. Basically, protect me from accidentally relating objects that belong to different tenants.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷迭香的记忆 2024-12-18 01:18:57

如果我理解正确的话,您也许可以设置外键。在餐厅表中,

FOREIGN KEY        (tenant_id, fruit_available) 
  REFERENCES fruit (tenant_id, fruit_available)

这部分取决于您的 dbms,部分取决于 fruit (tenant_id,fruit_available) 上是否存在任何类型的唯一约束。

但这并不能阻止您使用错误的tenant_id作为Restaurant主键的一部分。

If I've understood you correctly, you might be able to set a foreign key. In the restaurant table,

FOREIGN KEY        (tenant_id, fruit_available) 
  REFERENCES fruit (tenant_id, fruit_available)

It depends in part on your dbms, and in part on whether there's a unique constraint of any kind on fruit (tenant_id, fruit_available).

That won't prevent you from using the wrong tenant_id as part of Restaurant's primary key, though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文