基于属性的检查与基于元组的检查

时间:2014-04-23 16:52:13

标签: sql database

我正在学习数据库系统考试,显然Attribute-Based ChecksTuple-Based Checks之间存在差异。可悲的是,没有很好的解释,谷歌搜索后我仍然很困惑。任何人都可以解释它们之间的区别吗?

感谢。

2 个答案:

答案 0 :(得分:1)

SQL uses the terms table, row and column for relation, tuple and attributes respectively. - www.dbtutorialnucleus.co.in

因此,您可以根据属性(列)或元组(行)进行检查或约束。

编辑:“它们在功能,性能和声明方面有何不同?”

功能:差异就是你要推断的,如果你有一个包含多个列的约束,它将是基于元组的。

性能:它有所不同,但平均约束单个列比单个列快,但如果你的逻辑需要一个元组,那么你必须拥有它。

声明:据我所知,他们的语法是相同的,区别是隐含的,但很容易就会出现需要明确区分的系统。

答案 1 :(得分:1)

基于属性和基于元组的检查是完整性约束的类型。

虽然基于属性的列对单独的列执行检查,但基于元组的记录包含记录。 对于instanse,如果要在两列上指定基于属性的约束,则需要如下语法:

 create table.....
 column1 CHECK(column1 >= 1,000)
 column2 CHECK(column2 >12000)
 .....

上面的语法将检查插入第1列和第2列的每个值的条件 但是,可能存在这样一种情况,即您需要满足其中任何一个条件。然后,您可以不再检查列级别的那些。在那种情况下:

create table.....
column1 ...,
column2....,
check(column1 >= 1,000 or column2 >12000)

可以在这里找到一个很好的解释: http://infolab.stanford.edu/~ullman/fcdb/jw-notes06/constraints.html