单选题
在SQL Server 2008中,设有数据库应用系统中有商品类别表(商品类别号,类别名称,类别描述信息)和商品表(商品号,商品类别号,商品名称,生产日期,单价,库存量)。该系统要求增加每种商品在入库的时候自动检查其类别,禁止未归类商品入库的约束。下列实现此约束的语句中,正确的是______。
A.ALTFR TABLE商品类别表ADD CHECK(商品类别号IN
(SELECT商品类别号FROM商品表))
B.ALTER TABLE商品表ADD CHECK(商品类别号IN
(SELECT商品类别号FROM商品类别表))
C.ALTER TABLE商品表ADD
FOREIGN KEY(商品类别号)REFERENCES商品类别表(商品类别号)
D.ALTER TABLE商品类别表ADD
FOREIGN KEY(商品类别号)REFERENCES 商品表(商品类别号)
【正确答案】
C
【答案解析】[解析] CHECK约束通过限制输入到列中的值来强制域的完整性。这与FOREIGN KEY约束控制列中数值相似。区别在于它们如何判断哪些值有效:FORFIGNKEY约束从另一个表中获得有效数值列表,CHECK约束从逻辑表达式判断而非基于其他列的数据。故A和B错误。本题的约束是商品表中的商品一定要有商品类别表中的商品类别号,故此题选C。