上海应用技术学院2012—2013学年第2学期《信息系统与数据库技术》期末(B)试卷答案一、单项选则题(20分,每小题1分)BDACC DCBAA二、简答题(40分,每小题4分)1.关系模型的完整性约束条件有哪些?域完整性,实体完整性,参照完整性(1) 域完整性规定了属性的值必须是属性值域中的值。
域完整性又称为用户自定义完整性。
它是在关系数据模型定义时,由用户对属性列值的数据类型、长度、单位、精度、格式、值域范围、是否允许为“空值”等进行限定。
(2) 实体完整性是指关系中的元组在组成主关键字的属性上不能有空值且主关键字的值不能相同。
(3) 参照完整性要求一个外表的外关键字的取值必须是其主表主关键字的存在值或空值。
2.请简述等值联接和自然联接的区别和联系。
连接操作是二元运算,从两个关系的笛卡儿积中选取满足一定条件的元组。
当连接条件中的运算符为“=”时,称为等值连接。
如果等值连接中连接属性为相同属性(或属性组),而且在结果关系中去掉重复属性,则等值连接称为自然连接。
3.简述数据库设计的基本步骤,数据库设计的特点。
数据库设计的基本步骤:1)需求分析:了解和分析用户的应用需求(包括信息需求和处理需求),进行需求收集和分析,并以数据流图、数据字典等形式加以描述。
2)概念设计:把需求分析阶段得到的用户需求进行综合、归纳和抽象,形成一个独立于具体DBMS 的概念数据模型。
3)逻辑设计:按照一组转换规则,将概念设计阶段产生的概念模型转换为某个DBMS支持的逻辑数据模型。
4)物理设计:是为逻辑模型选取一个最适合应用环境的物理结构(包括存取结构和存取方法)。
5)数据库实施:设计人员运用DBMS提供的数据库语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6)数据库运行与维护:数据库试运行后,即可投入正式运行。
数据库在运行期间应不断地对其进行评价、调整与修改。
数据库设计的特点:1)反复性:数据库设计不可能一气呵成,需要反复推敲和修改才能完成。
2)试探性:与解决一般问题不同,数据库设计的结果经常不是唯一的,所以设计的过程通常是一个试探的过程。
数据库的设计结果很难达到非常满意的效果,常常为了达到某些方面的优化而降低另一方面的性能。
3)分步进行:数据库设计常常由不同的人员分阶段进行。
为使整个数据库的设计变得条理清晰、目的明确,必须在每一步分段把关,逐级审查,保证数据库设计的质量和进度。
4.比较并说明信息系统几种工作模式的特点。
集中式主机模式、客户机/服务器模式以及浏览器/服务器模式。
(1)集中式主机模式以单台计算机或者围绕一个中央主机构成一个完整计算环境。
所有的计算处理任务全部由中央主机完成,如有外围设备或计算机,也只是作为终端设备提供用户交互平台。
特点:1) 系统结构简单。
2)系统应用受物理位置限制。
(2)客户机/服务器模式(Client/Server,简称C/S模式)是一种在网络环境下的分布式模式。
优点:1)面向网络环境的分布式计算模式,优化利用网络资源。
服务器和客户机分担不同的工作,而且服务器可为多个分布在网络上的客户端共享。
2)应用程序和数据隔离,可以使数据具有独立性。
数据的封装性使得改变对数据本身的操作变得比较容易,可以更快地开发出新的应用,使系统具有较好的可移植性和可维护性。
3)具有很强的实时处理能力,与浏览器/服务器模式相比,该模式更适合于对数据库的实时处理和大批量的数据更新;4)由于必须安装客户端软件,系统相对封闭,这增强了它的安全性和保密性能。
缺点:1)客户端必须安装专门为该系统开发的面向用户的客户端软件。
系统的维护和升级需要在客户机和服务器两端进行,这造成系统维护困难。
2)系统开放性差。
一般是单项单系统,不同系统之间的连接困难。
而且不同系统用户界面风格不一致,不利于推广使用。
3)程序依赖于底层网络,使系统无法具有跨平台的应用能力,也很难集成新的网络服务。
例如在Windows下开发的应用系统无法在Unix环境下直接运行。
(3)浏览器/服务器模式(Browser/Server,简称B/S模式)是一种面向Internet/Intranet的分布式模式,由客户机/服务器结构扩展而来。
优点:1)面向网络环境的分布式计算模式,优化利用网络资源。
服务器和客户机分担不同的工作,而且服务器可为多个分布在网络上的客户端共享。
2)应用程序和数据隔离,可以使数据具有独立性。
数据的封装性使得改变对数据本身的操作变得比较容易,可以更快地开发出新的应用,使系统具有较好的可移植性和可维护性。
3)简化了客户端。
客户端只要安装有标准的Web浏览器即可,不需要额外安装其它客户端软件。
系统的维护和扩展变得更加轻松,只需要在服务器端就可以完成。
4)采用标准的TCP/IP协议、HTTP协议,能够与遵循这些标准的信息系统及其网络很好结合,具有开放性,同时保护了用户投资。
5)系统客户端界面统一,全部为浏览器方式,简单易用。
缺点:1)客户端的开放性增加了系统受攻击的风险。
2)在开发工具支持方面没有支持客户机/服务器模式的开发工具丰富。
5.数据库应用系统一般分为哪几层?各有什么作用?数据层数据访问层表示层数据层表示后台的数据库,主要完成数据的存储、操纵和管理功能;表示层是前台的应用程序功能交互界面,为用户提供基于数据查询和数据操作的业务功能服务;数据访问层ADO(ActiveX Data Object)介于数据层和表示层之间,主要负责数据层与表示层之间的数据访问和数据传输。
三、关系代数(12分,每小题4分)现有销售管理数据库中存在如下3张基本表:商品P (PNO,PNAME,COLOR,PRICE,TIME,STOCKNUM)其中PNO表示商品编号,PNAME表示商品名称,COLOR表示商品颜色,PRICE表示单价, TIME表示商品上架时间, STOCKNUM表示商品库存商场S(SNO,SNAME,CITY)其中SNO表示商场编号,SNAME表示商场名称,CITY表示商场所在城市销售SP(PNO,SNO,NUM)其中PNO表示商品编号,SNO表示商场编号,NUM表示商品销量。
请用关系代数表达式表达下面的查询语句:1.查询上架时间为2013年10月1日之前的商品编号,名称和库存量。
ΠPNO,PNAME,STOCKNUM(σTIME<’2013-10-01’(P))2.查询销量在1000(含)以上的商品编号,名称和价格。
ΠPNO,PANME,PRICE (σNUM>=1000(P SP))3.查询上海销售的商品的编号及数量情况。
ΠPNO,NUM(σCITY=’上海’( SP S))四、SQL语句(24分,每小题4分)现有数据库中有三张表,表的数据库模式如下:ZGBM (BM, BMname, ZGleader)其中BM表示部门编号,BMname表示部门名称,ZGleader表示主管领导,主键为BM。
CK (CKno, CKname, CKleader, CKkind, CKloca, BM)其中CKno表示仓库编号,CKname表示仓库名称,CKleader表示仓库负责人,CKkind表示仓库类别,CKloca表示仓库位置,BM表示部门编号,主键为CKno。
ZHG (ZG, ZGname, ZGsex, ZGbirth, ZGjob, ZGsal, CKno)其中ZG表示职工编号,ZGname表示姓名,ZGsex表示性别,ZGbirth表示出生日期,ZGjob表示工种,ZGsal表示工资额,CKno表示仓库编号,主键为ZG。
请在数据库中完成可实现以下功能的SQL语句。
(1)查询总工资额超过10000元的仓库信息。
Select CKno, sum(ZGsal)From ZHGGroup by CKnoHaving sum( ZGsal)>1 0000(2)查询与编号为N1234的职工在同一仓库工作的职工的编号,姓名和仓库编号。
Select ZG, ZGname, CKnoFrom ZHGWhere CKno = (select CKnoFrom ZHGWhere ZG=’ N1234’)(3)查询主管领导“李丽”所管辖部门的职工情况,并按出生日期降序排列。
Select ZG, ZGname, ZGsex, ZGbirth, ZGjob, ZGsal, CK.CKnoFrom ZGBM, CK, ZHGWhere ZGBM.BM=CK.BM and ZHG.CKno=CK.CKno and ZGleader=’李丽’Order by ZGbirth Desc(4)查询仓库位置中含有“奉贤”两个字的仓库信息。
Select CKno, CKname, CKleader, CKkind, CKloca, BMFrom CKWhere CKloca like’%奉贤%’(5)把部门编号为“b1”的所有职工的工资提高5%。
Update ZHGSet ZGsal= ZGsal(1+0.05)Where CKno=’b1’(6)删除工种为“钳工”的职工记录。
Delete from ZHGWhere ZGjob=’钳工’五、数据库设计(12分)某学生管理系统中需要如下信息:学生:学号、姓名、出生年月、班级号、宿舍号班级:班级号、专业名、系名、人数、入校年份系:系号、系名、系办公地点、人数社团:社团名、成立年份、地点、人数其中:一个系有若干个专业,每个专业每年只招一个班,每个班有若干个学生,一个系的学生住在同一宿舍区,每个学生可以参加若干个社团,每个社团有若干学生。
根据以上需求,设计数据库中的数据表。
每个表设计说明用如下表格形式描述。
字段名称类型定义属性限定索引关系(外键)略六、编程题(12分)数据库Book的表间关系如下:完成图书订购信息查询。
给定图书名称BookName,查询该图书的教师订书量TeaBookNum和学生订书量StuBookNum。
运行效果如图所示,选择图书名称时使用控件ComboBox。
写出相应的程序代码。
Imports System.Data.SqlClientPublic Class Form1Inherits System.Windows.Forms.FormPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim myconn As New SqlConnection("Initial Catalog=Book;Data Source=(Local); " _& "Integrated Security=SSPI;")Dim sql As String = "Select BookName From T_Bookinfo"Dim mycmd As New SqlCommand()mycmd.Connection = myconnmandText = sqlDim myadapter As New SqlDataAdapter(mycmd)Dim mydataset As New DataSet()myadapter.Fill(mydataset, "图书名称")ComboBox1.DataSource = mydataset.Tables("图书名称")ComboBox1.DisplayMember = mydataset.Tables("图书名称").Columns(0).ToString End SubPrivate Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChangedDim sql As String = "select sum(TeaBookNum) as 教师订书量,sum(StuBookNum)as 学生订书量 from T_BookOrder ,T_Bookinfo where T_BookOrder.BookCode=T_Bookinfo.BookCode and BookName='" &ComboBox1.Text.Trim & "'group by BookName "Dim myconn As New SqlConnection("Initial Catalog=Book; Data Source=(Local); " _& "Integrated Security=SSPI;")Dim mycmd As New SqlCommand(sql, myconn)Dim myread As SqlDataReadermyconn.Open()myread = mycmd.ExecuteReaderif myread.Read() thenTextBox2.Text = myread.Item(0) TextBox3.Text = myread.Item(1)End ifmyread.Close()myconn.Close() End SubEnd Class。