报告可以有多个图表。 图表表格如下所示:
上面的 ChartId 可以将 ChartId 映射到以下图表类型的一个:
我正在使用SQL Server,不幸的是,使用CouchDB等替代解决方案并不是可行的选择。我还打算使用Entity Framework将这些表映射到实体。
这个设计是我的第一次尝试,我发现这个设计存在多个问题:
我认为这是一个普遍存在的问题,有规定的解决方案和已建立的方法来处理它。
我是否在设计的正确道路上?如果是这样,如何克服上述问题(FK,连接,跨多个表的唯一ID和映射)。
这个answer对策略非常全面。 SQL Team关于implementing table inheritance in SQL Server的文章让我得到了我想要的地方。
答案 0 :(得分:2)
您是否考虑过将图表放在同一个表格中并使用Table per heirarchy inheritance模式?其中的链接显示了如何在Entity Framework中实现它。它是否可行取决于所有这些图表类型的差异以及每个图表需要多少字段。
还有Table per type继承,它与您已经描述的更为相似。
答案 1 :(得分:2)
我将使用表继承方案解决这个问题:
Chart (ChartId, ChartTypeId)
PK (ChartId, ChartTypeId)
CHECK ChartTypeId IN ('Line', 'Bar', 'Pie')
LineChart (ChartId, ChartTypeId)
PK (ChartId, ChartTypeId)
FK (ChartId, ChartTypeId) -> Chart
CHECK ChartTypeId IN ('Line')
要添加图表,首先要添加到“基础”图表表格,然后添加到相应的“子类型”图表表格中。检查约束使一切都保持一致。
答案 2 :(得分:1)
折线图。饼图和条形图是图表的专用形式。
查找关于此模式的好文章的“泛化专业化关系建模”。
答案 3 :(得分:0)
或者,我将不得不进行联接 获取图表数据的所有表格。
是的,没关系。