实验二 数据库设计方法
为一个综合性运动会建立数据库,涉及的实体如下: 实验要求1:设计概念模型的E-R图。
运动会数据系统E-R图编号名称团长姓名运动员编号姓名性别年龄代表团1:n运动员参赛成绩竞赛项目项目编号编号名称比赛地点比赛时间
实验要求2:推出关系数据库。 关系模式:
代表团(代表团编号,代表团名称,团长姓名)
运动员(运动员编号,姓名,性别,年龄,代表团编号) 参赛项目(项目编号,项目名称,比赛时间,比赛地点) 参赛(运动员编号,项目编号,参赛成绩)
实验思考
1、简述E-R图的构成三要素。
实体、属性、联系
2、简述关系的性质。
关系中不允许出现相同的元组
关系中元组的顺序(即行序)可任意 关系中属性的顺序可任意
同一属性名下的各个属性值必须来自同一个域,必须是同一类型的数据 关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。
关系中每一个分量必须是不可分的数据项,或者说所有的属性值都是原子的,即是一个确定的值,而不是值的集合
3、实体之间的联系有哪几种,并简述之。
一对一、一对多、多对多
4、试举出三个实例,要求实体型之间分别有一对一、一对多、多对多的联系。
一对一:班级与班长之间的联系:
一个班级只有一个正班长
一个班长只在一个班中任职
一对多:班级与学生之间的联系: 一个班级中有若干名学生, 每个学生只在一个班级中学习
多对多:课程与学生之间的联系:
一门课程同时有若干个学生选修
个学生可以同时选修多门课程
实验四 表的管理
实验内容:
1、 使用企业管理器按下表结构创建表
create database Course_Class_Student use Course_Class_Student; create table Course (
CourseID int primary key,
CourseName varchar(20) not null, Category char(8), Period smallint , Credit tinyint )
use Course_Class_Student; create table ClassInfo (
ClassID int not null,
ClassName varchar(20) not null, )
2、使用T-SQL语句按下表结构创建表
use Course_Class_Student create table student (
StudentNum char(9) primary key not null, StudentName varchar(8) not null, Sex bit,
Birthday smalldatetime , ClassID int )
4、使用T-SQL语句修改表的结构
alter table student add Nation varchar(20) alter table student add Stature int
5、使用企业管理器实现对数据的操作
insert into Course values (1,'哲学','公共',36,2) insert into Course values (2,'实用英语(1)','公共',72,3) insert into Course values (3,'实用英语(2)','公共',72,3) insert into Course values (4,'计算机应用基础','公共',102,5)
insert into Course values (5,'C语言程序设计','专业基础',102,5) insert into Course values (6,'关系数据库技术基础','专业基础',102,5)
6、使用T-SQL语句实现对数据的操作
(1)使用INSERT语句向Course表中添加记录:(计算机网络,专业基础,72,4)
insert into Course values (7,'计算机网络','专业基础',72,4)
(2)使用UPDATE语句将Course表中的“计算机应用基础”课的学时数改为106。
update Course set Period=106 where CourseName = '计算机应用基础'
(3)使用DELETE语句将Course表中的公共课全部删除。
delete from Course where Category = '公共'
7、使用T-SQL语句按下表结构创建表(在创建表时定义约束)
create table Grade(
StudentNum char(9) NOT NULL , CourseID int NOT NULL ,
DailyGrade decimal(5,1) CHECK (DailyGrade BETWEEN 0 AND 20), PracticeGrade decimal(5,1) CHECK (PracticeGrade BETWEEN 0 AND 30), TestGrade decimal(5,1) CHECK (TestGrade BETWEEN 0 AND 50) )
8、使用T-SQL语句修改表的结构
(1)为班级表ClassInfo添加入学时间EnrollDate字段,并定义入学时间不小于2001年9月1日。
ALTER TABLE ClassInfo add EnrollDate DATETIME CHECK (EnrollDate >= 2001-09-01)
(2)为班级表ClassInfo定义主键约束,定义班级号ClassID为主键。
Alter table ClassInfo add primary key(ClassID)
9、使用企业管理器定义约束
(1)为学生表Student定义外键约束,使ClassID参照班级表ClassInfo中的ClassID,并为约束设置级联更新。
(2)为班级表ClassInfo的ClassName定义唯一约束。