gpt4 book ai didi

database - 数据库/实体设计 : table related to any one of multiple tables

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:31 25 4
gpt4 key购买 nike

一个报告可以有多个图表。 Chart 表格如下所示:

  • 图表 -- Id, ChartId, ReportId, ...

上面的 ChartId 可以将 ChartId 映射到以下任一图表类型:

  • 线:ChartId粗细YAxisXAxis颜色,...
  • 饼图:ChartId半径颜色、...
  • 条形:ChartId宽度颜色边框、.. .

我正在使用 SQL Server,不幸的是,使用 CouchDB 等替代解决方案不是可行的选择。我还打算使用 Entity Framework 将这些表映射到实体。

这个设计是我的第一次尝试,我发现这个设计存在多个问题:

  1. 图表ReportId 不能是多个表的外键,因此强制执行外键是个问题。
  2. 运行 SQL(或 Linq)查询时,我必须运行两个查询来获取图表类型,然后查询该表。或者,我必须对所有表运行联接 以获取图表数据。
  3. 在针对图表类型进行连接时,这些表中的 ChartId 需要是唯一的,因此 ChartChartId 仅映射到一个LineChartIdBarChartIdPieChartId
  4. 用 EF 映射它会很棘手。

我想这是一个足够普遍的问题,有规定的解决方案和既定的方法来处理它。

我的设计是否走在正确的道路上?如果是,如何克服上述问题(FK、join、跨表唯一id、映射)。

解决方案

answer攻略讲的很全面。以及 SQL 团队关于 implementing table inheritance in SQL Server 的文章把我带到了我想要的地方。

最佳答案

您是否考虑过将图表放在同一个表中并使用 Table per heirarchy inheritance图案?那里的链接显示了如何在 Entity Framework 中实现它。它是否可行取决于所有这些图表类型的不同程度以及每种图表类型需要多少字段。

还有Table per type与您已经描述的更相似的继承。

关于database - 数据库/实体设计 : table related to any one of multiple tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/803905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com