📜  门| GATE-CS-2014-(Set-1)|第65章

📅  最后修改于: 2021-06-28 18:53:49             🧑  作者: Mango

给出以下语句:

S1: A foreign key declaration can always 
        be replaced by an equivalent check
        assertion in SQL.
    S2: Given the table R(a,b,c) where a and
        b together form the primary key, the 
        following is a valid table definition.
        CREATE TABLE S (
            a INTEGER,
            d INTEGER,
            e INTEGER,
            PRIMARY KEY (d),
            FOREIGN KEY (a) references R) 

以下哪一项是正确的?
(A) S1为真,S2为假。
(B) S1和S2均为TRUE。
(C) S1为FALSE,S2为TRUE。
(D) S1和S2均为FALSE。答案: (D)
说明:检查断言不足以替换外键。外键声明可能具有级联删除,仅通过检查插入是不可能的。

使用检查条件,在向子表中添加元素时,可以起到与外键相同的作用。但是,当我们从父表中删除一个元素时,参照完整性约束不再有效。因此,检查约束不能替换外键。

因此,我们不能只用一张支票代替它。

S2: Given the table R(a,b,c) where a and
        b together form the primary key, the
        following is a valid table definition.
        CREATE TABLE S (
            a INTEGER,
            d INTEGER,
            e INTEGER,
            PRIMARY KEY (d),
            FOREIGN KEY (a) references R) 


错误的:
一个表中的外键应唯一地标识其他表的一行。在上面的表定义中,表S具有一个外键,该外键引用R的字段’a’。表S中的字段’a’不能唯一地标识表R中的行。
这个问题的测验