我有一个名为Documents的表格,它存储文件的文件名,备注等。相关的字段有:触发器/用于数据完整性的存储过程器
Document_ID
- 自动编号Document_Type_ID
- FK查找表Document_Types
Table_Unique_ID
的Table_Unique_ID
涉及到任何其他表中,我们使用了其他ID的知道其中表格由相关Document_Type_ID
。
E.g.
Document_Type_ID = 1
涉及Projects
表,所以一个文档与记录的1357一个Table_Unique_ID
和Document_Type_ID
1意味着它涉及Project_ID = 1357
。Document_Type_ID = 2
涉及Sites
表,所以一个文档记录用的1357和2Document_Type_ID
Table_Unique_ID
装置1357的
等一个Site_ID
。
这允许什么类型的文档,我们任何表中的各种记录保持了极大的灵活性,Projects
,Sites
,Contacts
等而不是创建单独的表(Project_Documents
,Site_Documents
等)。
但它已经指出,数据的完整性是很难(甚至不可能)使用传统的简单的PK/FK关系强加,因为这1357可能涉及要么Projects
或Sites
。
当前数据完整性由用户界面检查处理。
问题是,当插入Document
记录或删除'其他'记录(Projects
,Contacts
等)时,触发器或存储过程是否有帮助?
如果是这样,我真的很感激被指出正确的方向。
看似很大的灵活性 - 但从数据完整性的角度来看,这是一个**可怕的**设计。我不会浪费时间在调查触发器和东西 - **修复设计!** – 2015-02-24 15:09:06
我同意@marc_s 100%。设计看起来很“酷”,但实际上它会变得痛苦而缓慢。 – 2015-02-24 15:11:33
*目前数据完整性是由用户界面检查处理* - 这使我的胆量畏缩.....基本上,**数据完整性**在这种情况下不***处理.... – 2015-02-24 15:13:19