下面我有一套表格来展示组织和支持者之间的关系。虽然我做了一些基本的mySQL查询,但我对数据库‘设计’知之甚少。
我计划查询数据库的以下内容:
用于组织和贡献者的数据库表将来可能有其他列,并根据这些信息接收较少数量的查询。
A | X
A | Y
A | Z
B | X
B | Y
C | X
C | Z如何设置这些桌子?我假设应该有第三个表,但第三个表中仍然有多余的信息。有没有更好的方法来摆桌子?
+----+-------+ +-------------+----------+ +----+-------+
| id | org | | org | contr | | id | contr.|
+----+-------+ +-------------+----------+ +----+-------+
| 1 | A | | 1 | 1 | | 1 | X |
| 2 | B | | 1 | 2 | | 2 | Y |
| 3 | C | | 1 | 3 | | 3 | Z |
+----+-------+ | 2 | 1 | +----+-------+
| 2 | 2 |
| 3 | 1 |
| 3 | 3 |
+-------------+----------+ 发布于 2011-03-06 23:59:05
你的解决方案是完全可以接受的,我看不出哪里有多余的信息。这是表示多到多关系的正常方法。第三个表称为关系数据库中的连接表。
发布于 2011-03-07 00:00:24
这被称为多到多的关系,或者你通常如何遇到它: M:N.没有办法绕过第三个表,虽然它包含冗余信息,但它遵循关系数据库的设计规则。
是的,这是有权衡的,但是,当你将一项技术从comfortzone中推出时,这就是你所得到的。如果您希望将冗余保持在最低限度,那么NoSql解决方案可能是值得研究的,但是,这可能会迫使您失去关系数据库管理系统的许多优点。你必须权衡你的选择,并与最适合你的存储设施。
发布于 2011-03-06 23:59:30
3起跑表:贡献者、支持者、组织。
->一个组织有许多贡献者,这意味着如果一个贡献者有一个组织,您只需将一个organization_id设置为贡献者表。如果它可以有许多组织,那么您需要第三个表,比如有organization_contributors (organization_id,contributor_id)。
-> --一个组织有许多支持者--与上面的完全相同:)
https://stackoverflow.com/questions/5214387
复制相似问题