实验五-----数据库

一、实验目的

1.理解和掌握数据库设计的方法和主要步骤;
2.熟练掌握概念结构的建立方法和常用表达工具(E-R 图);
3.熟练掌握概念结构到逻辑结构的转换原则;
4.掌握SQL 流程控制语句、存储过程的语法;
5.理解存储过程的概念和原理;
6.掌握SQL Server 2005中数据库编程的有关操作。

二、实验环境

1.实验室名称:软件实验室
2.主要仪器设备:PC机、SQL Server2008环境

三、实验内容

假设要根据某大学的系、学生、班级、学会等信息建立一个数据库。一个系有若干个专业,每个专业每年只招一个班,每个班由若干学生。一个系的学生住在同一个宿舍区。每个学生可以参加多个学会,每个学会有若干个学生,学生参加某学会有个人入会年份。
试根据上述业务规则,完成数据库设计,并在SQL Server中实现。
1.应用规范设计法设计该数据库,要求达到3NF。请给出详细设计过程。
2.指出每个关系的主码和外码。
3.请设计一个存储过程,以学会编号作为输入参数,实现统计指定学会学生人数的功能。

四、调试分析

(一)概念结构设计:

对四个实体之间的关系进行分析:
一个系有若干个专业,1:n;每个专业每年只招一个班,1:1;每个班由若干学生,1:n;一个系的学生住在同一个宿舍区,1;1;每个学生可以参加多个学会,每个学会有若干个学生,m:n;学生参加某学会有个人入会年份,1:1.

(二)抽象结构设计:

涉及的基本要素:实体、属性、码、域、联系等。
(1)实体:系、学生、专业、学会、专业、班级
(2)属性【实体具有的特性】
各个实体的属性:
系:系编号、系名称
学生:学号、学生姓名、学生性别
学会:学生会名、学会编号
班级:班级编号、班级名称
专业:专业编号、专业名称
(3)关系:实体内部关系与实体之间的关系:1对1、1对多、多对多。

五、实验结果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、实验源代码

/*
	假设要根据某大学的系、学生、班级、学会等信息建立一个数据库。
	一个系有若干个专业,每个专业每年只招一个班,每个班由若干学生。
	一个系的学生住在同一个宿舍区。每个学生可以参加多个学会,
	每个学会有若干个学生,学生参加某学会有个人入会年份。


1.应用规范设计法设计该数据库,要求达到3NF。请给出详细设计过程。
2.指出每个关系的主码和外码。
3.请设计一个存储过程,以学会编号作为输入参数,实现统计指定学会学生人数的功能。

*/
create table 学生信息表(
	学号 varchar(10) primary key not null,
	姓名 varchar(20) not null,
	性别 varchar(5) not null,
	年龄 int not null,
	专业编号 varchar(10) not null,
	foreign key(专业编号) references 专业信息表(专业编号)
);
insert into 学生信息表(学号,姓名,性别,年龄,专业编号) values('s25301','李雯','女',18,'B21')
insert into 学生信息表(学号,姓名,性别,年龄,专业编号) values('s25302','小张','男',21,'B22')
insert into 学生信息表(学号,姓名,性别,年龄,专业编号) values('s25303','小李','女',22,'A20')
insert into 学生信息表(学号,姓名,性别,年龄,专业编号) values('s25304','李静静','男',21,'A22');

select * from 学生信息表;
create table 专业信息表(
	专业编号 varchar(10) primary key not null,
	专业名称 varchar(20) not null
	
);

insert into 专业信息表(专业编号,专业名称) values('B21','计算机科学与技术')
insert into 专业信息表(专业编号,专业名称) values('B22','数据科学与大数据技术')
insert into 专业信息表(专业编号,专业名称) values('A20','软件工程')
insert into 专业信息表(专业编号,专业名称) values('A22','人工智能');
select * from 专业信息表;
create table 学会信息表(
	学会编号 varchar(10) primary key not null,
	学会名称 varchar(20) not null
);

insert into 学会信息表(学会编号,学会名称) values('20021','心理学会')
insert into 学会信息表(学会编号,学会名称) values('20022','篮球学会')
insert into 学会信息表(学会编号,学会名称) values('20023','舞蹈学会')
insert into 学会信息表(学会编号,学会名称) values('20024','音乐学会');
select * from 学会信息表;
create table 系部信息表(
	系部编号 varchar(10) primary key not null,
	系部名称 varchar(20) not null
);
insert into 系部信息表(系部编号,系部名称) values('201','数学系')
insert into 系部信息表(系部编号,系部名称) values('202','计算机科学与技术系')
insert into 系部信息表(系部编号,系部名称) values('203','教育系')
insert into 系部信息表(系部编号,系部名称) values('204','外语系');
select * from 系部信息表;
create table 参会信息表(
	学号 varchar(10) primary key not null,
	学会编号 varchar(10) not null,
	入会时间 varchar(20) not null,
	foreign key(学会编号) references 学会信息表(学会编号)
);

insert into 参会信息表(学号,学会编号,入会时间) values('s25301','20021','4/21');
insert into 参会信息表(学号,学会编号,入会时间) values('s25302','20022','4/13');
insert into 参会信息表(学号,学会编号,入会时间) values('s25303','20023','4/1');
insert into 参会信息表(学号,学会编号,入会时间) values('s25304','20024','4/12');
select * from 参会信息表;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辣椒酱.

感谢支持,我会继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值