数据库原理结束课大作业

请结合自己的了解和认识,选择一个熟悉且适中的应用场景,设计并完成该应用对应的数据库。要求完成:

1、需求分析

描述系统所要完成的功能和用到的数据。

学院教务管理系统功能:

本教务系统用户分为,学生,教师,能够进行数据库的数据定义、数据操纵、数据控制等处理功能。具体功能应包括:可提供课程安排、课程成绩数据的添加、插入、删除、更新、查询,学生及教职工基本信息查询的功能。

用到的数据:

学生(学号stu_id,学生密码stu_password,姓名stu_name,性别stu_sex,年龄stu_age)

班级(班级编号cla_id,班级名称cla_name)

专业(专业编号maj_id,专业名maj_name,所属院系maj_faculty)

教师(职工号teach_id,姓名teach_name,性别teach_sex,年龄teach_age,教师密码teach_password)

课程(课程编号cou_id,课程名cou_name,课程学时cou_time,学分cou_credit,先修课cou_cpno)

学生-课程:成绩grade

课程-教师:上课时间teaching_time

用户:用户名users_name,用户密码users_password

2、概要模型设计

根据需求,完成E-R图的设计。

3、逻辑结构设计

(1)根据E-R图,给出的关系模式。

将上面的E-R图转换为关系模式(下划线且加粗为主键,斜体且加粗为外键):

学生(学号,学生密码,姓名,性别,年龄,班级编号

班级(班级编号,班级名称,专业编号

专业(专业编号,专业名,所属院系)

教师(职工号,姓名,性别,年龄,教师密码)

课程(课程编号,课程名,课程学时,学分,先修课,职工号

选课(学号课程编号,成绩)把学生表的主键和课程表的主键设置为选课表的联合主键,学号和课程编号同时均为外键

教授(课程编号职工号,上课时间)把课程编号和职工号设置为教授表的联合主键,课程编号和职工号同时均为外键

(2)说说自己设计的表是第几范式,给出必要的判断过程。

学生表、班级表、专业表、教师表、课程表是第二范式,每一列都是不可再分的基本数据项,所有的非主属性完全依赖于码,即不存在非主属性对码的部分函数依赖。

选课表、教授表是BCNF,每一列都是不可再分的基本数据项,所有的非主属性完全依赖于码,不存在非主属性对码的传递依赖和部分依赖,所有主属性对每一个不包含它的码,也是完全函数依赖,同时任何属性都应该函数依赖于码。以选课表为例,SC关系中stu_id,cou_id是码,grade是非主属性,非主属性无法传递函数依赖,(stu_id,cou_id)联合确定grade,只有一个函数依赖。教授表同理。

4、物理结构设计与数据库实施

用SQL实现数据库和所有数据表的创建,包括相应的完整性约束(主外键等)。

(1)--创建数据库affairs

create database affairs;

(2)--创建学生表students

create table students

(stu_id int primary key,

stu_password int not null,

stu_name varchar(20) not null,

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值