实验一 数据库设计(答案)
- 格式:doc
- 大小:146.50 KB
- 文档页数:4
数据库实验
一、题目
药品(编号,名称,价格,厂商)
处方(药品编号,数量,医生编号)
医生(编号,姓名,科室,职称)
根据上面基本表的信息完成下列查询。
1 列出医生“张力”开的所有药品名称。
2 列出比“北方制药”所有药品都贵的药品信息。
3 列出内科所有处方的医生姓名、药品名称、金额
二、答案
题目一
连接查询
select 名称
from Yao ,Chu,Dr
where Yao.编号=Chu.药品编号and Chu.医生编号=Dr.编号and 姓名='张力'
嵌套查询
select 名称
from Yao
where 编号in(select 药品编号
from Chu
where 医生编号in(select 编号
from Dr
where 姓名= '李丽'))
题目二
select *
from Yao
where 价格>all(select 价格from Yao where 厂商='北方制药')
题目三
select 姓名,名称,价格
from Yao ,Chu,Dr
where Yao.编号=Chu.药品编号and Chu.医生编号=Dr.编号and 科室='内科'。
按照如下方式重新定义四张表:定义新的books表,其所拥有的属性与属性类型与原有的books表一致以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名定义属性category为”非空” ,同时在定义的时候必须提供约束名create table Books(bookId number(9,0)constraint BooksKey primary key,title varchar(80),author varchar(40),year integer,category varchar(15)constraint B1 not null);commit;定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致以表级完整性的方式定义属性cid为主码以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名create table Customers (cid number(9,0),cname char(40)constraint C1 unique,age integer,primary key(cid));commit;定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致定义属性cid与bookId为主码,同时在定义的时候必须提供约束名以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。
当删除Books表中的某一本书时,级联删除与它相关的购买记录以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。
当删除customers表中的某个顾客时,如果存在与该客户相关的购买记录,拒绝删除。
create table Purchases(cid number(9,0),bookId number(9,0)constraint bookidFKey references Books(bookid)on delete cascade,pdate date,pprice number(8,2),constraint PurchasesKey primary key(cid,bookid),constraint cidFKey foreign key(cid) references customers(cid));commit;定义新的pricing表,其所拥有的属性与属性类型与原有的pricing表一致以列级完整性的方式定义属性booId为主码,同时在定义的时候必须提供约束名定义约束,要求当书的format是‘paperback’时,当前价格不能超过50create table Pricing(bookId number(9,0)constraint PricingKey primary key,format varchar(15),price number(9,2),constraint P1 check (format <>'paperback' OR price<=50));commit;创建如下的触发器:定义一个AFTER行级触发器,当修改books表的bookid后,自动修改purchases和pricing表中与它相关记录中的bookid(只允许使用一个触发器) create trigger alter_bookidafter update on booksfor each rowbeginif(:new.bookid<>:old.bookid)then update purchasesset bookid = :new.bookidwhere bookid = :old.bookid;update pricingset bookid = :new.bookidwhere bookid = :old.bookid;end if;end;定义如下的一张表:Score(Sno, Chinese, Math, English, Total)Sno是主码Chinese, Math, English分别表示三门课成绩,并且三门课的成绩取值范围是0-100且均不能为空值Total的取值需要正好是三门课成绩总和定义一个AFTER行级触发器,当修改Score表中某门课的成绩后,自动修改Totalcreate table Score(Sno number(9,0)constraint SnoKey primary key,Chinese number(9,2)constraint S1 check(Chinese BETWEEN 0 and 100)constraint S2 not null,Math number(9,2)constraint S3 check(Math BETWEEN 0 and 100)constraint S4 not null,English number(9,2)constraint S5 check(English BETWEEN 0 and 100)constraint S6 not null,Total number(9,2),constraint S7 check (total = chinese+math+english));定义触发器create trigger update_scorebefore update on scorefor each rowbegin:new.total := :new.chinese+:new.math+:new.english;end;利用书本上的3张表:student, course, sc问题1:对各门课程成绩进行分段统计,并有类似如下的输出结果课程: 数据库0<成绩<60 0人课程: 数据库60<成绩<80 0人课程: 数据库81<成绩<100 1人课程: 数学0<成绩<60 0人课程: 数学60<成绩<80 1人课程: 数学81<成绩<100 2人课程: 数据结构0<成绩<60 0人课程: 数据结构60<成绩<80 1人课程: 数据结构81<成绩<100 1人解答set serveroutput ondeclarea number; --0-60分人数b number; --61-80分人数c number; --81-100分人数cname ame%type; --临时存储课程名o游标,遍历sc表中的每一门课,得到课程号cnocursor cur_sc_cno isselect DISTINCT cnofrom sc;--sc.grade游标,根据cur_sc_cno游标中的课程号遍历成绩gradecursor cur_sc_grade(var_cno in o%type) isselect gradefrom scwhere cno = var_cno;ame游标,根据cur_sc_cno游标中的课程号遍历课程名cnamecursor cur_course_cname(var_cno in o%type) isselect cnamefrom coursewhere cno = var_cno;begin--遍历sc表的cnofor record_sc_cno in cur_sc_cnoloopa:=0; --初始化a,b,cb:=0;c:=0;--根据record_sc_o遍历sc表的gradefor record_sc_grade in cur_sc_grade(record_sc_o)loopif record_sc_grade.grade > 0 and record_sc_grade.grade < 61 then a:=a+1;end if;if record_sc_grade.grade > 60 and record_sc_grade.grade < 81 then b:=b+1;end if;if record_sc_grade.grade > 80 and record_sc_grade.grade < 101 then c:=c+1;end if;end loop;--根据record_sc_cno得到当前课程名for record_course_cname in cur_course_cname(record_sc_o)loopcname:=record_course_ame;end loop;dbms_output.put_line('课程:'||cname||' 0<成绩<60 '||a||'人');dbms_output.put_line('课程:'||cname||' 61<成绩<80 '||b||'人');dbms_output.put_line('课程:'||cname||' 81<成绩<100 '||c||'人');end loop;end;问题2:需要找出课程a的前n名同学以及他们成绩,并按照从高到低排列。
数据库实验答案分析总结实验实验一熟悉SQLSERVER龄Sage所在系Sdept95001李勇男份。
selectsname,龄降序排列。
select*fromstudentorderbysdept,sagedesc8.计算2号课程的平均成绩。
selectA VG(grade)fromSCwherecno=2;9.查询选修了2号课程的学生的最高成绩。
selectMAX(grade)fromSCwherecno=2;10.求各个课程号及相应的选课人数。
selectcno,COUNT(distinctsno)fromSCgroupbycno11.查询至少选修了3门课程以上的学生序号。
selectsnofromSCgroupbysnohavingCOUNT(*)>=3;12.查询“数据库”的间接先行课。
selectsecond.cpnofromCourseasfirst,Courseassecondwherefirst.cpno=sec ame=数据库;13.查询其他系中比信息系某一学生年龄小的学生的姓名和年龄。
selectdistinctfirst.sname,first.sagefromStudentasfirst,Studentassecondwhe refirst.SageA VG(second.Grade);16.查询至少选修了1号课程和3号课程的学生学号。
(selectsnofromSCwhereCno=1)intersect(selectsnofromSCwhereCno=3);1 7.查询只选修了1号课程和3号课程的学生学号。
selectsnofromSCwhereCno=1andSnoin(selectSnofromSCwhereCno=2an dSnoin(selectSnofromSCgroupbySnohavingCOUNT(sno)=2));18.查询没有选修1号课程的学生姓名。
《数据库系统概论》实验报告书专业班级学号姓名指导教师安徽工业大学计算机学院实验一:数据定义/数据操纵语言[ 实验日期 ] 2011 年 4 月 10 日[ 实验目的 ]熟悉SQL SERVER上机环境;熟练掌握和使用DDL语言,建立、修改和删除数据库表;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。
[ 实验内容 ]1.先建立数据库:STUDENT用两种方式建立:在查询分析器中以DDL语言方式建立.步骤为:先在指定的地方建立放置数据库文件的文件夹(如学生数据库),然后将建立的数据库文件放到指定的文件夹中.2.SQL数据定义语句:例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。
create table Student(SNO char(5) primary key,SNAME char(8) NULL,SDEPT char(2),SCLASS char(2),SAGE smallint)create table Course(CNO char(3) primary key,CNAME char(16),CTIME smallint)create table Teach(TNAME CHAR(8),TSEX CHAR(2),CNO CHAR(3),TDATE smalldatetime,TDEPT CHAR(2)) create table Score (sno char(5),cno char(3),Score float);例1-2: (修改数据库表) 在Student表中增加SSEX(C,2) 字段。
alter table student add SSEX char(2)例1-3: (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。
实验任务书(实验一、实验二)课程名称:数据库原理与技术实验报告要求:1.列出所有的SQL语句和源代码;2.程序要求有适当的注释;3.对数据完整性约束实施要求给出相应的测试用例。
4.实验报告提交电子档。
实验内容:一:创建表、更新表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。
2.了解表的结构,建立所有表的关系图。
3.利用系统定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建日期等。
4.查看所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)5.把价格在$20以上的所有玩具的信息拷贝到称为PremiumToys的新表中。
SELECT*INTO PremiumToysFROM ToysWHERE Toys.mToyRate>20;6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。
ALTER TABLE ToysADD CONSTRAINT C1CHECK (siToyQoh BETWEEN 0 AND 200);ALTER TABLE ToysADD CONSTRAINT C2default(1)for siLowerAge;7.给id为‘000001’玩具的价格增加$1。
update Toys set mToyRate=mToyRate+1 where cToyId='000001';8. 列出表PickofMonth中的所有记录,并显示中文列标题。
SELECT cToyId[玩具编号],siMonth[生产月份],iYear[生产年份],iTotalSold [销售总量]FROM PickofMonth;二:查询数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。
1、查询所有业务部门的员工姓名、职称、薪水select employeeName,headShip,salaryfrom Employeewhere department='业务科'2、查询名字中含有“有限”的客户姓名和所在地。
select customerName,addressfrom Customerwhere customerName like '%有限%'3、查询出姓“王”并且姓名的最后一个字为“成”的员工select*from Employeewhere employeeName='王%成'4、查询住址中含有上海或者南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示。
select employeeName,department,headShip,address,sex=case sexwhen 'M' then '男'when 'F' then '女'endfrom employeewhere (address like '%上海%'or address like'%南昌%')and sex='F'或WHERE address LIKE '上海%' AND sex='F' OR address LIKE '南昌%' AND sex='F'5、在表sales中挑出销售金额大于等于5000元的订单。
SELECT orderNo ,sum(quantity*price)sumOrderFROM OrderDetailGROUP BY orderNoHA VING sum(quantity*price)>=5000ORDER BY sumOrder DESC6、选取订单金额最高的前10%的订单数据SELECT top 10 percent orderNo ,sum(quantity*price)sumOrder FROM OrderDetailGROUP BY orderNo7、查询出职务为“职员”或职务为“科长”的女员工的信息。
河南工程学院计算机科学与工程系数据库系统原理实验报告册学期:课程:专业:班级:学号:姓名:指导教师:目录实验一 SQL Server 2000安装、数据库创建及管理 (1)一、实验学时 (1)二、实验目的 (1)三、实验内容 (1)四、实验要求 (13)五、代码清单 (13)六、实验中出现的问题及解决的方法 (15)七、思考讨论题或体会或对改进实验的建议 (16)实验二表和表数据的操作 (17)一、实验学时 (17)二、实验目的 (17)三、实验内容 (17)四、实验要求 (22)五、代码清单 (22)六、实验中出现的问题及解决的方法 (24)七、思考讨论题或体会或对改进实验的建议 (25)实验三索引和视图 (26)一、实验学时 (26)二、实验目的 (26)三、实验内容 (26)四、实验要求 (31)五、代码清单 (31)六、实验中出现的问题及解决的方法 (33)七、思考讨论题或体会或对改进实验的建议 (34)实验四 T-SQL程序设计 (35)一、实验学时 (35)二、实验目的 (35)三、实验内容 (35)四、实验要求 (39)五、代码清单 (39)六、实验中出现的问题及解决的方法 (41)七、思考讨论题或体会或对改进实验的建议 (42)实验五数据库安全性 (43)一、实验学时 (43)二、实验目的 (43)三、实验内容 (43)四、实验要求 (46)五、代码清单 (47)六、实验中出现的问题及解决的方法 (49)七、思考讨论题或体会或对改进实验的建议 (49)实验六数据库完整性 (51)一、实验学时 (51)二、实验目的 (51)三、实验内容 (51)四、实验要求 (54)五、代码清单 (54)六、实验中出现的问题及解决的方法 (56)七、思考讨论题或体会或对改进实验的建议 (57)实验一 SQL Server 2000安装、数据库创建及管理一、实验学时:2学时二、实验目的(1)了解安装SQL Server2000的硬件和软件环境。
1.如何构造出一个合适的数据逻辑结构是()主要解决的问题。
A.物理结构设计B.数据字典C.逻辑结构设计D.关系数据库查询2.概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的()。
A.数据模型B.概念模型C.层次模型D.关系模型3.数据库设计中,确定数据库存储结构,即确定关系、索引、聚簇、日志、备份等数据的存储安排和存储结构,这是数据库设计的()。
A. 需求分析阶段B. 逻辑设计阶段C. 概念设计阶段D. 物理设计阶段4.数据库物理设计完成后,进入数据库实施阶段,下述工作中,()一般不属于实施阶段的工作。
A.建立库结构B.系统调试C.加载数据D.扩充功能5.数据库设计可划分为六个阶段,每个阶段都有自己的设计内容,“为哪些关系在哪些属性上建什么样的索引”这一设计内容应该属于()设计阶段。
A.概念设计B.逻辑设计C.物理设计D.全局设计6.在关系数据库设计中,设计关系模式是数据库设计中()阶段的任务。
A.逻辑设计阶段B.概念设计阶段C.物理设计阶段D.需求分析阶段7.在关系数据库设计中,对关系进行规范化处理,使关系达到一定的范式,例如达到3NF,这是()阶段的任务。
A.需求分析阶段B.概念设计阶段C.物理设计阶段D.逻辑设计阶段8.概念模型是现实世界的第一层抽象,这一类最著名的模型是()。
A.层次模型B.关系模型C.网状模型D.实体-联系模型9.在概念模型中的客观存在并可相互区别的事物称()。
A.实体B.元组C.属性D.节点10.公司有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是()。
A.多对多B.一对一C.一对多D. 多对一11.关系数据库中,实现实体之间的联系是通过关系与关系之间的()。
数据库实验内容--答案实验内容:实验一:数据库的操作使用Management Studio和sql语句分别完成以下操作:1.创建一个名为“SM”的数据库,数据文件初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;日志文件初始大小为2MB,数据大小不受限制,按1MB增长。
create database sm on (name='smdata',filename='e:\\smdata.mdf', size=3,maxsize=50, filegrowth=10%) log on(name='smlog',filename='e:\\smlog.ldf', size=2,maxsize=unlimited, filegrowth=1)2.修改数据库“SM”,将数据文件名改成“sm_data”,初始大小改成5MB alter database sm modify file( name='smdata', newname='sm_data', size=5)3.分别查看数据库“SM”,该数据库中的文件和文件组。
execsp_helpfilesmexecsp_helpfilegroupsm 4.删除数据库“SM”。
drop database sm实验二:创建表1. 在数据库SM中创建学生表student,课程表course,选课表scstudent(sid,sno,clno,sname,ssex,sage,sbir) 说明:sidint identity(1,1) 序号 sno为主关系键,为字符类型学号 clno字符类型,班级号 sname字符类型,并不为空ssex字符类型,check的值的范围为男女 sbir日期类型出生日期sage int;usesmcreate table student ( sidint identity(1,1),sno char(10) constraint pk_st primary key, clno char(10),sname varchar(20) not null,ssex char(2) constraint ck_ssex check(ssex in('男','女')), sbirdatetime, sageint )course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno字符类型,主关系键 cname字符类型,唯一键ccredits学分,精确数值型,精确长度为2,小数位为1 ctno,cpno字符类型ctime整型create table course(cno char(4) constraint pk_c primary key, cname varchar(20)constaintuk_cname unique, ccredit decimal(2,1), ctno char(2), cpno char(4), ctimetinyint )sc(sno,cno,score)说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。
数据库试验答案计算机与信息学院数据库实验报告专业班级学⽣姓名及学号课程教学班号任课教师实验指导教师实验地点2012 ~2013 学年第⼆学期实验1 使⽤向导创建和删除数据库⼀、实验⽬的1.熟悉SQL Server 中SQL Server Management Studio的环境2.了解SQL Server 数据库的逻辑结构和物理结构3.掌握使⽤向导创建和删除数据库的⽅法⼆、实验要求1.熟练使⽤SSMS进⾏数据库的创建和删除操作。
2.完成实验报告。
三、实验内容设有⼀学籍管理系统,其数据库名为“EDUC”。
初始⼤⼩为 10MB,最⼤为50MB,数据库⾃动增长,增长⽅式是按5%⽐例增长;⽇志⽂件初始为2MB,最⼤可增长到5MB,按1MB增长。
数据库的逻辑⽂件名为“student_data”, 物理⽂件名为“student_data.mdf,存放路径为“E:\sql_data”。
⽇志⽂件的逻辑⽂件名为“student_log”, 物理⽂件名为“student_log.ldf”,存放路径为“E:\sql_data”。
四、实验步骤1.使⽤SQL Server Management Studio(简称SSMS)创建数据库。
(1)启动SSMS在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进⼊【SQL Server Management Studio】窗⼝。
如果⾝份验证选择的是“混合模式”,则要输⼊sa的密码。
(2)建⽴数据库在“对象资源管理器”窗⼝,建⽴上述数据库EDUC。
在数据库节点上右击选择新建。
同时建⽴⼀个同样属性的数据库EDUC1。
2. 使⽤向导删除上⾯建⽴的数据库。
⽤SSMS删除建⽴的数据库EDUC。
五、实验总结经过本次试验,对于SQL SERVER有了⼀个初步的认识,也对于在sql server上创建数据库有了⼀定的了解。
数据库实验1-6参考答案实验⼀SQL Server使⽤初步⼀、实验⽬的1、熟悉SQL Server2000的组成及基本功能。
2、掌握SQL Server2000的登录及注册。
3、掌握SQL Server2000企业管理器的使⽤⽅法。
4、熟悉查询分析器的基本使⽤。
⼆、实验预习1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些?答:DBMS是位于⽤户和操作系统之间的⼀层数据管理软件。
常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。
2、SQL Server 2000(2005)的安装步骤?答:以企业版安装为例,步骤为:将企业版安装光盘插⼊光驱后,出现以下提⽰框。
请选择“安装 SQL Server 2000 组件”出现下⾯对话框后,选择 "安装数据库服务器" 。
选择 "下⼀步",然后选择 "本地计算机" 进⾏安装。
在 "安装选择" 窗⼝,选择 "创建新的SQL Server实例..."。
对于初次安装的⽤户,应选⽤这⼀安装模式,不需要使⽤ "⾼级选项" 进⾏安装。
"⾼级选项"中的内容均可在安装完成后进⾏调整。
在 "⽤户信息" 窗⼝,输⼊⽤户信息,并接受软件许可证协议。
在“安装定义”窗⼝,选择“服务器和客户端⼯具”选项进⾏安装。
在“实例名”窗⼝,选择“默认”的实例名称。
在“安装类型”窗⼝,选择“典型”安装选项,并指定“⽬的⽂件夹”。
在 "服务账号" 窗⼝,请选择 "对每个服务使⽤统⼀账户..." 的选项。
在 "⾝份验证模式" 窗⼝,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。
实验一数据库设计一、实验目的使用规范的数据库设计方法,分析并设计“FL Y(飞翔)信息管理系统”的数据库。
二、实验要求1. 掌握数据库设计步骤。
2. 掌握数据库概念模型设计,熟练绘制E-R图。
3. 掌握数据库关系模型的设计。
三、实验内容实验1-1 “FL Y(飞翔)信息管理系统”数据库需求分析飞翔公司是一家大型批发连锁企业,在全国各地分布多家连锁公司,该公司为了加强信息化管理,准备开发一个信息管理系统,以便对其连锁机构、员工、订单、供应商、零售商和商品等信息进行统一管理。
经过需求调研分析,该数据库系统主要包含以下信息:1)公司信息:主要包括公司名称、公司编号、公司地址、所属区域、公司属性等信息。
其中公司属性包括三种类型:总部、直属和加盟。
2)员工信息:主要包括员工的姓名、性别、民族、出生日期、工作日期、婚否、职称、简历、基本工资、所属公司等信息。
每个连锁公司有多名员工,每个员工只能属于一个公司。
3)商品信息:主要包括商品名称、商品编号、商品的销售价格、商品的进货价格、商品的类型和该商品的供应商等信息。
4)订单信息:主要包括:订单编号、购买客户、送货方式、付款方式、订货日期、签订该订单的员工,以及该订单中包含的商品、数量、价格和折扣等信息。
其中,每张订单由一名员工与一名零售商签订,送货方式包括“送货上门”和“自行提货”两种类型,付款方式包括“现金”、“支票”和“银行卡”三种类型。
5)零售商信息:主要包括零售商的编号、名称、联系人、所属城市、地址、邮编、电子邮箱等信息。
零售商是飞翔公司批发销售商品面向的客户。
6)供应商信息:主要包括:供应商的编号、名称、地址等信息。
供应商是飞翔公司商品进货的供货方。
实验1-2 设计“FL Y(飞翔)信息管理系统”数据库概念模型根据前述实验的需求分析结果,设计“FL Y(飞翔)信息管理系统”数据库E-R模型,如图1.1所示。
其中包含的实体集有:“公司机构”、“员工”、“员工工资”、“订单”、“商品”、“商品类型”、“零售商”和“供应商”。
数据库实验和参考答案上机实验三1.在“学生管理数据库”中用查询分析器创建p82页的课程数据表(表名为kcb),并输入数据内容。
2.用查询分析器在student表中增加一个字段:“电话号码”,字符型,并设置默认值为“1111111”。
3.用查询分析器删除kcb表的主键4.用企业管理器或查询分析器修改course表,设置约束:学时>=学分*16。
5.用查询分析器修改学生管理数据库中的students_dat文件增容方式为一次增加3MB.6.将“学生管理数据库”更名为“学生管理”。
7.将“学生管理”数据库备份到外存中。
8.将“学生管理”数据库的数据导出为excel文件,并保存在外存中。
9.为course表中的课程名建立唯一性索引。
10.将“学生管理”数据库从系统中分离出来。
11. 将“学生管理”数据库附加到企业管理器中。
上机实验四1.分别查询学生表和学生修课表中的全部数据。
2.查询计算机系的学生的姓名、年龄。
3.查询选修了c01号课程的学生的学号和成绩。
4.查询成绩在70到80分之间的学生的学号、课程号和成绩。
5.查询计算机系年龄在18到20之间且性别为“男”的学生的姓名、年龄。
6.查询0412101号学生的修课情况。
7.查询c01号课程成绩最高的分数。
8.查询学生都选修了哪些课程,要求列出课程号。
9.查询Northwind数据库中orders 表的OrderlD、CustomerID和OrderDate,并将最新的定购日期(OrderDate)列在前边。
10.查询Northwind数据库中orders 表的ShipCountry列以B,C,D,F 开始且第三个字符为“a”的OrderlD、CustomerID和ShipCountry的信息。
11.查询Northwind数据库中orders 表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字母是“a”的OrderlD、CustomerlD和ShipCountry的信息。
第六章数据库设计习题解答和解析1. 1.试述数据库设计过程。
答:这里只概要列出数据库设计过程的六个阶段:(1)需求分析;(2)概念结构设计;(3)逻辑结构设计;(4)数据库物理设计;(5)数据库实施;(6)数据库运行和维护。
这是一个完整的实际数据库及其应用系统的设计过程。
不仅包括设计数据库本身,还包括数据库的实施、运行和维护。
设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
解析:希望读者能够认真阅读《概论》6.1的内容,了解并掌握数据库设计过程。
2. 2.试述数据库设计过程各个阶段上的设计描述。
答:各阶段的设计要点如下:(1)需求分析:准确了解与分析用户需求(包括数据与处理)。
(2)概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS 的概念模型。
(3)逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。
(4)数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
(5)数据库实施:设计人员运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
(6)数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。
解析:这是进一步了解数据库设计的具体内容。
设计描述是指在各个阶段体现设计内容,描述设计结果的各种文档、程序。
读者可以参考《概论》上图6.3。
3. 3.试述数据库设计过程中结构设计部分形成的数据库模式。
答:数据库结构设计的不同阶段形成数据库的各级模式,即:(1)在概念设计阶段形成独立于机器特点,独立于各个DBMS产品的概念模式,在本篇中就是E-R图;(2)在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图(View),形成数据的外模式;(3)在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
数据库实验和参考答案上机实验三1.在“学生管理数据库”中用查询分析器创建p82页的课程数据表(表名为kcb),并输入数据内容。
2.用查询分析器在student表中增加一个字段:“电话号码”,字符型,并设置默认值为“1111111”。
3.用查询分析器删除kcb表的主键4.用企业管理器或查询分析器修改course表,设置约束:学时>=学分*16。
5.用查询分析器修改学生管理数据库中的students_dat文件增容方式为一次增加3MB.6.将“学生管理数据库”更名为“学生管理”。
7.将“学生管理”数据库备份到外存中。
8.将“学生管理”数据库的数据导出为excel文件,并保存在外存中。
9.为course表中的课程名建立唯一性索引。
10.将“学生管理”数据库从系统中分离出来。
11. 将“学生管理”数据库附加到企业管理器中。
上机实验四1.分别查询学生表和学生修课表中的全部数据。
2.查询计算机系的学生的姓名、年龄。
3.查询选修了c01号课程的学生的学号和成绩。
4.查询成绩在70到80分之间的学生的学号、课程号和成绩。
5.查询计算机系年龄在18到20之间且性别为“男”的学生的姓名、年龄。
6.查询0412101号学生的修课情况。
7.查询c01号课程成绩最高的分数。
8.查询学生都选修了哪些课程,要求列出课程号。
9.查询Northwind数据库中orders 表的OrderlD、CustomerID和OrderDate,并将最新的定购日期(OrderDate)列在前边。
10.查询Northwind数据库中orders 表的ShipCountry列以B,C,D,F 开始且第三个字符为“a”的OrderlD、CustomerID和ShipCountry的信息。
11.查询Northwind数据库中orders 表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字母是“a”的OrderlD、CustomerlD和ShipCountry的信息。
实验一数据库设计
一、实验目的
使用规范的数据库设计方法,分析并设计“FL Y(飞翔)信息管理系统”的数据库。
二、实验要求
1. 掌握数据库设计步骤。
2. 掌握数据库概念模型设计,熟练绘制E-R图。
3. 掌握数据库关系模型的设计。
三、实验内容
实验1-1 “FL Y(飞翔)信息管理系统”数据库需求分析
飞翔公司是一家大型批发连锁企业,在全国各地分布多家连锁公司,该公司为了加强信息化管理,准备开发一个信息管理系统,以便对其连锁机构、员工、订单、供应商、零售商和商品等信息进行统一管理。
经过需求调研分析,该数据库系统主要包含以下信息:
1)公司信息:主要包括公司名称、公司编号、公司地址、所属区域、公司属性等信息。
其
中公司属性包括三种类型:总部、直属和加盟。
2)员工信息:主要包括员工的姓名、性别、民族、出生日期、工作日期、婚否、职称、简
历、基本工资、所属公司等信息。
每个连锁公司有多名员工,每个员工只能属于一个公司。
3)商品信息:主要包括商品名称、商品编号、商品的销售价格、商品的进货价格、商品的
类型和该商品的供应商等信息。
4)订单信息:主要包括:订单编号、购买客户、送货方式、付款方式、订货日期、签订该
订单的员工,以及该订单中包含的商品、数量、价格和折扣等信息。
其中,每张订单由一名员工与一名零售商签订,送货方式包括“送货上门”和“自行提货”两种类型,付款方式包括“现金”、“支票”和“银行卡”三种类型。
5)零售商信息:主要包括零售商的编号、名称、联系人、所属城市、地址、邮编、电子邮
箱等信息。
零售商是飞翔公司批发销售商品面向的客户。
6)供应商信息:主要包括:供应商的编号、名称、地址等信息。
供应商是飞翔公司商品进
货的供货方。
实验1-2 设计“FL Y(飞翔)信息管理系统”数据库概念模型
根据前述实验的需求分析结果,设计“FL Y(飞翔)信息管理系统”数据库E-R模型,如图1.1所示。
其中包含的实体集有:“公司机构”、“员工”、“员工工资”、“订单”、“商品”、“商品类型”、“零售商”和“供应商”。
各实体集之间的联系如图1.1所示。
各实体集的实体型如下(其中带下划线的是码):
公司机构(机构编号,连锁机构名称,地址,区域,机构属性)
零售商(客户编号,客户名称,联系人,联系电话,城市,地址,邮政编码,电子邮件)订单(订单编号,订购日期,送货方式,付款方式)
员工(员工编号,姓名,出生日期,性别,民族,工作日期,职称,婚否,简历,照片)员工工资(员工编号,基本工资,任务工资,奖金,住房公积金,扣款)
商品(商品编号,销售价格,购入价,商品描述,商品照片)
供应商(供应商编号,供应商名称,地址)
商品类型(商品类型编号,类型名称,商品类型说明)
提示:这里的“员工工资”实体集是指员工的基本工资情况,而不是每月的工资收入,该实体集和“员工”实体集是一对一联系。
因此,可以用“员工编号”作为“员工工资”的主属性来唯一标识实体
图1.1 系统E-R概念模型
实验1-3 设计“FL Y(飞翔)信息管理系统”数据库关系模型。
根据前述实验的概念模型,按照E-R概念模型向关系模型转换的规则,可有如下的关系模式(其中带下划线的为主键,斜体字为外键):
公司机构(机构编号,连锁机构名称,地址,区域,机构属性)
零售商(客户编号,客户名称,联系人,联系电话,城市,地址,邮政编码,电子邮件)订单(订单编号,订购日期,客户编号,员工编号,送货方式,付款方式)
员工(员工编号,姓名,出生日期,性别,机构编号,民族,工作日期,职称,婚否,简历,照片)
员工工资(员工编号,基本工资,任务工资,奖金,住房公积金,扣款)
商品(商品编号,商品类型编号,销售价格,购入价,供应商编号,商品描述,商品照片)
供应商(供应商编号,供应商名称,地址)
商品类型(商品类型编号,类型名称,商品类型说明)
订单明细(订单编号,商品编号,数量,折扣)
注意:在“订单”实体集和“商品”实体集之间多对多联系向关系模型的转换中,通过新增加一个关系“订单明细”,把一个多对多联系分解为两个一对多联系。
关系“订单明细”是关系“订单”和关系“商品”的子关系,该关系以“订单编号”和“商品编号”组成一个复合主键,同时“订单编号”和“商品编号”作为外键分别对应与“订单”关系和“商品”关系。
提示:在E-R模型向关系模型转换过程中,不仅要注意实体向关系模式的转换,而且尤其要注意实体之间的联系向关系模式的转换策略。
实验1-4设计“FL Y(飞翔)信息管理系统”数据库表结构。
根据前述实验设计的关系模型结果,设计关系数据库的数据表的逻辑结构,如下所示。