数据完整性的触发器/存储过程

时间:2015-02-24 15:05:15

标签: sql-server stored-procedures triggers data-integrity

我有一个名为Documents的表,它存储有关文档的文件名,注释等。相关领域是:

  • Document_ID - 自动编号
  • Document_Type_ID - FK到查询表Document_Types
  • Table_Unique_ID

Table_Unique_ID与其他表中使用的任何其他ID相关,我们知道相关Document_Type_ID哪个表。

E.g。

  • Document_Type_ID = 1Projects表相关,因此Table_Unique_ID为1357且Document_Type_ID为1的文档记录表示它与{{1}相关}。

  • Project_ID = 1357Document_Type_ID = 2表相关,因此Sites为1357,Table_Unique_ID为2的文档记录表示Document_Type_ID为1357

等等。

这为我们在任何表格中Site_IDProjectsSites等各种记录保留的文档类型提供了极大的灵活性,而不是创建单独的表格({{1 },Contacts等。

但是已经指出使用传统的简单PK / FK关系更难(或不可能)强加数据完整性,因为1357可能与Project_Documents相关或Site_Documents

目前,数据完整性由用户界面检查处理。

问题是,在插入Projects记录或删除“其他”记录时,触发器或存储过程是否有帮助?记录(SitesDocument等)?

如果是这样,我真的很感激被指向正确的方向。

1 个答案:

答案 0 :(得分:-2)

您的主要目标是什么?数据完整性,灵活性和简洁设计?这些是相互冲突的利益。如果你必须在没有触发器的情况下强制执行完整性,那么你必须有一个更丑陋的设计。必须始终在数据库设计中进行妥协。您将获得数据完整性精英主义者对这种设计有多糟糕的看法,但在一天结束时更值得标准化吗?