您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库原理题目和答案
P36:8.分别举出实体型之间具有一对一,一对多,多对多联系的例子。9.学校有若干个系,每个系有若干班级和教研窒,每个教研窒有若干教员,其中有的教授和副教授每人各带若干研究生。每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。用E-R图画出该学校的概念模型。11.教师与课程之间的联系是多对多联系,试用层次模型表示之。14.试比较层次模型,网状模型和关系模型的优点与缺点。层次模型的优点主要有:(l)模型简单,对具有一对多层次关系的部门描述非常自然、直观,容易理解,这是层次数据库的突出优点;(2)用层次模型的应用系统性能好,特别是对于那些实体间联系是固定的且预先定义好的应用,采用层次模型来实现,其性能优于关系模型;(3)层次数据模型提供了良好的完整性支持。层次模型的缺点主要有:(l)现实世界中很多联系是非层次性的,如多对多联系、一个结点具有多个双亲等,层次模型不能自然地表示这类联系,只能通过引入冗余数据或引入虚拟结点来解决;(2)对插入和删除操作的限制比较多;(3)查询子女结点必须通过双亲结点。网状数据模型的优点主要有:(l)能够更为直接地描述现实世界,如一个结点可以有多个双亲;(2)具有良好的性能,存取效率较高。网状数据模型的缺点主要有:(l)结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握;(2)其DDL、DML语言复杂,用户不容易使用。由于记录之间联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径。因此,用户必须了解系统结构的细节,加重了编写应用程序的负担。17.数据库管理系统有哪些主要功能?l数据库定义功能;2数据存取功能;3数据库运行管理;4数据库的建立和维护功能。18.数据库管理系统有哪几部分组成?1数据定义语言及其翻译处理程序2数据操纵语言及其编译(或解释)程序3数据库运行控制程序4实用程序P642.解释下列概念,并说明它们之间的联系与区别:1码,候选码,外部码2笛卡尔,关系,元组,属性,域3关系模式,关系模型,关系数据库答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。1)码,候选码,外部码?码:唯一标识实体的属性组,码可能不止一个候选码:同类关系中能够唯一标识每个元组的属性组,在这些关系中,这个属性组上的值每行都不同外部码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关,外码不一定与相应的主码同名2)笛卡尔,关系,元组,属性,域?笛卡尔积:给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}所有域的所有取值的一个组合不能重复笛卡尔积可以表示为一个二维表关系:D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,用R(D1,D2,…,Dn)表示。这里R是关系的名字,n是关系的目或度。关系中的每个元素是关系中的元组,通常用t表示。当n=1时,称该关系为单元关系当n=2时,称该关系为二元关系关系是n个域的笛卡尔积的子集,也是一个二维表元组:关系中的每个元素是关系中的元组属性:实体具有的某一方面的特性,域:一组具有相同数据类型的值的集合关系是一张二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,给每列取一个名字,称为属性。n目关系必有n个属性。(3)关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。(l)关系:一个关系对应通常说的一张表(2)属性:表中的一列即为一个属性;(3)域:属性的取值范围;(4)元组:表中的一行即为一个元组;(5)主码:表中的某个属性组,它可以惟一确定一个元组;(6)分量:元组中的一个属性值;(7)关系模式:对关系的描述,一般表示为关系名(属性1,属性2,…,属性n)4.在关系模型的参照完整性规则中,为什么外部码属性的值也可以为空?什么情况下可以为空?答:实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。即属性F本身不是主属性,则可以取空值,否则不能取空值。7.(1)求供应工程J1零件的供应商号SNO;(2)求供应工程J零件P1的供应商号SNO;(3)求供应工程J1红色零件的供应商号SNO;(4)求没有使用天津供应商生产的红色零件的工程好JNO;(5)求至少用了S1供应商所供应的全部零件的工程号JNO.答:1)求供应工程J1零件的供应商号码SNO:πSno(σSno=‘J1’(SPJ))2)求供应工程J1零件P1的供应商号码SNO:πSno(σSno=‘J1’∧Pno=‘P1‘(SPJ))3)求供应工程J1零件为红色的供应商号码SNO:πSno(σPno=‘P1‘(σCOLOR=’红‘(P)∞SPJ))4)求没有使用天津供应商生产的红色零件的工程号JNO:πJno(SPJ)-πJNO(σcity=‘天津’∧Color=‘红‘(S∞SPJ∞P)5)求至少用了供应商S1所供应的全部零件的工程号JNO:πJno,Pno(SPJ)÷πPno(σSno=‘S1‘(SPJ))P1262.用SQL语言建立第2章第7题中的四个表。答:对于S表:S(SNO,SNAME,STATUS,CITY);建S表:CREATETABLES(SnoC(2)UNIQUE,SnameC(6),StatusC(2),CityC(4));对于P表:P(PNO,PNAME,COLOR,WEIGHT);建P表:CREATETABLEP(PnoC(2)UNIQUE,PnameC(6),COLORC(2),WEIGHTINT);对于J表:J(JNO,JNAME,CITY);建J表:CREATETABLEJ(JnoC(2)UNlQUE,JNAMEC(8),CITYC(4))对于sPJ表:sPJ(sNo,PNo,JNo,QTY);建SPJ表:SPJ(SNO,PNO,JNO,QTY)CREATETABLESPJ(SnoC(2),PnoC(2),JNOC(2),QTYINT))3.针对第2题创建的表,用SQL语言完成第2章第7题中的各项操作。(l)求供应工程Jl零件的供应商号码SNO;SELECTDISTSNOFROMSPJWHEREJNO=’J1’(2)求供应工程Jl零件Pl的供应商号码SNO;SELECTDISTSNOFROMSPJWHEREJNO='J1'ANDPNO='P1'(3)求供应工程Jl零件为红色的供应商号码SNO;SELECTSNOFROMSPJ,PWHEREJNO='J1'ANDSPJ.PNO=P.PNOANDCOLOR='红'(4)求没有使用天津供应商生产的红色零件的工程号JNO;SELECTDISTJNOFROMSPJWHEREJNONOTIN(SELEJNOFROMSPJ,P,SWHERES.CITY='天津'ANDCOLOR='红'ANDS.SNO=SPJ.SNOANDP.PNO=SPJ.PNO)。(5)求至少用了供应商Sl所供应的全部零件的工程号JNO;由于VFP不允许子查询嵌套太深,将查询分为两步A、查询S1供应商供应的零件号SELECTDISTPNOFROMSPJWHERESNO='S1'结果是(P1,P2)B、查询哪一个工程既使用P1零件又使用P2零件。SELECTJNOFROMSPJWHEREPNO='P1'ANDJNOIN(SELECTJNOFROMSPJWHEREPNO='P2')4.针对第2题创建的表,用SQL语言进行下列各项操作:(1)统计每种零件的供应总量;(2)求零件供应总量在1000种以上的供应商名字;(3)在S表中插入一条供应商信息:(S6,华天,深圳);(4)把全部红色零件的颜色改为粉红色;(5)将S1供应给J1的零件P1改为由P2供给;(6)删去全部蓝色零件及相应地SPJ记录。(1)求供应工程J1的零件的供应商的编号此题是对查询条件的考察,查询的总体上包括单表查询与多表查询,这就说明我们在查询时一定要弄清楚是在一个表中查询还是在多个表中查询。根据题目可知,SNO与J1在一个表中;单表查询:SelectSNO(控制查询结果的显示条件)distinct(删除重复行)SnofromSPJwhereJNO='J1';(2)求供应商工程J1零件P1的供应商号SNO;单表查询,将查询条件细化:selectSNOfromSPJwhereJNO='J1'andPNO='P1';(3)求供应工程J1红色零件的供应商号SNO多表查询:分清查询的主表,这里查询的范围任然是在SPJ中,不过问题的关键是在如何确定另一个限定条件PNO,这里用到多表查询,可以在P表中根据颜色找到PNO,就可以确定供应商号;selectSNOFromSPJWhereJNO='J1'andPNO=(selectPNOfromPwhereCOLOR='红');(4)求没有使用天津供应商生产的红色零件的工程号JNO;查询目标表还是在SPJ中:分析查询映射关系:JNO-SNO-selectJNOFromSPJWhereSNOnotin(selectSNOfromSwhereCITY='天津')andPNOnotin(selectPNOfromPwhereCOLOR='红');(5)求至少用了S1供应商所提供全部零件的工程号JNOSelectJNOFromSPJWherePNO='P1'AndJNOin(selectJNOfromSPJwherePNO='P2');(1)统计每种零件的供应总量这里要使用集函数:寻找每种零件的总量就是就是将所有编号一致的零件数相加;集函数的使用方法,例如下面的意思是在同一个PNO下QTY的总量,统计条件的设置显得尤为重要SelectdistinctPNO,count(QTY)FromSPJGroupbyPNO;(2)求零件供应总量在1000种以上的供应商的名字多表查询:在SPJ中找到哦供应商的编号,在到s表中寻找供应商的名字SelectSNAMEFromSWhereSNO=(selectSNOfromSPJwherecount(QTY)1000);(3)在s表中插入一条供应商信息:(S6,华天,深圳);插入语句:InsertintoSValues('s6','华天','深圳');(4)把全部红色零件的颜色改为粉红色;更新操作,必须先找出这些元组,以便进行操作,这个操作是修改多个元组数据的操作要利用带有子查询的修改语句:UpdateP表名Setcolor='粉红色'WhereCOLOR=(selectCOLORfromPwherecolor='红色');/寻找符合条件的元组(5)将S1供应给J1的零件P1改为P2供应;首先要找到这条记录UpdateSPJSetPNO='P2'WhereSNO=S1andPNO=P1andJNO=J1;(6)删除全部蓝色零件及相应的SPJ记录;DeleteFromSPJWherePNO=(selectPNOfromPwherecolor='蓝色');DeleteFromPWherecolor='蓝色';6.在上面各表的基础上创建下列试图VSJ,它记录了给“三建”工程项目的供应零件的情况,包括供应商号,零件号和零件数量;并对该试图查询S1供应商的供货情况。CREATEVIEWVSPASSELECTSNO,PNO,QTYFROMSPJ,JWHERESPJ.JNO=J.JNOANDJ.JNAME='三建'针对该视图VSP完成下列查询:(
本文标题:数据库原理题目和答案
链接地址:https://www.777doc.com/doc-5665651 .html