实验一 数据库设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一数据库设计
实验名称:数据库设计
实验内容:以所在学校选课和课程管理为实际应用背景,设计一个教学管理数据库。假设至少包含以下需求:
学生信息管理;
课程信息管理;
教师信息管理;
学生选修课程及成绩信息管理;
教师负责课程和讲授课程信息管理。
实验目的:
通过实践,掌握本章介绍的数据库设计方法。
学会使用PowerDesigner来完成数据库设计过程。
实验方法(或程序源代码):
(1)、根据实验内容明确要完成的系统功能。
(2)、运行PowerDesigner创建概念数据模型转换成逻辑数据模型,建立实体、属性和联系。对关键字、空值、域完整性等做出必要的描述,根据实际情况确定联系的类型。
(3)、将检查无误的概念数据类型转换成逻辑数据模型,并对生成的逻辑数据模型作必要的修改。
(4)、选择一个实际的DBMS软件根据逻辑数据模型生成物理数据模型,并对生成的物理数据模型作必要的修改。
实验数据、结果分析、总结问题:
(1)学生选课系统扥E-R图
(2)概念数据模型图如下
(3)逻辑数据模型图如下(4)物理数据模型图如下
(5)系统生成的代码为:
if exists(select 1 from sys.sysforeignkey where role='FK_教授课程_RELATIONS_学生') then
alter table 教授课程
delete foreign key FK_教授课程_RELATIONS_学生
end if;
if exists(select 1 from sys.sysforeignkey where role='FK_教授课程_RELATIONS_教师') then
alter table 教授课程
delete foreign key FK_教授课程_RELATIONS_教师
end if;
if exists(select 1 from sys.sysforeignkey where role='FK_负责课程_RELATIONS_课程') then
alter table 负责课程
delete foreign key FK_负责课程_RELATIONS_课程
end if;
if exists(select 1 from sys.sysforeignkey where role='FK_负责课程_RELATIONS_教师') then
alter table 负责课程
delete foreign key FK_负责课程_RELATIONS_教师
if exists(select 1 from sys.sysforeignkey where role='FK_选修课程_RELATIONS_学生') then
alter table 选修课程
delete foreign key FK_选修课程_RELATIONS_学生
end if;
if exists(select 1 from sys.sysforeignkey where role='FK_选修课程_RELATIONS_课程') then
alter table 选修课程
delete foreign key FK_选修课程_RELATIONS_课程
end if;
if exists(
select 1 from sys.systable
where table_name='学生'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 学生
end if;
if exists(
select 1 from sys.systable
where table_name='教师'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 教师
end if;
if exists(
select 1 from sys.systable
where table_name='教授课程'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 教授课程
end if;
if exists(
select 1 from sys.systable
where table_name='课程'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 课程
if exists(
select 1 from sys.systable
where table_name='负责课程'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 负责课程
end if;
if exists(
select 1 from sys.systable
where table_name='选修课程'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table 选修课程
end if;
create table 学生
(
学号 char(8) not null, 院系 smallint null,
姓名 char(10) null,
性别 char(2) null,
生源 char(6) null,
状态 char(4) null,
constraint PK_学生 primary key (学号)
);
create table 教师
(
教师编号 char(8) not null, 院系 smallint null,
姓名 char(10) null,
性别 char(2) null,
职称 char(6) null,
专业 char(10) null,
constraint PK_教师 primary key (教师编号)
);
create table 教授课程
(
教师编号 char(8) not null, 学号 char(8) not null,