实验内容:

实验问题描述:

某学院有若干专业,每个专业有若干学生;学院每年每学期都开设有若干门课程;每门课程有多个学生选修,每个学生每学期可以同时选修多门课程,每个学生对于同一门课程可以多次选修,但每学期只能选修1次,课程选修成绩以综合成绩记录。请设计某学院简单的教学管理系统的E-R模型,要求给出每个实体、联系的属性。根据以上语义,我们可得了上图1如示的教学管理系统E-R图(属性未画出)。

根据学院提供的学生选课及其他的部分数据,将上图1所示的E-R图中的部分实体和联系转换为关系,得到如下4个关系模式和相应的数据字典描述。

A、关系模式

⑴ 专业设置:包括专业编号、国家专业编号、专业名称、专业英文名称、学制、培养层次、授予学位、院系编号、院系名称;

⑵ 学生情况:包括学号、姓名、性别、出生日期、民族、籍贯、政治面貌、校区、生源地、入学日期、年级、班级名称、专业编号;

⑶ 课程设置:包括学年、学期、课程编号、课程名称、学分、学时数、课程类别1、课程类别2、环节类别、考核方式;

⑷ 学生选课:包括学号、课程编号、学年、学期、综合成绩。

B**、数据字典**

表名 中文名
Major 专业设置
Student 学生情况
Course 课程设置
SelectCourse 学生选课
专业设置:Major
字段名 数据类型 可空性 主键 外键 默认值 字段含义
majorNo CHAR(4) NOT NULL Yes No 专业代码
GBMajorNo CHAR(6) NOT NULL No No 国家专业编号
majorName VARCHAR(60) NOT NULL No No 专业名称
enMajorName VARCHAR(100) NULL No No 英文名称
lengthSchool TINYINT NOT NULL No No 4 学制
eduLevel CHAR(6) NOT NULL No No 本科 培养层次
ddegree CHAR(12) NOT NULL No No 授予学位
departmentNo CHAR(2) NOT NULL No No 院系代码
department VARCHAR(40) NOT NULL No No 院系名称

约束条件:

专业代码为4位数字字符且不能为0000

国家专业编号为6位数字字符且不能为000000

院系代码为2位数字字符且不能为00

学生情况:Student
字段名 数据类型 可空性 主键 外键 默认值 字段含义
sno CHAR(12) NOT NULL Yes No 学生学号
sname CHAR(16) NOT NULL No No 学生姓名
sex CHAR(2) NOT NULL No No 性别
birthday DATE NOT NULL No No 出生日期
nationality CHAR(16) NULL No No 汉族 民族
native CHAR CHAR(24) NULL No No 东莞市 籍贯
political CHAR(12) NULL No No 共青团员 政治面貌
district CHAR(12) NOT NULL No No 松山湖校区 院系代码
studentSource VARCHAR(24) NULL No No 生源地
enterYear DATE NOT NULL No No 入学日期
schoolYear CHAR(12) TINYINT NOT NULL NOT NULL No No 年级
class CHAR(24) NOT NULL No No 班级
majorNo CHAR(4) NOT NULL No Yes 专业代码

约束条件:

学生学号为12位数字字符,第1位为2,其它位为数字且最后2位不能是00

性别只能是‘男’或‘女’;

专业代码参照表Major。

课程设置:Course
字段名 数据类型 可空性 主键 外键 默认值 字段含义
schoolYear CHAR**(12****)TINYINT** NULL NOT NULL Yes No 学年
semester TINYINT NOT NULL Yes No 学期
courseNo CHAR(6) NOT NULL Yes No 课程代码
courseName VARCHAR(50) NOT NULL No No 课程名称
credit NUMERIC(3,1) NOT NULL No No 学分
creditHourse TINYINT NOT NULL No No 学时
courseType1 CHAR(16) NOT NULL No No 课程类别
courseType2 CHAR(16) NULL No No 课程性质
cegmentType CHAR(16) NULL No No 环节类别
examineWay CHAR(16) NOT NULL No No 考核方式

约束条件:

学年取值范围是[1,2,3,4]

