我正在学习数据库系统考试,显然Attribute-Based Checks
和Tuple-Based Checks
之间存在差异。可悲的是,没有很好的解释,谷歌搜索后我仍然很困惑。任何人都可以解释它们之间的区别吗?
感谢。
答案 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