关系数据库中的参照完整性规则详解

需积分: 10 1 下载量 131 浏览量 更新于2024-07-12 收藏 587KB PPT 举报
在"参照完整性规则(续)-关系数据库学习"一文中,我们深入探讨了关系数据库中的一个重要概念——参照完整性。参照完整性是确保数据库中数据一致性的重要手段,它在学生关系(通常是一个二维表,用于存储学生的基本信息和专业信息)中体现得尤为明显。每个学生的“专业号”属性被设计为两个可能的值:一是空值,表示学生还未被分配专业;二是非空值,这时的专业号必须来自于专业关系中已存在的专业。这种设计确保了数据的准确性和一致性,避免了引用不存在的专业。 关系数据库,由美国IBM公司的E.F.Codd博士于1970年提出,是一种系统化和严谨的数据管理方式。Codd博士被誉为“关系数据库之父”,他不仅提出了关系数据模型,还包括关系代数和关系演算等理论,这些奠定了现代数据库的基础。他的工作不仅定义了关系的三个范式(第一范式、第二范式和第三范式),还进一步提出了BC范式,这些范式是衡量数据库设计优劣的标准。 关系模型的核心在于其数学化的表达方式,它利用数学方法来处理和组织数据,使得数据之间的联系变得清晰易懂。20世纪80年代以后,随着技术的发展,关系数据库系统成为主流,如System R和Univac等早期的关系数据库实验系统,标志着关系数据库技术的广泛应用和成熟。 Codd博士的贡献不仅限于理论,他还通过创建关系研究所(The Relational Institute)和Codd&Associations公司,推动了关系数据库产品的研发、销售以及咨询业务的发展。他的工作对现代信息技术产生了深远影响,使得数据库系统成为了企业信息化建设不可或缺的一部分。 总结来说,本篇文章围绕关系数据库中的参照完整性规则展开,介绍了其在实际应用中的关键作用,以及E.F.Codd博士在数据库领域的重要地位和贡献。理解并遵循这些规则,对于维护数据库的正确性、有效性和可靠性至关重要。
2020-06-27 上传
乐山师范学院数据库编程期末答疑,卷子讲解,SQL server相关 如下是一个简化的员工考勤应用E-R图,请在SQL Server中创建名为YQKG的数据库,包括两个数据文件,一个日志文件,文件名按SQL Server对象命名规范定义,数据文件按10%的比例增长,数据库定义完成后输入如下样本数据。完成后请将新定义的对象及数据生成到脚本文件3_1.sql,并分离数据库。(数据表标识说明:BMXX 部门信息,QQLX 考勤类型, JBXX 基本信息,各字段定义请根据实际语义自行定义)。 2. 运行CreateTeaching.sql在系统数据库tempdb中生成解答用数据库对象,完成如下安全定义。每小题2分,共6分。 (1) 创建名为L+考生学号的登录名,密码为考生学号。完成后请将定义程序代码保存到脚本文件3_2_1.sql。 (2) 为tempdb数据库创建名为U+考生学号的带登录名的用户名,使用本题(1)中创建的登录名。完成后请将定义程序代码保存到脚本文件3_2_2.sql。 (3) 为学生表Student、课程表Course、教师表Teacher分配只读权限,成绩表分配读写权限。完成后请将程序代码保存到脚本文件3_2_3.sql。 3.运行CreateTeaching.sql在系统数据库tempdb中生成解答用数据库对象,完成如下完整性定义。每小题4分,共12分 (1) 在SC与Teacher之间定义参照完整性,外码名为FK_SC_Teacher_Tno,并定义违约处理规则:修改规则为 Cascade,删除规则为 No Action。完成后请将本操作的程序保存到脚本文件3_3_1.sql。 (2) 学生表Student中学生姓名不允许重复,将此规则保存为UQ_Sname。完成后请将本操作的程序保存到脚本文件3_3_2.sql。 (3) 在学生表上规定学生的性别只能是“男”、“女”,将此规则保存为CK_Student_Ssex。完成后请将本操作的程序保存到脚本文件3_3_3.sql。 4. 运行CreateTeaching.sql在系统数据库tempdb中生成解答用数据库对象,在SSMS中查询分析器中设计并调试如下查询,把SQL脚本代码分别保存到指定的SQL程序文件中。每小题3分,共15分 (1) 新增一位同学:200215129,王大鹏,男,23,CS,新增该生一条选课数据:该生选了数据库课程,该课主教教师未知,还未考试。完成后请将查询代码保存到脚本文件3_4_1.sql。 (2) 修改少数民族学生李勇所有选修课成绩,都加5分。完成后请将查询代码保存到脚本文件3_4_2.sql。 (3) 因为考试事故,删除计科系的所有选课信息。完成后请将查询代码保存到脚本文件3_4_3.sql。 (4) 查询与“刘晨”同一个院系的其他同学的所有信息。完成后请将查询代码保存到脚本文件3_4_4.sql。 (5) 生成选修课为达标的学生的信息,包括学号、姓名、院系、总学分,达标条件:选修课门数达到6门。完成后请将查询代码保存到脚本文件3_4_5.sql。 5. 运行CreateTeaching.sql在系统数据库tempdb中生成解答用数据库对象,为计科系生成如下选修课综合信息视图(仅包括计科系学生的选课信息,未选课的计科系学生也包括在视图的数据集中,如果未选课则课程等相关字段记为NULL,选了课但未考试则成绩等相关字段记为NULL,如果考试成绩未及格学分记为0,否则得到课程学分)。完成后请将本视图定义的程序保存到脚本文件3_5.sql。7分 6. SQL 程序设计:运行CreateTeaching.sql在系统数据库tempdb中生成解答用数据库对象,完成如下对象定义,把相应的SQL程序分别保存到指定的SQL文件中。每小题7分,共21分 (1) 为教师表定义一个名为Tr_Insert_Or_Update_Sal触发器,实现如下完整性规则:“教授的工资不得低于4000元,如果低于4000元,自动改为4000元”。请完成触发体设计,完成后请将本定义的程序保存到脚本文件3_6_1.sql。 Create Trigger Insert_Or_Update_Sal On Teacher After INSERT, UPDATE AS (2) 利用ROW_NUMBER() OVER设计一分页查询存储过程DividePage,每次调用返回指定数据表中指定页大小及页码的满足条件的记录结果集,其参数设计如下,请完成过程体设计,完成后请将本定义的程序保存到脚本文件3_6_2.sql。 Create Procedure DividePage ( @tblName varchar(255), -- 表