学期取值范围是[1,2,3,4,5,6,7,8]

课程代码为6位数字字符且不能为000000

学分取值范围是[ 0.5,1,1.5,2,2.5,3,3.5,4,4.5,5]

学年、学期和课程代码一起构成主码。

学生选课:SelectCourse
字段名 数据类型 可空性 主键 外键 默认值 字段含义
sno CHAR(12) NOT NULL Yes Yes 学号
schoolYear CHAR(12) TINYINT NOT NULL NOT NULL Yes Yes 学年
semester TINYINT NOT NULL Yes Yes 学期
courseNo CHAR(6) NOT NULL Yes Yes 课程代码
score NUMERIC(6,2) NULL No No 综合成绩

约束条件:

综合成绩为百分制成绩

学号、学年、学期和课程代码一起构成主码。

学号参照表student

学年、学期和课程代码一起参照表course。

设计任务:

1.用SQL语句(create database)创建数据库,数据库的名字为每位同学自己的后三位学号和拼音姓名,例如,xiaojie101。

SQL语句如下:

--创造数据库AB
CREATE DATABASE AB
ON    -- 定义第一个逻辑设备(默认为主逻辑设备)及其数据文件(  NAME=ABDB,     -- 数据文件的逻辑文件名(即别名)FILENAME='路径\ABDB.mdf',   -- 物理(磁盘)文件名 SIZE=2, MAXSIZE=10, FILEGROWTH=1 )
LOG ON         -- 定义日志逻辑设备及其日志文件(  NAME=ABLog,     -- 日志文件的逻辑文件名(即别名)FILENAME='路径\ABLog.ldf',   -- 日志(磁盘)文件名 SIZE=1, MAXSIZE=5, FILEGROWTH=1 );

2.在所创建的数据库下,用SQL语句(create table)创建所有的表、对应的完整性约束。

SQL语句如下:


--使用数据库lingxue
USE AB;--创建Major表
CREATE TABLE Major
(majorNo    CHAR(4) CONSTRAINT MajorPK PRIMARY KEY CHECK (majorNo LIKE '[0-9][0-9][0-9][0-9]' AND majorNo NOT LIKE '0000'),--专业代码       GBMajorNo CHAR(6) NOT NULL CHECK (GBMajorNo LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]' AND GBMajorNo NOT LIKE '000000'),           --国家专业编号majorName VARCHAR(60) NOT NULL,       --专业名称enMajorName VARCHAR(100) NULL,        --英文名称lengthSchool TINYINT NOT NULL DEFAULT 4,--学制eduLevel CHAR(6) NOT NULL DEFAULT '本科',--培养层次ddegree CHAR(12) NOT NULL,--授予学位departmentNo CHAR(2) NOT NULL CHECK (departmentNo LIKE '[0-9][0-9]' AND departmentNo NOT LIKE '00'),--院系代码department VARCHAR(40) NOT NULL, --院系名称
);--#创建Students表
CREATE TABLE Students
(sno CHAR(12) NOT NULL CHECK (sno LIKE '[2][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'AND sno NOT LIKE '%00'), --学生学号sname CHAR(16) NOT NULL, --学生姓名sex CHAR(2) NOT NULL DEFAULT '男' CHECK (sex in ('男','女')), --性别birthday DATE NOT NULL, --出生日期nationality CHAR(16) DEFAULT '汉族' , --民族native CHAR(24) NULL DEFAULT '东莞市', --籍贯political CHAR(12) NULL DEFAULT '共青团员', --政治面貌district CHAR(12) NOT NULL DEFAULT '松山湖校区', --院系代码studentSource VARCHAR(24), --生源地enterYear DATE NOT NULL, --入学日期schoolYear TINYINT NOT NULL, --年级class CHAR(24) NOT NULL, --班级majorNo    CHAR(4) NOT NULL CHECK(majorNo LIKE '[0-9][0-9][0-9][0-9]' AND majorNo NOT LIKE '0000'),--专业代码/*添加约束*/CONSTRAINT StudentsPK PRIMARY KEY (sno), --添加主键CONSTRAINT StudentsMajorFK FOREIGN KEY(majorNo) REFERENCES Major(majorNo),--添加外键
);
--创建Course表
CREATE TABLE Course
(schoolYear TINYINT NOT NULL CHECK(schoolYear >=1 AND schoolYear <= 4), --学年semester TINYINT NOT NULL CHECK(semester >=1 AND semester <+ 8), --学期courseNo CHAR(6) NOT NULL CHECK(courseNo LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]' AND courseNo NOT LIKE '000000'), --课程代码courseName VARCHAR(50) NOT NULL, --课程名称credit NUMERIC(3,1) NOT NULL CHECK(credit in ('0.5','1','1.5','2','2.5','3','3.5','4','4.5','5')), --学分creditHourse TINYINT NOT NULL, --学时courseType1 CHAR(16) NOT NULL, --课程类别courseType2    CHAR(16) NULL, --课程性质cegmentType CHAR(16) NULL, --环节类别examineWay CHAR(16) NOT NULL, --考核方式CONSTRAINT CoursePK PRIMARY KEY (schoolYear,semester,courseNo), --添加主键
);--创建SelectCourse表
CREATE TABLE SelectCourse
(sno CHAR(12) NOT NULL CHECK (sno LIKE '[2][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'AND sno NOT LIKE '%00'), --学号schoolYear TINYINT NOT NULL CHECK(schoolYear >=1 AND schoolYear <= 4), --学年semester TINYINT NOT NULL CHECK(semester >=1 AND semester <+ 8), --学期courseNo CHAR(6) NOT NULL CHECK(courseNo LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]' AND courseNo NOT LIKE '000000'), --课程代码score NUMERIC(6,2) NULL CHECK(score >= 0 AND score <= 100), --综合成绩CONSTRAINT SelectCoursePK PRIMARY KEY (sno,schoolYear,semester,courseNo), --添加主键CONSTRAINT SelectCourseSnoFK FOREIGN KEY(sno) REFERENCES Students(sno),--添加外键CONSTRAINT SelectCourseFK FOREIGN KEY(schoolYear,semester,courseNo) REFERENCES Course(schoolYear,semester,courseNo),--添加外键
)

