【发布时间】:2010-12-04 20:39:58
【问题描述】:
我有很多字段是多值的,不知道如何存储它们?如果我做 3NF 那么有很多表。例如:国籍。
一个人可以有单一或双重国籍。如果对偶,这意味着它是一对多。所以我创建了一个用户表和一个 user_nationality 表。 (已经有一个国籍查找表)。或者我可以将两个国籍放入同一行,如“美国、德国”,然后在运行时取消序列化。但是我不知道我是否可以搜索这个?如果我只搜索德国人,它会出现吗?
这是一个例子,我有超过 30 个多值字段,所以我假设我不会为此创建 61 个表? 1 个用户表,30 个查找表来保存每个多值项的查找,30 个表来保存多值项的用户值?
您还必须记住,一些多值字段组合在一起,例如“我学习过的大学”,它具有一组字段,例如大学名称、学位类型、时间线等。一个用户可以有 1对其中许多。所以我假设我可以为此创建一个单独的表,例如带有这些字段的 user_education,但是假设其中一个字段也是固定列表多值,例如我访问过的大学校园,那么我们将最终进入一个永无止境的 FK 表链对于社交网络来说不是一个好的设计,因为它的目标是将尽可能多的数据放入尽可能少的表中以提高性能。
【问题讨论】:
标签: php mysql database schema social-networking