Values('1018','微机原理','36','3.5') (2)创建一个查询过程
CREATE PROCEDURE Course_prod1 AS Select *
From Course
(3)创建一个删除存储过程
CREATE PROCEDURE Course_prod2 AS Delete
From Course
Where Course_cno='1007'
3.概念结构设计
3.1 E-R图
由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:学号,姓名,性别,地址,年龄,专业。
姓名 学生基本信息实体 专业 性别 年龄 学号 地址
(2)课程基本信息: 课程名,课程号,学时,学分。
课程基本信息实体 课程名 学分 课程号 学时 5
(3)成绩基本信息:课程号,学号,分数。
成绩基本信息 课程号 分数 学号
这些实体间的联系包括:
每位学生可以学习多门课程,每门课程可供多位学生学习。
由上述分析可得到系统的E—R图: 系别 地址 学分 年龄 学号学生 成绩 选修课程 N N 姓名 性别 分数
学时 课程号 课程名 4.逻辑结构设计
4.1将E-R图转换为关系模型
实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于
实体间的联系则有以下不同的情况:
6
一个m:n联系转换为一个独立的关系模式。与该联系相联的个实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合,具有相同的关系模式可合并。
具体的基本E—R图向关系模式的转化如下:
(1)学生(学号,姓名,性别,年龄,地址,系别),其主关键字为学号; (2)课程(课程名,课程号,学时,学分),其中主关键字为课程号;
(3)成绩(课程号,学号,分数)其中主关键字为学号和课程号。 可以与学生关系模式合并为:
学生(学号,姓名,性别,年龄,地址,系别,成绩,课程号)。
4.2 模型优化
关系模式学生,课程不存在非主属性对主属性的部分函数依赖,也不存在传递函
数依赖,已经达到了3NF。
5.物理结构设计
1. 建立数据表
(1) 学生信息表的建立。 CREATE TABLE Student
(Student_sno char(10) primary key, Student_sname char(10) not null, Student_sex char(2), Student_dept char(10), Student_age char(10), Student_address char(10));
(2) 课程信息表的建立 CREATR TABLE Course
(Course_cno char(10) primary key, Course_cname char(10) not null, Course_hour int,
7
Course_score float(8));
(3) 分数信息表的建立 CREATE TABLE Score (Course_cno char(10), Student_sno float(8), Score float(8));
2. 建立视图
(1) 查询学生基本信息的视图定义如下:
CREATE VIEW Student_view(Student_sno,Student_sname,Student_sex,Student_dept,Student_age,Student_address) AS
SELECT * FROM Student
(2) 课程信息查询的视图定义如下:
CREATE VIEW Course_view(Course_cno, Course_cname, Course_hour, Course_score) AS
SELECT * FROM Course
(3) 成绩信息查询视图定义如下:
CREATE VIEW Score_view(Course_no, Student_sno, Score float) AS
SELECT * FROM Score
3. 建立索引
(1)为学生Student表的学生姓名建立索引。 Create cluster index snameindex on Student(Student_sname); (2)为课程Course表的课程名建立索引。 Create cluster index cnameindex on Course(Course_cname);
8
6.角色与触发器设计
1.创建一个角色
(1) 为普通学生创建一个角色R1,并对其授权查询操作。 CREATE ROLE R1 GRANT SELECT ON TABLE Student,Course,Score TO R1; 在
①在数据库目录下的角色上右击,选择新建数据库角色。
②单击‘确定’,再选择角色R1属性
9