是否可以定义这样的约束:
A <- SELECT Enrolment course = x AND student = y
B <- PROJECT A OVER student
COUNT(B) < 3
我对“AND”部分特别感兴趣。我从书中知道剩下的就行了。
语法基于Codd [1],不适用于任何特定的DBMS。
来源:
答案 0 :(得分:1)
使用约束,不,一般情况下不行。这对于约束来说有点复杂。
如果你想要这样的东西,你通常不得不求助于触发器,触发器通常可以运行任意复杂的代码。假设您的DBMS拥有它们之前的插入前和更新前触发器应该可以解决问题。
请注意,触发器几乎肯定会对性能产生影响,它们只应在必要时使用,但如果数据必须遵守规则,则应使用它们,不要让任何人以不同方式告诉您)
一般规则是:如果约束是数据的属性,它应该由DBMS本身完成(具有约束或触发器或您可能可用的任何特定于供应商的事物) )。
但是,如果约束是应用程序的属性,它应该由应用程序处理,而不需要DBMS的任何努力。
实际上,我认为我没有曾经看到后一种情况出现,因为应用程序和数据往往非常紧密,但我从来没有见过小绿人它们可能存在: - )