【发布时间】:2011-10-04 15:35:52
【问题描述】:
我正在设计一个数据库,其中两个字段具有多对一关系,但我也需要它们之间的一对一关系,我想就是否有更好的方法提出一些建议它比我现在所拥有的。
我的表是accounts 和users。一个帐户可以有多个用户,但每个帐户只能且必须有一个所有者。一个用户只能与一个帐户相关联。
我在users 表中有一个account 字段,该字段存储与用户相关的帐户的ID。在accounts 表中,我有一个owner 字段,其中存储了拥有该帐户的用户的ID(即主管管理员)。
我正在使用 InnoDB,所以我可以使用外键。问题是我不能在没有先创建另一个帐户或用户的情况下创建一个帐户或用户(由于外键的限制),所以我将owner 设为可空。现在我可以创建一个空owner的账户,然后创建用户,最后将账户上的owner设置为用户。
这是否可以接受,有没有更好的方法?
以下是我想出的其他一些可能的方法,以及我对每种方法的想法:
在
users表中有一个布尔值owner字段。由于每个帐户只能有一个所有者,因此这种方式似乎不太理想,因为我必须确保每个帐户只有一个用户的属性设置为true。有第三个表名为
owners。这似乎是更多的开销和更多的工作,因为它实际上与在users表中拥有一个owner字段相同。
我现在如何拥有它对我来说是最有意义的,但是在我创建用户之前必须设置一个空所有者有点尴尬,然后在事后回来设置它。
如果您能给我任何意见,我将不胜感激。谢谢!
这个问题类似,但没有提到外键:Designing Tables: One to many and one to one at same time?
【问题讨论】:
-
用户是否可以成为该帐户的所有者而不是该帐户的用户(即另一个帐户的用户)?
-
不。帐户的所有者是它自己的用户,并且只是它自己的用户。
标签: mysql database-design data-modeling