【发布时间】:2011-06-22 20:50:44
【问题描述】:
我正在开发一个可追溯系统,用于记录多层次产品制造过程中的某些活动。祖父项由 2 个或 4 个父项组成,而父项又由 2 个子项组成。
在每个级别,在制造过程的不同点,对所有三种类型的项目进行泄漏测试 - 记录的信息将相同:泄漏率、通过或失败标志、时间戳等。
我是否要选择一个 LeakTests 表,它有一个通用的 FK 字段来保存与测试相关的项目的 ID,以及一个指示 FK 引用哪个表的指示器:
PK: LeakTestID, Int
FK: LeakTestItemID, Int
FK: LeakTestTypeID, Int
LeakageRate, Float
Result, Bit
我是否将每种类型的 FK 存储在不同的字段中?
PK: LeakTestID, Int
FK: ChildID, Int
FK: ParentID, Int
FK: GrandparentID, Int
LeakageRate, Float
Result, Bit
或者我是否选择 3 个泄漏测试表,每个级别的项目一个。
我可以看到每种方法的各种优点和缺点,并且我已经改变了好几次想法。
有什么想法吗?恐怕对这个系统的要求几乎没有定义,而我的一部分工作就是与业务和下游客户角力,以压住双方。但事实上,我无法确定数据将如何使用以及需求是否/如何可能发生变化。
澄清:我认为 g-parent/parent/child 位已经抛出了人们 - 3 层不是相同的层,它们是完全不同的,例如:
ATS:
PK: ATSID, Int
MeasurementA char()
MeasurementB char()
MeasurementC char()
SleevedPair:
PK: SleevedPairID, Int
MeasurementD char()
MeasurementE char()
SleevedItem:
PK: SleevedItemID
MeasurementG char()
MeasurementH char()
MeasurementI char()
MeasurementJ char()
MeasurementK char()
...碰巧每个对象都有一个或多个与之关联的泄漏测试。
【问题讨论】:
-
我认为要求缺乏明确性体现在问题中缺乏特异性。
-
好的,这将澄清问题。您说,“对所有三种类型的项目进行泄漏测试 - 针对每种类型记录的信息将是相同的:”适用于“组件”中所有项目的一项测试......或者它是一项测试程序集中的每个项目?
-
@Stephanie - 最初,SleevedItem 将进行泄漏测试。然后它将与另一个 SleevedItem 连接,创建一个 SleevedPair,该 SleevedPair 也将进行泄漏测试。然后将几个 SleevedPairs 安装到 ATS 中,并进行 5 次进一步的泄漏测试。在每种情况下,如果泄漏测试失败,该项目可能会被返工并再次进行泄漏测试。我希望这可以解决所有问题。
标签: sql sql-server database-design data-structures normalization