mysql - 跨多个一对多表强制约束

标签 mysql constraints

我有以下(高度简化的)数据库架构:

Simplified Database Schema

总结:

  • 一个帐户有一个用户(一对一)
  • 一个帐户有多个项目(一对多)
  • 一个项目有多个用户(一对多)

我担心的是用户属于项目,项目属于帐户,但使用此架构无法保证属于帐户的用户也属于属于一个项目。

我的问题是这样的:有没有办法使用MySQL添加约束来确保属于项目的用户也属于属于该项目的帐户?

我使用的是 MySQL 5.1.56。

最佳答案

there's no way to guarantee that a user that belongs to an account also belongs to the account that belongs to a project.

正确。但这不是 MySQL 的限制,而是当前架构的限制。据我所知,您已经从用户 > 帐户创建了一种 1-1 关系,这意味着一个用户只能属于该架构下的一个帐户。如果您对这种限制性关系的解决方案是在同一个表中包含重复的用户,那么恐怕您将拥有一个高度非规范化的架构,这将成为将来许多令人头痛的根源。

我强烈建议您在尝试建立约束之前首先专注于对业务实体进行建模(至少遵循 3NF)。首先,听起来您需要在用户和帐户之间建立多对多关系(为了满足“属于一个帐户的用户也需要属于另一个帐户”的要求)

关于mysql - 跨多个一对多表强制约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538596/

相关文章:

mysql - 我如何修复 weekofyear ('20121231' ) 返回 1?

php - Laravel 改变外键约束

ios - 在 Swift 中以编程方式添加自动布局约束将 uiview 变为黑色

ios - 如何设置约束以使 UIImage 的底部位于屏幕高度的 1/5?

php循环遍历sql结果

mysql - 每隔两行更新一次时间值

mysql - Laravel 关系查询返回相关 ID 而不是主 ID

oracle - 添加 FK 或 PK 约束会使某些内容无效吗?

ios - 如何将 AutoLayout 约束的常量设置为父 View 的百分比?

mysql - Java Mysql 完整性约束违反异常