【发布时间】:2015-01-25 09:27:16
【问题描述】:
我正在尝试为我正在构建的友谊网站创建一个数据库。我想存储有关用户的多个属性,例如性别、教育程度、宠物等。
解决方案 #1 - User 表:
id | age | birth day | City | Gender | Education | fav Pet | fav hobbie. . .
--------------------------------------------------------------------------
0 | 38 | 1985 | New York | Female | University | Dog | Ping Pong
我遇到的问题是属性列表不断出现,现在我的用户表有 20 列。
我觉得我可以通过为每个属性创建另一个表来规范这一点,见下文。但是,这会创建许多连接,并且我仍然在用户表中留下了很多列。
解决方案 #2 - User 表:
id | age | birth day | City | Gender | Education | fav Pet | fav hobbies
--------------------------------------------------------------------------
0 | 38 | 1985 | New York | 0 | 0 | 0 | 0
Pets表:
id | Pet Type
---------------
0 | Dog
任何人都知道如何解决这个问题,感觉这两个答案都是错误的。该数据库的正确表设计是什么?
【问题讨论】:
-
查找“实体属性值”。基本上,您的某些属性不“值得”列,它们可以只是键值对表中的一行。
-
但是下拉菜单中的值怎么样,用户只能从选定的列表中输入,比如宠物的 4 种选择(狗、猫、鸟、鱼)。这值得一栏吗?
标签: sql-server database normalization