【2019-2020春学期】数据库作业14:第五章: 数据库完整性 习题 + 存储过程
6、 (1) /*定义关系模式职员*/ CREATE TABLE Staff (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20), Sage SMALLINT, SJob CHAR(10), Sal INT, Dno CHAR(20) ) /*定义关系模式部门*/ CREATE TABLE Department (Dno CHAR(20) PRIMARY KEY, Dname CHAR(20), Manager CHAR(20), Tel CHAR(10) ) (2) CREATE TABLE Department (Dno CHAR 数据库完整性是数据库设计中的核心概念,它确保了数据的一致性、准确性和可靠性。在给定的题目中,我们看到两个关键的关系模式定义——Staff(职员)和Department(部门),以及涉及这两个表的操作,以及一个关于存储过程的示例。 让我们详细解释关系模式Staff和Department的定义。在SQL中,`CREATE TABLE`语句用于创建新的表。例如,Staff表包含员工的编号(Sno)、姓名(Sname)、年龄(Sage)、职位(Sjob)、薪水(Sal)和所在部门编号(Dno)。`CHAR(9)`定义了Sno字段可以存储9个字符,`SMALLINT`用于存储Sage,它通常能存储-32,768到32,767之间的整数,而`CHAR(20)`则用于存储如Sname和Dname这样的字符串,它们最多可容纳20个字符。在Staff表中,Sno被声明为主键(PRIMARY KEY),这意味着它唯一标识表中的每一行,并且不允许有重复值。 接下来,Department表同样包含了部门编号(Dno)、部门名称(Dname)、经理姓名(Manager)和电话号码(Tel)。在这里,Dno也被设为主键。在第二个版本的Department表中,还引入了一个外键(FOREIGN KEY)约束,即Staff表中的Dno字段引用Department表的Dno字段。这确保了Staff表中的每个Dno都必须存在于Department表中,从而维护了参照完整性的原则。 存储过程(PROCEDURE)在数据库中是一种预编译的SQL代码集合,可以执行多次。在提供的存储过程示例中,名为`Proc_TRANSFER1`的存储过程用于统计离散数学课程的成绩分布。它首先检查是否存在同名的存储过程,如果存在,则删除,然后创建新的存储过程。在存储过程中,定义了几个变量来存储不同成绩范围内的学生数量,并通过查询SC表(假设是学生分数表)来更新SCount表中的数值。这样就实现了对特定课程成绩分布的动态统计。 数据库完整性分为三类:实体完整性、参照完整性和用户定义的完整性。实体完整性要求主键字段的值不能为NULL;参照完整性确保外键的值要么是主键表中的已有值,要么为NULL;用户定义的完整性则是针对特定业务规则,如在Staff表中,使用`CHECK`约束限制Sage的值必须小于或等于60,确保员工年龄的合理性。 这个数据库作业涉及到关系数据库的基本元素,包括表的创建、字段类型的选择、主键和外键的使用,以及存储过程的编写,这些都是数据库设计和管理的关键技能。同时,它也强调了数据库完整性的重要性,这是确保数据质量的关键因素。在实际应用中,数据库设计者需要考虑如何有效地实现这些完整性约束,以满足业务需求并避免潜在的数据错误。
- 粉丝: 4
- 资源: 918
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助