学生选课系统数据库设计
来源:互联网 发布:windows xp声卡驱动 编辑:程序博客网 时间:2024/05/01 17:22
1.1需求分析
数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库和关系数据库。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,如记录、域等。
SQLserver 2005就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。SQL 的优点在于它集数据查询、数据操纵、数据定义和数据控制功能于一体。
通过调查本地的学校,根据学校的具体情况设计学生选课信息管理系统。主要功能有:
1. 学生管理:学生信息查询、插入、删除、修改等
2. 选课管理:选课信息查询、插入、删除、修改等
3.成绩管理:成绩的查询。
4. 系统管理:操作员信息的管理
5. 系统维护:如数据安全管理(含备份与恢复)、操作员管理、权限设置等
1.2数据字典
数据流图表达了数据与处理的关系,数据流图作为直观了解系统运行机理的手段,并没有具体描述个类数据的细节,只有通过数据字典进一步细化才能对系统的需求得到具体而确切的了解。数据字典用来说明数据流图中出现的所有元素的详细定义和描述,包括数据流、加工处理、数据存储、数据的起点和终点或外部实体等。
数据字典包括的项目有数据项、数据结构、数据流、数据存储、加工逻辑和外部实体。可使用一些符号来表示数据结构、数据流和数据存储的组成。
(1)学号={学号,唯一标识学生,类型:char,长度:9,与课程号唯一标识这门课成绩}。
2.1 系统E-R图
表2-1 学生信息表Student的表结构
主码
列 名
数据类型
宽度
小数位
空否
备 注
Pk
Sno
Char
9
N
学号
Sname
Char
20
N
姓名
Ssex
Char
2
Y
性别
Ssage
SmallDatetime
Y
出生日期
Sdept
Char
20
Y
所在系
表2-2 课程信息表Course的表结构
主码
列 名
数据类型
宽度
小数位
空否
备 注
Pk
Cno
Char
4
N
课程代码
Cname
Char
40
N
课程名称
Cpno
char
4
Y
先修课程
Credit
Decimal
4
1
Y
学分
表2-3 选课成绩表SC的表结构
主码
列 名
数据类型
宽度
小数位
空否
备 注
Pk
Sno
Char
5
N
学号
Cno
Char
3
N
课程代码
Grade
Decimal
3
1
Y
成绩
表2-4 管理员表Admin的表结构
主码
列 名
数据类型
宽度
小数位
空否
备 注
Pk
Admin_id
Char
4
N
操作员编号
Admin_name
Char
12
N
操作员姓名
Permission
Char
20
Y
权限
2.2初始关系模式
Student(Sno,Sname,Ssex,Ssage,Sdept)
其中各项含义分别为:学生(学号,姓名,性别,年龄,所在系)
Course(Cno,Cname,Cpno,Credit)
其中各项含义分别为:课程(课程代码,课程名称,先修课程,学分)
SC(Sno,Cno,Grade)
其中各项含义分别为:选修(学号,课程代码,成绩)
Admin(Amin_id,Admin_name, Permission)
其中各项含义分别为:操作员(操作员编号,操作员姓名,权限)
2.3规范化处理
经过对初始关系模式的规范化处理以下关系模式中不存在部分函数依赖和传递函数依赖,已经达到3NF。(下划线代表主码,斜体外码)
Student(Sno,Sname,Ssex,Ssage,Sdept)
Course(Cno,Cname,Cpno,Credit)
SC(Sno,Cno,Grade)
Admin(Admin_id,Admin_name,Permission)
3.1物理结构
数据库在物理上的存储结构与存储方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是物理结构设计。
数据库的物理结构设计通常分为两步:
(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;
(2)对物理结构进行评价,评价的中的是时间和空间效率。
表2-5 学生信息表Student的表索引表
索引
列 名
数据类型
宽度
主
Sno
Char
9
无
Sname
Char
20
无
Ssex
Char
2
无
Sage
SmallDatetime
无
Sdept
Char
20
表2-6 课程信息表Course的索引表
索引
列 名
数据类型
宽度
主
Cno
Char
4
无
Cname
Char
40
无
Cpno
Char
4
无
Credit
Decimal
4
表2-7 选课成绩表SC的索引表
索引
列 名
数据类型
宽度
主
Sno
Char
9
Cno
Char
4
无
Grade
Decimal
5
表2-8 操作员表Admin的索引表
索引
列 名
数据类型
宽度
主
Admin_id
Char
4
无
Admin_name
Char
12
无
Permission
Char
20
3.2视图
用SQL管理工具建立常用的一个视图,即学生_成绩视图。
菜单栏中单击工具→ 向导→ 数据库→ 创建视图向导,选择你所要建的试图的对象,选择列名,按照提示,最后单击完成即可。
使用SQL语句建立视图的命令如下:
ps(此处本该数据表建成以后再创建视图,为啦清楚表达物理结构设计所以提前)
create view 学生_成绩asselect sc.sno,sname,course.cno,cname,gradefrom student join sc on student.sno= sc.snojoin course on course.cno=sc.cno
4.1数据库物理设计完成之后,需要用RDBMS提供的数据定义语言和其他使用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,在经调试产生目标文件。
用SQL语言建数据库和表代码如下:
学生选课信息管理系统数据库代码如下:
Create database 学生选课管理系统 On (Name=mydatabase1,Filename='d:\数据库\mydatabase.mdf',Size=3,Maxsize=10,Filegrowth=1),(Name=mydatabase2,Filename='d:\数据库\mydatabase.ndf',Size=5,Maxsize=15,Filegrowth=2)Log on (Name=mydatabase_log,Filename='d:\数据库\mydatabase_log.ldf',Size=5,Maxsize=10,Filegrowth=1)
学生选课信息管理系统数据表代码如下:
create table Student(Sno char(9)primary key,Sname char (20) not null,Sex char(2)check (sex in('男','女')),Sbirth smalldatetime,Sdept char(20));gocreate table Course(Cno char(3)primary key,Cname char(40)not null,Cpno char(4), Credit Decimal(3,1))gocreate table SC(Sno char(9)references Student(Sno),Cno char(4)references Course(Cno),Grade decimal(5,1),constraint pk primary key(Sno,Cno))gocreate table Admin(Admin_id char(9)primary key,Admin_name char(12)not null,Permission char(20)default '0')go
数据的载入
INSERT
INTO <表名>[(<属性列1>[,<属性列2>…)]
VALUES(<常量1>[,<常量2>]);
以学生表为例插入输入如下:PS(学号是主码,故不可以相同)
insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('200215121','李勇','男','20','CS'); insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('200215122','刘晨','女','19','CS'); insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('200215123','王敏','女','18','MA'); insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('200215125','张立','男','19','IS');insert into Student(Sno,Sname,Ssex,Sage,Sdept)
数据库的修改操作
UPDATE <表名>
SET<列名>=<表达式>
[WHERE<条件>];
例如:在学生表中修改学号为’200215121’的所在系为’IS’。
update studentset sdept='IS'where sno='200215121'
数据库的删除操作
DELETE
FROM<表名>
[WHERE<条件>];
例如:删除学号为’200215124’的相关信息
deletefrom studentwhere sno='200215124'
连接数据库和添加课程de代码如下:
private void button1_Click(object sender, EventArgs e) {string s = "server=.;database=学生选课管理系统;integrated security=true;"; SqlConnection conn =new SqlConnection(); conn.ConnectionString = s; SqlCommand cmd = new SqlCommand(); string sql = string.Format("insert into Course (Cno,Cname,Cpno,Ccredit) values('{0}','{1}','{2}','{3}')",textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text); cmd.CommandText = sql; cmd.Connection = conn; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); MessageBox.Show("添加成功!"); }
删除代码如下:
修改课程信息
private void button1_Click(object sender, EventArgs e) { DialogResult r = MessageBox.Show("你确实要删除吗?","提示", MessageBoxButtons.YesNo); if (r == DialogResult.No) return; string s = "server=.;database=学生选课管理系统;integrated security=true;"; SqlConnection conn =new SqlConnection(); conn.ConnectionString = s; SqlCommand cmd = new SqlCommand(); string sql; sql = string.Format("delete from Course where Cno='{0}'", textBox1.Text); cmd.CommandText = sql; cmd.Connection = conn; conn.Open(); int n = cmd.ExecuteNonQuery(); conn.Close(); MessageBox.Show("删除" + n +"条数据");
- 学生选课系统数据库设计
- 数据库设计之学生选课系统
- 数据库设计之学生选课系统
- 学生选课数据库设计
- 学生选课系统设计
- 数据库课程设计-----------学生选课管理系统的设计
- 学生选课系统数据库的设计与实现
- 学生选课抽签管理系统设计
- 学生选课抽签管理系统设计(一)
- 学生选课抽签管理系统设计(二)
- 学生选课系统库表设计
- 数据库课程设计 C# 学生选课管理系统
- 学生选课系统数据库SQL语句考试题
- 模拟学生选课系统
- 学生选课数据管理系统
- 学生选课系统
- 学生选课系统
- MFC学生选课系统
- 使用java 操作mongodb的aggregate
- 字符字节流到底是干什么的
- 顺序表的实现(C++)
- mt6735 [kernel driver]MT6580使用外部PA出现无声、音量小或者无法调增益
- Node.js MongoDB Angular Web开发 ( 1 )
- 学生选课系统数据库设计
- C 练习实例81-90
- EL表达式
- 20个值得学习的优秀开源框架,应用开发者必备精选
- BCGControlBar本地化(汉化)详解
- run keyword if后面有多个执行语句
- InstallScript之系统变量SYSINFO
- 23种经典设计模式UML类图汇总
- LDA学习