我有一个数据库表,其中包含带有以下字段的问题列表: “主题”、“问题”和“颜色”。
有多个科目,例如“数学”或“物理”,并且“问题”字段中有针对这些科目的问题。
“颜色”字段包含诸如“红色”或“绿色”之类的单词,以告诉我的 Web 应用程序对某个主题使用什么颜色主题,例如我可以将数学设置为红色颜色主题,然后将所有颜色设置为红色数据库中带有“数学”的记录的颜色字段将为“红色”。
正如您可以想象的那样,(每个用户)有数百个问题,每个主题的色域都会重复很多次。如果有另一个表格来说明要使用什么颜色,这样会更有效吗:
UserID | Subject | Colour
91 | Maths | Red
13 | Physics | Green
这会是不必要的麻烦还是这是存储主题颜色的更好方法,然后在第一个表中将颜色字段重复表示该用户的所有“数学”主题为“红色”?
提前致谢。
最佳答案
标准化您的表格以创建两个:一个将问题与主题相关联,另一个将主题与颜色相关联。在您的示例代码中,您包括 UserID。每个用户都会设置自己的颜色吗?如果是这样,那么您的示例是正确的。
规范化的目的不是避免多次存储一个值(尽管使用名称作为标识符有很多问题),而是避免多次存储值之间的关联。由于每个科目都有一种颜色,因此该对(数学、红色)只能记录一次。
关于mysql - 数据库中存储重复数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31700848/