3.用SQL的导入导出工具,将已经整理好的对应Excel表的数据全部导入到对应的数据库表中。
结果截图如下:

--查看插入表的数据
select * from Major
select * from Students
select * from Course
select * from SelectCourse

Major

Student

Course

SelectCourse

4.用SQL语句,在Student表中增加一条记录,记录的各属性取值对应本人的实际情况。
SQL语句如下:

--插入xx专业,如果major表没有自己的专业
INSERT INTO Major VALUES('专业代码 ','国家专业编号 ','专业名称','英文名称','学制' ,'培养层次 ','授予学位 ','院系代码','院系名称   ');--插入本人信息
INSERT INTO Students VALUES ('学号','姓名','性别','出生日期  ','汉族','籍贯',' 政治面貌','院系代码','生源地','入学日期','年级','班级','专业代码');

5.用SQL语句,将数据表Student、Course和SelectCourse的schoolYear字段值改为3。

SQL语句如下:


--删除外键约束
ALTER TABLE SelectCourse DROP CONSTRAINT SelectCourseFK;--修改字段值
UPDATE Students
SET schoolYear = 3;
UPDATE Course
SET schoolYear = 3;
UPDATE SelectCourse
SETschoolYear = 3; --添加外键约束
ALTER TABLE SelectCourse
ADD CONSTRAINT SelectCourseFK FOREIGN KEY (schoolYear,semester,courseNo) REFERENCES Course(schoolYear,semester,courseNo);

6. 用SQL语句,删除Student表中新增的对应于本人的记录。

SQL语句如下:

-- 删除本人信息
DELETE FROM Students WHERE sno = 'sno';

