Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 用于存储包含大量问答类型数据的报表的数据模型_Database Design - Fatal编程技术网

Database design 用于存储包含大量问答类型数据的报表的数据模型

Database design 用于存储包含大量问答类型数据的报表的数据模型,database-design,Database Design,我必须设计模型来存储包含多个部分的报表。每个部分包含一组问题和答案以及一些数据表 我做出了一些设计决策,希望验证我是否走上了正确的轨道: 我没有在数据模型中存储任何对节的引用。这是好的还是我应该将文档节的引用存储在DB中?我想在应用程序级别处理这个问题。 我将每个问题创建为一个专栏,而不是设计一个通用的问答模型。事实上,我创建了一个通用的问答模型——但决定不使用它,因为需求大部分是已知的,并且会有一些最小的更改。问题文本可以由应用层处理,只有答案存储在DB中-我需要一些关于我在这里所做的是否是一

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

我做出了一些设计决策,希望验证我是否走上了正确的轨道:

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


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

我可能不会将每个问题/答案存储为一列。你很难增加/减少问题,也很难为未回答/未提问的问题存储空数据。同意Matthew PK。将每个Q/A存储为一列只会导致填充稀疏的表,并有可能使记录太大而无法有效访问。根据你的答案被允许的时间长短,你可以很快达到一个实际的极限。@Matthew,@Joel-谢谢你的评论。进一步思考后,我也得出了你们两人建议的相同结论。你对我的第三点有什么想法吗?