gpt4 book ai didi

mysql - 如何在 SQL 中限制第 2 列中的某些值与第 1 列中的相同值?

转载 作者:行者123 更新时间:2023-11-29 22:23:24 25 4
gpt4 key购买 nike

考虑 MySQL 数据库的以下 ERD:

Entity Relationship Diagram

角色表包含​​登录用户可能拥有的各种(特定于网站的)角色。从 ERD 中可以看到:成员可以拥有多个角色,角色可以分配多个成员。

表成员是动态的,可以随时创建具有自定义角色的新成员,但角色表不是。当前的角色设置是最终的。

角色表中的记录如下所示:

 id  rolename 1   captain 2   cabin boy 3   buccaneer 4   parrot caretaker 5   cook

现在解决问题:我希望为成员分配某些角色,但无法选择某些角色组合。例如,船长不能同时担任机舱服务员,但他也可以担任鹦鹉管理员。厨师也可以是小屋男孩,但不能是鹦鹉看护人。

我在 Google 上就这个主题做了一些研究,但我似乎无法找到正确的关键字来真正找到可用的信息来解决这个问题。我似乎找到的只是有关 SQL CHECK 如何工作的引用资料和教程,但不够深入。

有没有办法让我使用 MySQL 约束来限制某些组合的发生?如果没有,这个问题可以使用触发器或函数来解决吗?我通常正在寻找最有效的解决方案,它不一定必须在数据库端。

最佳答案

这取决于一些事情..

您希望数据库处理此逻辑还是您愿意在应用程序级别拥有它?

如果您希望数据库处理它,您可能需要一个触发器。mysql 解析 CHECK 约束但不强制执行它。

无论哪种方式,您可能都希望将允许的组合存储在某处。对于简单的情况,我会根据数字为每个角色选择其他角色的黑名单或白名单。您可以轻松地将其存储在另一个表中。

另一个选项是先决条件表,例如要成为海军上将,您还必须是上尉。

关于mysql - 如何在 SQL 中限制第 2 列中的某些值与第 1 列中的相同值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30504906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com