我有一个数据库表,其中包含以下字段的问题列表: '主题','问题'和'颜色'。
有几个科目,如“数学”或“物理”,在“问题”字段中有关于这些科目的问题。
“颜色”字段包含诸如“红色”或“绿色”之类的单词,以告诉我的Web应用程序用于主题的颜色主题,例如,我可以将数学设置为具有红色的颜色主题,然后全部使用“数学”的数据库中的记录在颜色字段中将显示“红色”。
可以想象,有数百个问题(每个用户),每个主题的色域都会重复很多。如果有另一张表格可以更有效地说出要使用的颜色:
UserID | Subject | Colour
91 | Maths | Red
13 | Physics | Green
这是不必要的麻烦还是这是一种更好的存储主题颜色的方法,然后在第一个表格中重复显示该用户的所有“数学”主题的“红色”?
提前致谢。
答案 0 :(得分:1)
规范化您的表格以创建两个:一个将问题与主题相关联,另一个将主题与颜色相关联。在示例代码中,您包含UserID。每个用户都会设置自己的颜色吗?如果是这样,你的例子是正确的。
规范化的目的不是避免多次存储值(尽管使用名称作为标识符有很多问题),但要避免多次存储值之间的关联。由于每个主题都有一种颜色,因此该对(数学,红色)只应记录一次。
答案 1 :(得分:0)
就数据规范化而言,你所做的事情并不是做这种任务的一个很好的例子。
制作两张桌子
UserID | Subject | ColourID
91 | Maths | 1
13 | Physics | 2
14 | Physics | 2
和另一个颜色表
ColorID | Color
1 | Red
2 | Green
这样您就不会重复第一个表格中每个主题的颜色值。
此外,将来如果您想为任何主题提供另一种颜色,您只需更改颜色表中的一个值。
我希望这是有道理的。