一、实验目的和要求
通过本实验了解数据库完整性的概念,掌握实体完整性、参照完整性及用户定义完整性的设计方法。
二、实验原理
数据库的完整性是指数据的正确性和相容性。为维护数据库的完整性,任何数据库管理系统必须 提供定义完整性约束条件的机制,提供完整性检查的方法及违约处理。
1.实体完整性
2.参照完整性
3.用户定义的完整性
三、实验环境、内容和方法
实验环境(自拟):windows10 操作系统, mysql-8.1.0-winx64数据库服务器,老师提供的数据库脚本TradeDBSQL.txt。
内容:按要求完成视图创建、修改表的定义、增加主码约束、级联(CASCADE)操作、外键约束和null约束等操作,分析过程中的问题,对比表的不同,从而体会数据库完整性的方法,加深学习理解。
四、实验过程描述
(一)实体完整性
1.1 创建测试用的视图
//创建视图SuppStock_V,显示每个供应商的总库存,通过将Products表中的SupplierID与Suppliers表中的SupplierID关联,然后按Suppliers.CompanyName分组,并计算每组的库存总数
Create view SuppStock_V as select Suppliers.CompanyName as 供应商, sum(UnitsInStock) as 库存 from Products, Suppliers where Products.SupplierID=Suppliers.SupplierID group by Suppliers.CompanyName;
记录佳佳乐和德昌公司的库存(69,98)
select * from SuppStock_V where 供应商='佳佳乐';
select * from SuppStock_V where 供应商='德昌';
1.2 在供应商表Suppliers中,将德昌的公司编号(6)改为1(而1为佳佳乐编号,因此德昌 与 佳佳乐的编号都为1,问题! )
update Suppliers set SupplierID=1 where CompanyName='德昌';
再次查找佳佳乐 和德昌 公司的库存
比较结果 佳佳乐=69, 德昌=69
将佳佳乐的公司编号(1)改为6,查询库存为98
update Suppliers set SupplierID=6 where CompanyName='佳佳乐';
select * from SuppStock_V where 供应商=