1

我目前正在研究将通过实体框架访问的 SQL Server 关系数据库。我有几个问题似乎无法找到正确的答案。

请看我的数据库模型图:

在此处输入图像描述

1. 我不太确定ProblemType实施是否正确。正如现在已经设置的那样,两列都允许输入空值,ProblemType因为它将包含 aProblemTypeRoadID或 a ProblemTypeVandalismID。所以问题真的是是否可以通过删除ProblemType表格和在表格中关联和关联ProblemTypeRoadProblemTypeVandalism对模型进行反规范化ProblemDesc

2. 查看Problem表格,您会发现一列名为HistoryIDs。此列应包含一个以逗号分隔的字符串,其中包含HistoryIDs与 a 相关的所有内容Problem。AHistoryID本质上是 a ProblemDescID(因为 a在更新时ProblemDesc将其IsHistory列设置为 true),因为ProblemDesc在更改时会复制 a。我的问题是:ProblemDescIDsHistoryIDs列添加多个的最佳方法是什么?如果它是“1,5,7”之类的东西,那么很容易找到给定的所有历史记录ProblemDesc

3. 对图表的任何其他建议也非常欢迎:)

提前致谢!

编辑:请考虑修改后的图表:

在此处输入图像描述

既然您给了我一些很好的改进建议,我已经尝试实施您的大部分建议。ProblemType已被删除并ProblemHistory添加。还对其父表的方式WorkerComment和关系进行了更改。Media这种实施会奏效吗?

谢谢!

4

1 回答 1

3
  1. 您可以删除问题类型表,只需将问题类型道路和问题类型破坏与问题类型 ID 关联到问题类型表

  2. 不,不应该。您应该有一个表 ProblemHistory,其中包含 ProblemID 和 HistoryID 列,其中每个 History 都有一行。

  3. 看来您可以有与多个问题相关的工人评论。应该反过来吗?对于媒体和问题描述也是如此。一个问题可以只有一个工人工作吗?此外,MSSQL 有一个可以用来代替 CoordinateLat 和 CoordinateLng 的地理类型。

于 2012-11-20T09:05:21.453 回答