某数据库中有员工关系E、产品关系P、仓库关系W和库存关系I,其中各个关系的属性如下。
员工关系E(employeeID,name,department)的属性为:员工编号、姓名和部门。
产品关系P(productID,name,model,size,color)的属性为:产品编号、产品名称、型号、尺寸和颜色。
仓库关系W(warehouseID,name,address,employeeID)中的属性为:仓库编号、仓库名称、地址和负责人编号。
库存关系I(warehouseID,productID,quantity)中的属性为:仓库编号、产品编号和产品数量。
若要求仓库关系的负责人引用员工关系E的员工编号、仓库关系W的仓库编号和产品关系P的产品编号不能为空且唯一标识一个记录,并且仓库的地址不能为空,则依次要满足的完整性约束是______。
若需得到每种产品的名称和该产品的总库存量,则对应的查询语句为:
SELELCT name SUM(quantity)
FROM P,I
WHERE ______;
A.P.productID=I.productID
B.P.productID=1.productID ORDER BY name
C.P.productID=1.productID GROUP BY name
D.P.productID=1.productID GROUP BY name,quantity
参考答案:C
解析:关系模型的完整性规则是对关系的某种约束条件,关系模型中主要有3类完整性约束,分别为参照完整性、实体完整性和用户定义的完整性。
参照完整性规定实体间引用的完整性,本表中外码的值必须取空值或者在被引用的表中存在的相对应的主码值。由于仓库关系的负责人引用了员工关系的员工编号,因此应满足参照完整性约束。
实体完整性规定基本关系,即主属性不能取空值。由于员工关系E中的员工编号、仓库关系W中的仓库编号和产品关系P中的产品编号都不能为空且唯一标识一个记录,因此应满足实体完整性约束。
实体完整性和参照完整性是所有数据库系统都要支持的完整性约束。而用户定义的完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。根据题目要求“仓库的地址不能为空”,所以应满足用户定义完整性约束。
由以上完整性约束分析可知,第一空缺处的正确答案是选项D。
SQL查询是数据库中非常重要的内容。该SQL查询要求对查询结果进行分组,即具有相同名称的产品的元组为一组,然后计算每组的库存数量。由此可排除选项A、B和D,所以第二空缺处的正确答案是选项C。