我有3个名为“Projects”,“Contracts”和“Incidents”的数据库表.该设计用于基于项目的维护系统.客户能够在项目上建立合同以维护各种安装.此外,可能或可能与项目合同无关的孤立事件应该是可报告的,例如有缺陷的安装.
项目与合同具有1对多的关系(每个项目可以有多个合同,或者没有合同).来自事故的记录最终必须可以解析为项目,但并不总是要求合同存在.在某些情况下,项目可能没有任何合同,但它应该能够发生事故.
我们的数据库设计师建议事件持有项目和合同的外键.实际上,这是一种与父母和祖父母分开的关系,以允许没有父记录.
另一种方法是创建一个“虚拟”合同.这两种方案都没有我的偏好.
更糟糕的是,合同还引用了另一个表中的“债务人”.因此,在没有合同的情况下,事件也应该能够引用债务人.
我不禁感到提议的方法违反了所有正常形式,并且有可能产生未来的问题,包括成为维护问题,因此我正在寻找一种能够在整个表格中保持完整性的替代解决方案.另外,是否有人熟悉这种方法可能导致的其他问题?
对于它的价值,我是负责编写将与该数据库一起使用的应用程序的开发人员.该项目将在WPF中使用LINQ over sql创建.一个要求是它应该能够查询项目记录中的所有事件,包括通过合同引用的事件.
我在SO上寻找过类似的问题,尽管有许多处理祖父母的密钥,但它们似乎都不符合我的问题.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。