【问题标题】:Data model to store a report with lots of question and answer type data用于存储包含大量问答类型数据的报告的数据模型
【发布时间】:2012-10-04 16:25:50
【问题描述】:

我必须设计模型来存储包含许多部分的报告。每个部分都包含一组问题和答案以及一些数据表。

我已经做出了一些设计决定,并想验证我是否走在正确的轨道上:

  1. 我没有存储对数据模型中部分的任何引用。这是好还是我应该在数据库中存储对文档部分的引用?我想在应用程序级别处理这个问题。
  2. 我将每个问题创建为一个列,而不是设计一个通用的问答模型。事实上,我创建了一个通用的问答模型 - 但决定不使用它,因为需求大多是已知的,并且会有一些最小的变化。问题文本可以由应用层处理,只有答案存储在数据库中——我需要一些关于我在这里所做的是否是一个好的做法的意见。
  3. 为每个属性/问题的逻辑分组创建一个实体是个好主意吗?我遵循的原则是为重复的属性组创建一个实体。对于非重复属性,我直接在整个报表实体下创建所有这些属性,这会导致该实体中的许多属性。从数据库设计的角度来看,我不确定这是好事还是坏事。如果我必须创建实体来存储一组相关的属性,那么我可以只对该实体有一个 FK,它在模型上看起来会更优雅,但是涉及到一个连接 - 这里哪种方法更好,我该怎么做决定一个还是另一个?

【问题讨论】:

  • 我可能不会将每个问题/答案存储为一列。您使添加/减去问题变得困难,并且还为未回答/未提出的问题存储空数据。
  • 同意马修 PK。将每个 Q/A 存储为一列只会导致表格稀疏,并冒着使您的记录太大而无法有效访问的风险。根据您的答案被允许多长时间,您可能会很快达到实际限制。
  • @Matthew, @Joel - 感谢您的 cmets。在进一步考虑这一点时,我也得出了与你们俩建议的相同的结论。你对我的第三点有什么想法吗?

标签: database-design


【解决方案1】:

这就是我所做的。

我设计了一个通用的问答模型,它可以在任何报告中支持任意数量的问题以及它们的任意组合。

【讨论】:

    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2011-03-22
    • 2014-06-23
    • 2014-09-12
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多