我应该规范这些字段吗?

时间:2018-06-26 06:34:55

标签: mysql sql database-normalization

我被撕毁了。我正在处理非常难以处理的数据;目前,“职位”有100列。

我将所有列都放入工作中,因为每次获得工作的信息时,我将有99.99%的时间需要全部数据。因此,如果我是学生,将它拆分可能会给我更高的成绩,但是每次加载数据时,它都可以分解为联合。

我发现很难决定一个例子是货物。一艘船可以有一件(80%的时间),2件(99%的时间)或3件(1%的时间)货物。从不4.与工作按1:n关系存储货物非常容易,但这也意味着:

  • 每次加载工作时,我需要一个额外的查询来获取货物
  • CRUD有点痛苦,因为我必须在拥有权限的情况下另建一家商店。

但是,现在我的数据库中有这些列:

cargoId1, cargoDescription1, contractTonnage1,
contractTonnageTolerance1, commentsOnTonnageTolerance1, 
tonnageToBeLoaded1, tonnageLoaded1

cargoId2, cargoDescription2, contractTonnage2, 
contractTonnageTolerance2, commentsOnTonnageTolerance2, 
tonnageToBeLoaded2, tonnageLoaded2

cargoId3, cargoDescription3, contractTonnage3, 
contractTonnageTolerance3, commentsOnTonnageTolerance3, 
tonnageToBeLoaded3, tonnageLoaded3

你会怎么做?想法?

1 个答案:

答案 0 :(得分:1)

我必须警告您,对于“主要基于观点的”问题,您可能会投票,关闭投票和/或删除投票。我认为您的问题主要基于观点,因为它实质上是“规范化的利与弊”的同义词。 (ps:我讨厌这样的事实,尽管这样会使您不满意)。

如果您希望两全其美,那么您可以做的一件事就是使表格标准化,并创建一个视图,该视图将使用PIVOT返回非标准化形式。这样,您的数据的完整性就可以通过规范化得到改善,并且编写查询将变得更加容易。将执行(稍微有一个好的索引)会影响性能的联接,但是imo这对于完整性来说是很小的代价。