定义DB约束

时间:2012-03-29 00:17:08

标签: constraints rdbms

是否可以定义这样的约束:

A <- SELECT Enrolment course = x AND student = y
B <- PROJECT A OVER student
COUNT(B) < 3

我对“AND”部分特别感兴趣。我从书中知道剩下的就行了。

语法基于Codd [1],不适用于任何特定的DBMS。

来源:

  1. http://en.wikipedia.org/wiki/Relational_algebra

1 个答案:

答案 0 :(得分:1)

使用约束,不,一般情况下不行。这对于约束来说有点复杂。

如果你想要这样的东西,你通常不得不求助于触发器,触发器通常可以运行任意复杂的代码。假设您的DBMS拥有它们之前的插入前和更新前触发器应该可以解决问题。

请注意,触发器几乎肯定会对性能产生影响,它们只应在必要时使用,但如果数据必须遵守规则,则使用它们,不要让任何人以不同方式告诉您)

一般规则是:如果约束是数据的属性,它应该由DBMS本身完成(具有约束或触发器或您可能可用的任何特定于供应商的事物) )。

但是,如果约束是应用程序的属性,它应该由应用程序处理,而不需要DBMS的任何努力。

实际上,我认为我没有曾经看到后一种情况出现,因为应用程序和数据往往非常紧密,但我从来没有见过小绿人它们可能存在: - )