【发布时间】:2015-07-10 17:10:55
【问题描述】:
我有一张桌子foo。在foo 中有 4 列:id、barTypeA、barTypeB、barTypeC。唯一的候选键是id。 barTypeA、B、C 都是非主属性。这些属性在技术上不仅仅是一个列表; bar 属于 A、B 或 C 类型这一事实并非微不足道。但是,barTypeA、B 和 C 可以为空。
我可以将这张表分成三个表(例如foo、fooToBar 和barType),从foo 到fooToBar 是一对多的关系,但我很好奇如果/原始设计如何违反数据库设计标准或规范形式。
【问题讨论】:
-
我认为这很有趣——如果这不是抽象的,假设每个潜在学生 id 有 150 列的班级信息,你很快就会明白为什么这是一个糟糕的设计。出于某种原因,因为这只是 3 个项目,你觉得你的设计还可以
-
我的 2 美分:如果您的系统预计不会包含更多条形类型,那么请保留原始设计。存在过度规范化这样的事情。
-
我认为@ZoharPeled 是完全正确的,如果某些东西被实施并且正在工作,那么可能没有理由改变它——另一方面,规范化规则和技术的存在是有原因的...... .
-
@ZoharPeled 的问题是您只是要求某人需要更多的酒吧类型。每次我团队中的开发人员尝试这样的命运时,它都会发生
-
@marshall:墨菲永远不会死……我坚信软件的进化。如果只有 3 列可能需要在遥远的将来某个时候转换为规范化结构,那么我认为目前没有理由进行规范化。 但是,如果有可能发生,那么一定要从标准化系统开始。
标签: sql normalization database-normalization