数据库《实验一 SQL Server数据库及对象的设计》相关推荐

  1. python连接sql数据库_python连接sql server数据库实现增删改查

    简述 python连接微软的sql server数据库用的第三方模块叫做pymssql(document:http://www.pymssql.org/en/stable/index.html).在官 ...

  2. 【数据库-汇总】SQL SERVER数据库

         1.sql sever增删改相关 -- 切换数据库 -- use 数据库名; 1.1创建部门表: create table Department ( -- 部门编号,primary key: ...

  3. python3连接sql server数据库_Python3操作SQL Server数据库(实例讲解)

    1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话,实用性就不那么大了. 2.最基本的SQL查询语句 python是使用pymssql这个模 ...

  4. SQL SERVER 2000 数据库备份和SQL Server数据库备份有两种方式,

    SQL SERVER 2000 数据库备份与还原时间:2006-08-30 10:23:23  来源:CSDN  作者:佚名备份数据库,例如: BACKUP DATABASE Northwind    ...

  5. python调用sql数据库_Python3操作SQL Server数据库(实例讲解)

    1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话,实用性就不那么大了. 2.最基本的SQL查询语句 python是使用pymssql这个模 ...

  6. 【数据库数据恢复】Sql Server数据库数据恢复案例

    数据库数据恢复环境: 5块2T硬盘组建RAID5: 划分LUN供windows服务器使用: Sql Server2008数据库: 存储空间有三个逻辑分区. 数据库故障: 数据库文件丢失,涉及到5个数据 ...

  7. 【数据库数据恢复】SQL SERVER数据库MDF (NDF)或LDF损坏怎么恢复数据?

    SQL SERVER数据库故障类型: MDF(NDF)或LDF损坏. SQL SERVER故障原因: 1.数据库正在操作过程中,机器突然断电: 2.人为误操作. SQL SERVER故障表现: 1.数 ...

  8. 数据库开发基本操作-SQL Server数据库基础知识

    数据库是一个信息系统应用程序的重要组成部分,在Web开发中,应用更加广泛,要学习好Web开发和ADO.NET,就必须对数据库有一定的了解. 数据库的概念很广,可以从很多方面进行解释.但是在计算机中,它 ...

  9. ADO.NET连接SQL Server数据库

    在.NET应用程序中,创建数据连接分为三步: 一.定义连接字符串 不同的数据库连接字符串的格式不同,一般都包括要连接的数据库提供都名称.登陆信息以及要使用的数据库名称. 注意:在定义连接字符串之前,一 ...

最新文章

  1. 青少年编程竞赛交流群第050次活动录播
  2. 数字消费时代 传统行业互联网转型方向
  3. 那些年做的学术公益-你不是一个人在战斗
  4. 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型
  5. Windows 10 常用的快捷键及常用指令
  6. PHP (20140505)
  7. mysql有没有类似merge_有关于Mysql的MERGE表类型
  8. tensor backward_Pytorch中的backward函数
  9. 新华三模拟器STP和RSTP及其MSTP的作用与配置
  10. SQL-sqlHelper001
  11. 关于eclipse中maven项目的问题
  12. 米家扫地机器人是石头代工的_石头科技的隐忧:智能扫地机器人前有高山 后有追兵...
  13. (Oracle)零基础学习SQL语句--第1篇
  14. Win10下安装Detectron2,超详细教程!
  15. 6s126发邮件服务器错误,iphone6s的邮件设置教程
  16. 2020.11.09-2020.11.15工作周报
  17. Unity中AssetBundle打包文件大致解读
  18. 给计算机老师发一封信,写给计算机老师的感谢信.doc
  19. 《机器学习》--概述
  20. Mybatis if test中字符串比较和Mybatis的like查询

热门文章

  1. 这些微信头像,你敢换吗?
  2. HC32L130单片机入坑记
  3. 第七章 突变和随机化
  4. Centos7.4.1708 安装usb无限网卡驱动
  5. 物联网的背景及其发展
  6. 红米Redmi Note10 Pro root 安装magisk秒解锁BL Redmi K40 magisk root
  7. 软件使用说明书V1.0发布
  8. IT培训行业揭秘(四)
  9. 破解XP系统密码的常用的几种方法
  10. 【转载】Excel操作 Microsoft.Office.Interop.Excel.dll的使用