我正在开发 Android 应用程序和 JSON Web 服务。 Android 应用程序将使用这些 Web 服务。
此外,我将在两侧都有一个数据库,并且服务器端和客户端将具有相同的数据库架构。
我将解释我想要做什么:
- 用户创建一个或多个电子报告。
- 每个电子报告都有一个QAP。 QAP 表将是以下内容的副本 服务器端数据库。
- 每个QAP都有一个或多个缺陷。 缺陷将是副本 服务器端数据库。
- 用户可以根据需要定义缺陷。为了做到这一点,我有 添加了 EReportDefect 表。
- 缺陷可能包含一张或多张照片。我创造 EReportDefImg 用于存储 EReport、EReportDefect 与一张或多张图像之间的关系。
我的问题是:我需要 eReportId 作为 EReportDefImg 上的 FK 吗?
我添加了该列,因为我可以用来查找 EReport 的所有缺陷图像。
最佳答案
Do I need eReportId as FK on EReportDefImg?
没有。
EReportDefImg.eReportId
将允许 EReportDefImg
行引用 EReportDefect
行,以便 EReportDefect.eReportId
与 EReportDefImg.eReportId
不同。
I've added that column because I could use to find all defect's images for an EReport.
您仍然可以通过连接 EReportDefImg
和 EReportDefect
来获取 EReportDefect.eReportId
.
如果您想避免 JOIN,可以使用标识关系将 eReportId
包含在 EReportDefect
的 PK 中,这样也会将其迁移到 EReportDefImg.eReportId
(然后您可以直接使用它进行过滤,无需 JOIN)。 defectId
也是如此。
注意:我添加了 eReportDefectNo
,以允许 EReport
和 Defect
的同一组合有多个 EReportDefect
。如果不需要,请删除 eReportDefectNo
。
顺便说一句,您的模型现在允许将单个 EReportDefect
连接到两个不同的 QAP
(一个通过 EReport
另一个通过缺陷
)。这是故意的吗?
关于database-design - 添加(或不添加)FK 以使 SELECT 更简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12421939/