我的问题是关于将两个联结表合并为一个的想法,用于类似相关的表。请阅读以了解我的意思。另请注意,这确实是我面临的一个问题,因此与这个论坛有关。这只是一个具有广泛影响的话题,如果您愿意的话,我希望能引起各专业人士的更多参与,以获得更好的“最佳实践”普查。
我有这个相当具有挑战性的数据库设计问题。我希望这将是一个许多人可以贡献和学习的维基。为了使这更容易,我创建了一组图形,并将问题分解为 1) 过程和 2) 结构。
工艺步骤
- 提出了文档(出版物)的请求(DocRequest)。
- 如果所述出版物不存在,则创建新出版物。
- 运行日志 (StatusReport) 会保留以了解满足请求的进度。
注意:对于任何给定的出版物,可能有许多 DocRequests 和 StatusReports(包括更新)
数据库结构
注意:DocRequest 和 StatusReport 表都有许多字段和支持表,未在附图中显示。此外,特定的出版物是那些表中所有记录所属的主记录。
--当前实施--
注意:这种设计的主要缺陷是,每当您创建新的 DocRequest 和 StatusReport 记录时,您还必须在 Publications 表中创建一个新记录(其作用类似于联结表),但这也会创建一个新的 Publication结果。这不是期望的行为。
--典型实现--(对于这种类型的关系)
注意:这没问题,并且可能是理想的,但处理对 DocRequest 和 StatusReport 表的更新,独立地将它们链接到它们所属的出版物。
--我的首选实现--(对于这种特殊情况)
注意:我在这里的想法只是将双联结表合并为一个。在这种情况下,只要 DocRequest 或 StatusReport 发生插入,联结表就会获得一条新记录。我可能会用触发器来处理这个问题。
讨论
现在进行讨论。如果您认为这是一个坏主意,我想从我的数据库开发人员那里知道,以及由此可能产生的问题。我认为记录的净数量应该与两个单独的联结表相同,并且实际上通过节省额外的 ID 列来使用更少的空间。:)
让我知道你们的想法。我真的很想让很多人参与这个讨论。干杯! :)