0

您会为 TemplateTeststep 和 TestplanTeststep 表引入表继承吗?

TestplanTeststep 是/将始终是 TemplateTeststep(红色)加上一些可编辑字段(紫色)的只读副本

TemplateTeststep 将具有永远不会出现在 TestplanTeststep 表中的各个字段。TestplanTeststep 将具有永远不会出现在 TemplateTeststep 表中的各个字段。

此外,TestplanTeststep 表包含 TemplateTeststep 表中的一些只读字段。(没有人应该更改它们,因为它们需要安全用于报告/调查等......)

在此处输入图像描述

TemplateTeststep 仍然具有字段 ModifiedBy 和 ModifiedAt,它们不会出现在 TestplanTeststep 上,用于历史跟踪谁更改了什么/何时更改。

4

2 回答 2

0

这实际上取决于使用的上下文。

速度是一个大问题吗?如果对这些数据进行大量读取,将单个逻辑实体的值拆分到两个表中会增加读取延迟。在低吞吐量系统中,这可以忽略不计,但如果您有数亿行,那么这将加起来。

限制数据集的大小是否比读取访问性能更重要?众所周知,非规范化数据通常会使它们更快地读取(它们只存储在一个连续的空间中,而不是存储在磁盘的不同扇区中)并减少所需的锁定量,但会增加存储空间量整个数据集。

您是在使用 ORM 解决方案,还是将“手动”跨表加入?前者可能会使数据拆分变得微不足道,而后者可能更容易出错。

我认为这里没有正确或错误的答案。我倾向于使用在代码库的其余部分/组织的其余部分中使用的任何方法。

对于它的价值,可能会使用多表继承,因为我倾向于将 Java 的 Hibernate 用于 ORM。

于 2012-06-24T09:10:38.000 回答
0
  1. 您应该Foreign Key在 TestPlanTestStep 中有一个Table

  2. TemplateTestStep 和 TestPlanTestStep的Primary-Foreign关键Relation-Ship要遵循Second form of Normalization

  3. Design就像De-Normalization有人需要报告一样。如果不是这样,请删除Duplicate列以避免redundancyDatabase.

于 2012-06-24T11:20:51.193 回答