这是不必要的正常化吗?

时间:2014-05-17 07:38:39

标签: mysql database normalization

我在蜗牛管理游戏中有一些MySQL表:用户,种族,罐子,蜗牛。蜗牛表中有很多信息被丢弃(从遗传字符串信息到功能属性,如速度和耐力到视觉属性,如shellColorR,B和G,交配属性,如唤醒延迟,遗产属性,如父蜗牛ID等),我会喜欢以某种逻辑方式将它分成多个表。

我正在考虑将所有这些信息分成不同的类别,并有一个表格(蜗牛ID是每个的主键):

  • 蜗牛(ID,名称,当前jar)
  • snail_genes(shellColorGeneAllele1,shellColorGeneAllele2,眼睛颜色,图案形状等相同)
  • snail_heritage(stagID,doeID)
  • snail_traits_behavioural(currentAggression,baseAggression,aggressionModifier等)
  • snail_traits_physical(年龄,健康,基础/当前/模拟速度等)
  • snail_traits_visual(shellColor,eyeColor,patternColor,patternShape等)

然而,虽然我认为将这些组织成单独的主题表是有道理的 - 但实际上它似乎并没有真正提供那么多的好处。我没有避免任何重复数据 - 每个表都有一个每个蜗牛的唯一记录。

这种结构的最佳方法是什么? 应该我只是在一个大的蜗牛表中拥有上述所有内容,还是有更好的方法来组织这些数据?

4 个答案:

答案 0 :(得分:2)

除非蜗牛在最后五个表中的每一个表中都有多行,否则它不会正常化'根本就是:它只是不必要的表分裂。

答案 1 :(得分:1)

如果标准化规则不强迫您这样做,请不要分成表格。 创建规范化数据库并打印图表或创建注释。 然后你可以创建类似于model和getAttribute方法的东西,它有属性名称参数。

答案 2 :(得分:1)

喜欢这个想法 - 总有一些让我对蜗牛微笑的东西!但是我离题了......

真的,对此没有正确或错误的答案。如果总有1-1关系,那么一个大表不是问题。是否会使您的代码和/或数据库更易于分割表格?分裂的通常原因似乎不适用于此。

答案 3 :(得分:1)

对于我在数据库设计方面的经验,您可以将这些数据保存在同一个表中。分成不同的表格不会给你带来任何好处。您可能最终会获得更多空间分配:我认为您的PK上有索引构建,因此您将获得六个索引而不是一个索引。