最佳实践 - 我应该为两组相似的数据制作一个或两个表吗?

时间:2017-05-03 00:08:40

标签: sql tsql database-design

我需要一个表来存储测试类型。我已经提供了两个excel电子表格,一个用于微生物测试,一个用于病原体。微生物有5列,病原体有10列。两个表中都有5列。所以有一个额外的5列。

为了给你一个想法,表格列将是这样的:

**Microbial** 

Test        Method    IncubationStage1 



**Pathogens**

Test        Method   IncubationStage1  IncubationStage2 Enrichment

因此,为微生物提供一个表,为病原体提供一个表更好,还是更好地为测试提供一个表并且在其中有两个表?将微生物放在一张桌子上是不是很糟糕,据我所知,只有一半的柱子会被利用?或者最好将相关项目保存在同一个表格中,然后用列分隔它们#34;输入"?

显然两者都可以正常工作,但我想知道哪个更好。

1 个答案:

答案 0 :(得分:4)

这些问题的答案始终是......这取决于。"

对于我的观点,如果您认为您希望通过测试或方法跨致病性或微生物类型汇总数据,那么您当然应该将数据放在同一个表格中,并附加一个区别于它们的列。

可能可能更好"正常化"你的桌子是这样的:

Table1: ExperimentID_PK      ExperimentTypeID_FK    Test    Method
Table2: MeasurementRecordID_PK  ExperimentID_FK   Timestamp  Other metadata about the record 
Table3  MeasurementID_PK     MeasurementTypeID_FK  MeasurementValue   MeasurementRecordID_FK
Table4: MeasurmentTypeId_PK  Metadata   About   Measurement   Types
Table5: ExperimentTypeId_PK  Metadata   About   Experiment   Types

...所有叶子数据元素通过外键指向其父数据元素,然后您在SQL语句中将数据连接在一起,并根据查询类型应用索引以获得最佳性能想做。显然,问题中的一行最终会在此架​​构中的多个表中显示为多行,并且只有在查询时才可以将它们重新组合成单​​独的行(例如,由MeasurementRecordID绑定)。

但也有其他模式,在No-SQL中,土地正常化可能是敌人。如果数据集以更臃肿的格式存储以使查询结构更加明显,则在某些域中切片和切块数据会变得更容易。因此,它可以通过您的用例进行思考。