我有以下(高度简化的)数据库架构:
总结:
- 一个帐户有一个用户(一对一)
- 一个帐户有多个项目(一对多)
- 一个项目有多个用户(一对多)
我担心的是用户属于项目,项目属于帐户,但使用此架构无法保证属于帐户的用户也属于属于一个项目。
我的问题是这样的:有没有办法使用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/