【发布时间】:2010-09-28 04:17:57
【问题描述】:
假设您是 GM dba,您必须围绕 GM 模型进行设计
这样做更好吗?
- table_model
- 类型{凯迪拉克、土星、雪佛兰}
还是这个?
- table_cadillac_model
- table_saturn_model
- table_chevrolet_model
假设一个模型的业务线具有相同的列,并且每个子类型有超过一百万条记录。
编辑:
- 有很多 CRUD
- 有很多处理器密集型报告
- 在任一架构中,都有一个 model_detail 表,其中包含每个模型的 3-5 条记录,并且每个模型的详细信息不同(您不能向 saturn 模型添加凯迪拉克详细信息)
- 开发团队在数据库复杂性方面没有任何问题
- 我不太确定这是一个标准化问题。即使结构相同,它们也可能被视为不同的实体。
编辑:
将结构划分为多个表的原因 - 业务线可能对零件有不同的业务规则 - 每个业务线的 addModelDetail() 可能不同(即使数据格式相同) - 高添加/更新活动 - 使用分区结构而不是单一结构获得更好的性能(我在这里猜测并不确定)?
我认为这是 EAV 问题的一种变体。当作为 EAV 设计提出时,单表结构通常被认为是一个坏主意。当以这种方式提出时,单表结构通常被认为是一个好主意。有趣...
我认为最有趣的答案是有两种不同的结构 - 一种用于 crud,另一种用于报告。我想我会尝试用于报告的连接/扁平视图和用于 crud 的多个表,看看它是如何工作的。
【问题讨论】:
-
两者都有意义。您必须定义“更好”才能确定哪个更符合您的要求。