数据库 ----- 实验五:题目:实验五 数据库设计与数据库编程

[实验目的和要求]
1.理解和掌握数据库设计的方法和主要步骤;
2.熟练掌握概念结构的建立方法和常用表达工具(E-R 图);
3.熟练掌握概念结构到逻辑结构的转换原则;
3.掌握SQL 流程控制语句、存储过程和触发器的语法;
4.理解存储过程和触发器的概念和原理;
5.掌握SQL Server 2008中数据库编程的有关操作。
[实验内容]
假设要根据某大学的系、学生、班级、学会等信息建立一个数据库。一个系有若干个专业,每个专业每年只招一个班,每个班由若干学生。一个系的学生住在同一个宿舍区。每个学生可以参加多个学会,每个学会有若干个学生,学生参加某学会有个人入会年份。
试根据上述业务规则,完成数据库设计,并在SQL Server中实现。
1.应用规范设计法设计该数据库,要求达到3NF。请给出详细设计过程。
(一)概念结构设计:
对四个实体之间的关系进行分析:
一个系有若干个专业,1:n;
每个专业每年只招一个班,1:1;
每个班由若干学生,1:n;
一个系的学生住在同一个宿舍区,1;1;
每个学生可以参加多个学会,每个学会有若干个学生,m:n;
学生参加某学会有个人入会年份,1:1.
(二)抽象结构设计:
涉及的基本要素:实体、属性、码、域、联系等。
(1)实体:系、学生、专业、学会、专业、班级
(2)属性:实体具有的特性
各个实体的属性:
系:系编号、系名称
学生:学号、学生姓名、学生性别
学会:学生会名、学会编号
班级:班级编号、班级名称
专业:专业编号、专业名称
(3)关系:实体内部关系与实体之间的关系:1对1、1对多、多对多,反映到E-R图中为相应的关系类型,及1:1、1:N、M:N。
(4)E-R图绘制:

在这里插入图片描述

2.指出每个关系的主码和外码。
系(系编号、系名称)
学生(学号、学生姓名、学生性别、学会编号,学会编号)
学会(学会名称、学会编号)
入会(学号、入会时间)
专业(专业编号、专业名称)
划实线的为主码,其余为外码。
3.请设计一个存储过程,以学会编号作为输入参数,实现统计指定学会学生人数的功能。

create table 学生信息表(学号 varchar(10) not null,
姓名 varchar(20) not null,
性别 varchar(5) not null,
年龄 int not null,
专业编号 varchar(5) not null);

insert into 学生信息表(学号,姓名,性别,年龄,专业编号)
values('s25301','张3','女',18,'B21')
insert into 学生信息表(学号,姓名,性别,年龄,专业编号)
values('s25302','李2','男',21,'B22')
insert into 学生信息表(学号,姓名,性别,年龄,专业编号)
values('s25303','李1','女',22,'A20')
insert into 学生信息表(学号,姓名,性别,年龄,专业编号)
values('s25304','闫冠希','男',21,'A22');

create table 专业信息表(
专业编号 varchar(10) not null,
专业名称 varchar(20) not null);

insert into 专业信息表(专业编号,专业名称)
values('B21','计算机科学与技术')
insert into 专业信息表(专业编号,专业名称)
values('B22','数据科学与大数据技术')
insert into 专业信息表(专业编号,专业名称)
values('A20','软件工程')
insert into 专业信息表(专业编号,专业名称)
values('A22','人工智能');

create table 学会信息表(
学会编号 varchar(10) not null,
学会名称 varchar(20) not null);

insert into 学会信息表(学会编号,学会名称)
values('20021','心理学会')
insert into 学会信息表(学会编号,学会名称)
values('20022','篮球学会')
insert into 学会信息表(学会编号,学会名称)
values('20023','舞蹈学会')
insert into 学会信息表(学会编号,学会名称)
values('20024','音乐学会');

create table 系部信息表(
系部编号 varchar(10) not null,
系部名称 varchar(20) not null);

insert into 系部信息表(系部编号,系部名称)
values('201','数学系')
insert into 系部信息表(系部编号,系部名称)
values('202','计算机科学与技术系')
insert into 系部信息表(系部编号,系部名称)
values('203','教育系')
insert into 系部信息表(系部编号,系部名称)
values('204','外语系');

create table 参会信息表(
学号 varchar(10) not null,
学会编号 varchar(10) not null,
入会时间 varchar(20) not null);

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');

在这里插入图片描述

学生信息表

在这里插入图片描述

专业信息表
在这里插入图片描述

学会信息表
在这里插入图片描述

系部信息表
在这里插入图片描述

参会信息表

在这里插入图片描述

  • 8
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fy_1852003327

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值