首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用于促销的FK user_id上添加唯一约束会阻止用户两次申请促销吗?

在用于促销的FK user_id上添加唯一约束会阻止用户两次申请促销吗?
EN

Stack Overflow用户
提问于 2019-09-06 14:39:59
回答 1查看 31关注 0票数 0

我正在尝试实现一个用例,当为电子商务应用程序创建促销时,用户只能申请一次促销。因此,如果有一个特价10美元的购买,或类似的东西,用户只能现在和永远声称该促销。

下面是我的想法:

代码语言:javascript
复制
promotions

----------
id  | int
start | datetime
end  | datetime
claimed | boolean
user_id | int
product_id | int

基本上,如果我向user_id外键添加一个UNIQUE约束,一旦正确,就会阻止用户声明提升?唯一的问题是,如果我第二天或一周后升职怎么办?这对promotions表来说无关紧要,因为按照现在的设置方式,用户只能永远拥有一个促销,而不能获得另一个促销。我的假设正确吗?如果我是,我该如何应对呢?

EN

回答 1

Stack Overflow用户

发布于 2019-09-06 15:31:38

您不应将指向用户的链接存储在promotions表中。使用链接表将用户从促销中分离出来:

用户<--M..M --> ClaimedPromotions <-- M..M -->促销

在ClaimedPromotions表中,您应该使用唯一约束来存储指向用户和促销的链接:

代码语言:javascript
复制
CREATE TABLE ClaimedPromotions
(
    user_id      integer not null references Users(id),
    promotion_id integer not null references Promotions(id),
    UNIQUE (user_id, promotion_id)
);

由于两个列上的唯一约束,现在单个用户不可能声明两次促销,但他仍然可以声明多个促销。

通过这种方式,您也不会像在原始方法中那样,在促销数据上存在重复。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57816925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档