【发布时间】:2011-04-09 12:06:21
【问题描述】:
假设我有以下表格:
- 人(person_id,姓名)
- 种族(ethnicity_id,姓名)
- person_ethnicity(person_id、ethnicity_id)
这将允许我通过person_ethnicity 表定义一个person 以拥有0 个或多个ethnicity 和一个ethnicity 以拥有0 个或多个person。
现在,假设我有很多这些“种族”类型的表,我必须与person 表建立相同的多对多关系。我的桌子数量会增长得非常快。
换成这样的表格是不是个好主意:
- foo (person_id, other_table_name, other_table_pk)
一个例子:
=================================================
| person_id | other_table_name | other_table_pk |
=================================================
| 1 | ethnicity | 1 |
-------------------------------------------------
我以这种方式失去了参考完整性,但我认为建模会更容易。这种方法是一个好主意还是一个可怕的、可怕的主意?
(另外,我上面描述的方法有合适的名称吗?)
【问题讨论】:
-
您是否打算与种族以外的人建立多种其他关系?我问是因为您的第二个解决方案似乎您计划将多个表/ID 联合起来。
-
@Khez - 是的,如我最初的帖子中所述。
-
您描述了一个人和一个关系种族。然而,您的第二个解决方案意味着拥有其他关系,例如国籍。如果不是这种情况,那么您的第二个解决方案是一个非常糟糕的主意。
-
@Khez - 我还描述了我有很多需要建模的种族类型表。
-
我不是唯一一个想念它的人......我责怪互联网幽灵。
标签: mysql database innodb database-design