数据库题库及答案_第1页
数据库题库及答案_第2页
数据库题库及答案_第3页
数据库题库及答案_第4页
数据库题库及答案_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库题库及答案一、选择题(每题2分,共40分)1.下列哪项不是关系数据库的基本特点?A.数据结构化B.数据共享C.数据独立性D.数据冗余度低2.在关系数据库中,主键的作用是?A.唯一标识表中的每一行B.加速数据检索C.确保数据完整性D.以上都是3.下列哪个SQL子句用于对结果集进行排序?A.WHEREB.GROUPBYC.ORDERBYD.HAVING4.在数据库设计中,范式的作用是?A.提高查询效率B.减少数据冗余C.增强数据安全性D.简化数据库结构5.下列哪种数据库模型使用树形结构来组织数据?A.关系模型B.网状模型C.层次模型D.面向对象模型6.在SQL中,用于更新数据的命令是?A.INSERTB.UPDATEC.DELETED.MODIFY7.数据库的三个模式结构是指?A.外模式、概念模式和内模式B.输入模式、处理模式和输出模式C.用户模式、管理员模式和系统模式D.逻辑模式、物理模式和存储模式8.下列哪种锁机制可以防止"读脏数据"?A.共享锁B.排他锁C.意向锁D.两阶段锁9.在数据库系统中,事务的ACID特性中,"I"代表的是?A.Isolation(隔离性)B.Integrity(完整性)C.Independence(独立性)D.Invariance(不变性)10.下列哪种数据库操作不能回滚?A.INSERTB.UPDATEC.DELETED.DDL操作11.在SQL中,用于连接两个表的默认连接类型是?A.内连接B.左外连接C.右外连接D.全外连接12.下列哪个不是NoSQL数据库的主要类型?A.键值存储B.文档存储C.列族存储D.图存储E.关系存储13.在数据库索引中,哪种索引结构适合范围查询?A.哈希索引B.B+树索引C.位图索引D.全文索引14.数据库的二级存储是指?A.CPU缓存B.内存C.硬盘D.光盘15.下列哪种隔离级别可以防止"不可重复读"?A.读未提交B.读已提交C.可重复读D.可串行化16.在关系代数中,选择操作符σ表示的是?A.选择满足条件的行B.选择满足条件的列C.连接两个关系D.对关系进行分组17.下列哪个不是数据库管理系统的基本功能?A.数据定义B.数据操纵C.数据控制D.数据分析18.在SQL中,用于创建数据库对象的命令是?A.CREATEB.ALTERC.DROPD.MODIFY19.数据库的物理独立性是指?A.用户与DBMS的独立性B.应用程序与DBMS的独立性C.用户与数据的独立性D.应用程序与数据的物理存储的独立性20.下列哪种技术用于提高数据库性能?A.索引B.视图C.存储过程D.以上都是二、填空题(每空1分,共20分)1.在关系数据库中,一张表由多个______和多个______组成。2.SQL语言包括数据定义语言(DDL)、数据操纵语言(DML)和______。3.在数据库设计中,第三范式(3NF)要求关系模式中的每一个非主属性都不传递依赖于______。4.数据库系统的主要组成部分包括硬件、软件、数据和______。5.在SQL中,用于删除表中所有数据的命令是______,但保留表结构。6.数据库的并发控制是为了保证______,同时允许多个用户同时访问数据库。7.在关系代数中,自然连接与等值连接的区别是自然连接会自动去除______。8.数据库恢复技术主要包括日志文件和______两种方法。9.在数据库中,触发器是一种特殊的______,它会在特定事件发生时自动执行。10.在NoSQL数据库中,MongoDB属于______类型数据库。11.数据库的完整性约束包括实体完整性、参照完整性和______。12.在SQL中,用于限制查询结果返回的行数的子句是______。13.数据库的查询优化器的主要作用是选择最优的______。14.在分布式数据库中,数据分片的主要方法有水平分片、垂直分片和______。15.在数据库中,视图是一个虚表,它是基于______生成的。16.在SQL中,用于对结果集进行分组的子句是______。17.数据库的锁机制主要有共享锁和______两种基本类型。18.在数据库设计中,E-R图中的菱形表示______。19.在关系数据库中,外键的作用是维护______。20.在SQL中,用于计算总数的聚合函数是______。三、判断题(每题1分,共10分)1.数据库的物理独立性是指当数据的物理存储结构改变时,应用程序不必修改。2.在关系模型中,一个关系可以包含完全相同的元组。3.SQL中的JOIN操作只能用于两个表之间的连接。4.在数据库系统中,事务的原子性是指事务中的操作要么全部执行,要么都不执行。5.视图一旦创建,就会在数据库中占用物理存储空间。6.在关系数据库中,一个表可以有多个主键。7.数据库的索引越多,查询性能一定越好。8.在SQL中,DELETE语句可以删除表结构。9.在数据库设计中,第二范式要求非主属性完全依赖于主键。10.NoSQL数据库完全取代了关系数据库,成为主流数据库技术。四、简答题(每题5分,共20分)1.简述关系数据库的三大范式,并说明每个范式的主要目的。2.解释数据库事务的ACID特性,并说明每个特性的含义。3.简述数据库索引的工作原理及其优缺点。4.说明数据库并发控制中可能发生的三种主要问题,并解释如何避免。五、SQL编程题(每题10分,共30分)1.假设有以下两个表:学生表(Students):-student_id(学号,主键)-student_name(姓名)-gender(性别)-age(年龄)-department(院系)课程表(Courses):-course_id(课程ID,主键)-course_name(课程名)-credit(学分)选课表(Enrollments):-enrollment_id(选课ID,主键)-student_id(学号,外键引用Students.student_id)-course_id(课程ID,外键引用Courses.course_id)-score(成绩)-semester(学期)请编写SQL语句完成以下查询:(1)查询计算机学院所有学生的学号、姓名和年龄。(2)查询每门课程的平均成绩,并按平均成绩降序排列。(3)查询选课门数超过3门的学生学号和姓名。2.假设有以下表结构:员工表(Employees):-employee_id(员工ID,主键)-employee_name(员工姓名)-department_id(部门ID,外键)-salary(薪资)-hire_date(入职日期)部门表(Departments):-department_id(部门ID,主键)-department_name(部门名称)-manager_id(经理ID,外键引用Employees.employee_id)请编写SQL语句完成以下操作:(1)创建一个视图,显示每个部门的名称和该部门的平均薪资。(2)编写一个存储过程,为指定部门的所有员工薪资增加10%。(3)使用触发器实现:当删除一个部门记录时,自动将该部门的所有员工记录的department_id设为NULL。3.假设有以下表结构:订单表(Orders):-order_id(订单ID,主键)-customer_id(客户ID)-order_date(订单日期)-total_amount(总金额)订单详情表(Order_Details):-detail_id(详情ID,主键)-order_id(订单ID,外键引用Orders.order_id)-product_id(产品ID)-quantity(数量)-unit_price(单价)产品表(Products):-product_id(产品ID,主键)-product_name(产品名称)-category(类别)-price(价格)请编写SQL语句完成以下任务:(1)查询每个类别的产品总销售额,并按销售额降序排列。(2)查询2023年的订单中,订单金额大于1000的订单详情,包括客户ID、订单日期、产品名称和数量。(3)使用窗口函数查询每个产品在所有类别中的销售排名。六、设计题(每题10分,共20分)1.请为一个在线书店设计数据库模式,包括以下实体及其关系:-客户(Customer):包含客户ID、姓名、地址、电话、邮箱等属性-书(Book):包含书ID、书名、作者、出版社、出版日期、价格、库存数量等属性-订单(Order):包含订单ID、客户ID、下单日期、订单状态等属性-订单详情(Order_Detail):包含详情ID、订单ID、书ID、数量等属性-作者(Author):包含作者ID、姓名、国籍、出生日期等属性-出版社(Publisher):包含出版社ID、名称、地址、联系电话等属性要求:(1)绘制E-R图(2)将E-R图转换为关系模式,并注明主键和外键(3)说明可能需要哪些索引来提高查询性能(4)说明可能需要哪些视图来简化常用查询2.请为一个学校的学生管理系统设计数据库模式,包括以下需求:-学生信息管理:记录学生的基本信息,如学号、姓名、性别、出生日期、专业、班级等-课程信息管理:记录课程的基本信息,如课程号、课程名、学分、学时、授课教师等-成绩管理:记录学生的课程成绩,包括平时成绩、考试成绩和总评成绩-教师信息管理:记录教师的基本信息,如教师号、姓名、性别、职称、所属院系等-选课管理:记录学生选课情况,包括学生选课的课程号、选课时间等要求:(1)设计合理的表结构,包括字段定义和约束(2)说明表之间的关系,并实现参照完整性(3)设计适当的索引来提高查询效率(4)说明如何设计视图来简化常用查询,如查询某学生的所有课程成绩答案:一、选择题(每题2分,共40分)1.答案:B解释:数据结构化是关系数据库的基本特点,数据独立性也是关系数据库的基本特点,数据冗余度低是关系数据库追求的目标。数据共享是数据库系统的基本特征,不是关系数据库特有的基本特点。2.答案:D解释:主键是关系数据库表中用于唯一标识每一行的属性或属性组。它既能够唯一标识表中的每一行,也能通过索引加速数据检索,还能确保数据的实体完整性。3.答案:C解释:在SQL中,ORDERBY子句用于对查询结果集进行排序,可以指定一个或多个列,并指定升序(ASC)或降序(DESC)排列。WHERE子句用于过滤行,GROUPBY子句用于分组,HAVING子句用于过滤分组。4.答案:B解释:范式是数据库设计中用于减少数据冗余的指导原则。通过将数据分解到不同的表中,范式可以减少数据冗余,提高数据一致性。虽然良好的设计也可能提高查询效率和简化数据库结构,但范式的主要目的是减少数据冗余。5.答案:C解释:层次模型是数据库早期的一种数据模型,使用树形结构来组织数据,其中每个节点可以有多个子节点,但只有一个父节点。关系模型使用表格结构,网状模型使用复杂的网状结构,面向对象模型使用对象和类来组织数据。6.答案:B解释:在SQL中,UPDATE命令用于更新表中的数据。INSERT用于插入新数据,DELETE用于删除数据,MODIFY不是标准的SQL命令。7.答案:A解释:数据库的三级模式结构包括外模式(用户视图)、概念模式(全局逻辑结构)和内模式(物理存储结构)。这种结构实现了数据独立性,使用户能够从物理细节中抽象出来。8.答案:B解释:排他锁(ExclusiveLock,也称为X锁)是一种独占锁,当一个事务获得某数据的排他锁后,其他事务不能对该数据进行任何操作,从而可以防止"读脏数据"。共享锁(S锁)允许多个事务同时读取数据,但不能修改。9.答案:A解释:事务的ACID特性包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。其中,"I"代表的是隔离性(Isolation),确保并发执行的事务是隔离的,互不干扰。10.答案:D解释:在大多数数据库系统中,DDL(数据定义语言)操作如CREATE、ALTER、DROP等通常不能回滚,因为这些操作会改变数据库的结构。而DML(数据操纵语言)操作如INSERT、UPDATE、DELETE通常是可回滚的。11.答案:A解释:在SQL中,JOIN操作如果没有明确指定类型,默认使用内连接(INNERJOIN),它只返回两个表中匹配的行。左外连接(LEFTJOIN)返回左表的所有行和右表匹配的行,右外连接(RIGHTJOIN)返回右表的所有行和左表匹配的行,全外连接(FULLOUTERJOIN)返回两个表的所有行。12.答案:E解释:NoSQL数据库的主要类型包括键值存储(如Redis)、文档存储(如MongoDB)、列族存储(如HBase)和图存储(如Neo4j)。关系存储是关系数据库的特点,不属于NoSQL数据库的类型。13.答案:B解释:B+树索引是一种多路平衡树结构,特别适合范围查询,因为它保持了数据的有序性。哈希索引适合等值查询但不适合范围查询,位图索引适合低基数的列,全文索引用于文本搜索。14.答案:C解释:数据库的存储层次通常包括:CPU缓存(最快但容量小)、内存(速度快但容量有限且断电后数据丢失)、硬盘(容量大但速度较慢)、光盘等。二级存储通常指硬盘等永久性存储设备。15.答案:C解释:隔离级别从低到高依次为读未提交、读已提交、可重复读和可串行化。可重复读隔离级别可以防止"不可重复读"问题,即一个事务内多次读取同一数据返回的结果是一致的。16.答案:A解释:在关系代数中,选择操作符σ用于从关系中选取满足给定条件的行,投影操作符π用于选取指定的列,连接操作符用于连接两个关系,分组操作符用于对关系进行分组。17.答案:D解释:数据库管理系统的基本功能包括数据定义(DDL)、数据操纵(DML)、数据控制(DCL)和数据库管理。数据分析通常是应用程序或专门的分析工具的功能,不是DBMS的基本功能。18.答案:A解释:在SQL中,CREATE命令用于创建数据库对象如表、视图、索引等。ALTER用于修改对象结构,DROP用于删除对象,MODIFY不是标准的SQL命令。19.答案:D解释:数据库的物理独立性是指应用程序与数据的物理存储结构相互独立,当数据的物理存储方式改变时,应用程序不需要修改。逻辑独立性是指应用程序与数据的逻辑结构相互独立。20.答案:D解释:索引、视图和存储过程都是提高数据库性能的技术。索引可以加速数据检索,视图可以简化复杂查询,存储过程可以减少网络流量并提高执行效率。二、填空题(每空1分,共20分)1.行,列解释:在关系数据库中,一张表由多个行(记录)和多个列(字段)组成。行代表实体的一条记录,列代表实体的一个属性。2.数据控制语言(DCL)解释:SQL语言可以分为三类:数据定义语言(DDL)用于定义数据库结构,数据操纵语言(DML)用于操纵数据,数据控制语言(DCL)用于控制数据访问权限。3.主键解释:第三范式(3NF)要求关系模式中的每一个非主属性都不传递依赖于主键,即非主属性之间不能存在传递依赖关系。4.人员解释:数据库系统的主要组成部分包括硬件(计算机设备)、软件(DBMS和应用程序)、数据(数据库本身)和人员(数据库管理员、开发者和用户)。5.DELETE解释:在SQL中,DELETEFROMtable_name;语句可以删除表中的所有数据,但保留表结构。而DROPTABLEtable_name;会删除整个表结构及数据。6.数据一致性解释:并发控制是为了保证在多个用户同时访问数据库时,数据的一致性不会受到破坏,避免出现数据不一致的情况。7.重复的属性解释:自然连接(NaturalJoin)是等值连接的一种特殊情况,它会自动去除两个关系中重复的属性,而等值连接(EquiJoin)需要明确指定连接条件,不会去除重复属性。8.定期备份解释:数据库恢复技术主要包括日志文件记录(记录所有操作以便重做或撤销)和定期备份(在发生故障时恢复数据)两种方法。9.存储过程解释:触发器是一种特殊的存储过程,它会在特定事件(如INSERT、UPDATE、DELETE)发生时自动执行,用于维护数据的完整性或实现复杂的业务逻辑。10.文档存储解释:MongoDB是一种典型的NoSQL文档存储数据库,它将数据存储为灵活的、类似JSON的文档中,而不是固定的表格结构。11.用户定义完整性解释:数据库的完整性约束包括实体完整性(主键约束)、参照完整性(外键约束)和用户定义完整性(如CHECK约束、非空约束等)。12.LIMIT解释:在SQL中,LIMIT子句(在MySQL中)或FETCHFIRST子句(在SQL标准中)用于限制查询结果返回的行数,实现分页功能。13.执行计划解释:数据库查询优化器的主要作用是分析查询语句,并选择最优的执行计划(即如何访问数据、连接表等)来执行查询,以提高查询效率。14.混合分片解释:在分布式数据库中,数据分片的主要方法有水平分片(按行分割)、垂直分片(按列分割)和混合分片(结合水平和垂直分片)。15.基本表解释:视图是一个虚表,它是基于一个或多个基本表(或视图)生成的,不存储实际数据,只是定义了如何从基本表中检索数据。16.GROUPBY解释:在SQL中,GROUPBY子句用于将结果集按照一个或多个列进行分组,通常与聚合函数(如COUNT、SUM、AVG等)一起使用。17.排他锁解释:数据库的锁机制主要有共享锁(允许多个事务同时读取数据)和排他锁(独占锁,只允许一个事务访问数据)两种基本类型。18.联系解释:在E-R图中,矩形表示实体,菱形表示联系,椭圆表示属性,实体之间的联系用菱形表示。19.参照完整性解释:外键是用于建立两个表之间联系的列,它的值必须引用另一个表的主键值,从而维护参照完整性,确保数据的一致性。20.COUNT解释:在SQL中,COUNT是常用的聚合函数之一,用于计算满足条件的行数或记录数。其他常用聚合函数包括SUM(求和)、AVG(平均值)、MAX(最大值)和MIN(最小值)。三、判断题(每题1分,共10分)1.正确解释:数据库的物理独立性是指当数据的物理存储结构改变时,应用程序不需要修改。这是因为数据库系统提供了三级模式结构,外模式和概念模式屏蔽了物理存储细节。2.错误解释:在关系模型中,一个关系不能包含完全相同的元组,因为关系模型要求元组的唯一性,通常通过主键来保证。如果允许重复元组,就不是一个严格的关系。3.错误解释:SQL中的JOIN操作不仅可以用于两个表之间的连接,也可以用于多个表之间的连接,甚至可以用于表与自身的连接(自连接)。4.正确解释:事务的原子性是指事务是一个不可分割的工作单元,事务中的所有操作要么全部成功执行,要么全部不执行,不会出现部分执行的情况。5.错误解释:视图是一个虚表,它不存储实际数据,只是定义了如何从基本表中检索数据。因此,视图不会占用物理存储空间,只有在查询视图时才会动态生成结果。6.错误解释:在关系数据库中,一个表只能有一个主键,但主键可以由多个列组成(复合主键)。多个主键会导致数据冗余和完整性问题。7.错误解释:虽然索引可以提高查询性能,但索引过多会增加写操作的开销(因为每次写操作都需要更新索引)和占用额外的存储空间。因此,索引数量需要根据查询需求合理设置,不是越多越好。8.错误解释:在SQL中,DELETE语句只能删除表中的数据,不能删除表结构。要删除表结构需要使用DROPTABLE语句。9.正确解释:第二范式(2NF)要求非主属性完全依赖于主键,而不是部分依赖于主键。如果主键是复合的,则非主属性不能只依赖于主键的一部分。10.错误解释:NoSQL数据库和关系数据库各有其适用场景,它们不是相互替代的关系。关系数据库在需要强一致性、复杂查询和事务支持的场景中仍然占主导地位,而NoSQL数据库在处理大规模数据、高并发和灵活数据结构的场景中更有优势。四、简答题(每题5分,共20分)1.答案:第一范式(1NF):要求数据库表的每一列都是不可再分的基本数据项,即表中不能有重复列或重复行。主要目的是消除表中重复的列,确保数据的原子性。第二范式(2NF):在满足1NF的基础上,要求非主键属性完全依赖于主键,而不是部分依赖于主键。如果主键是复合的,则非主属性不能只依赖于主键的一部分。主要目的是消除部分依赖,减少数据冗余。第三范式(3NF):在满足2NF的基础上,要求非主键属性之间不存在传递依赖关系,即非主属性不能依赖于其他非主属性。主要目的是消除传递依赖,进一步减少数据冗余。2.答案:事务的ACID特性包括:原子性(Atomicity):事务是一个不可分割的工作单元,事务中的所有操作要么全部成功执行,要么全部不执行,不会出现部分执行的情况。如果事务在执行过程中发生错误,系统会自动回滚到事务开始前的状态。一致性(Consistency):事务的执行必须使数据库从一个一致性状态转变为另一个一致性状态,不能破坏数据库的完整性约束。事务开始前和结束后,数据库都必须处于一致的状态。隔离性(Isolation):并发执行的事务是相互隔离的,一个事务的执行不应该影响其他事务的执行。即使多个事务并发执行,每个事务都感觉不到其他事务的存在。持久性(Durability):一旦事务提交,它对数据库的改变就是永久的,即使系统发生故障,也不会丢失这些改变。3.答案:数据库索引的工作原理:索引是一种数据结构,通常采用B+树或哈希表等结构,存储了表中某个列的值与该值在物理存储位置的映射关系。当查询条件包含索引列时,数据库可以利用索引快速定位到数据位置,避免全表扫描,从而提高查询效率。索引的优点:-加速数据检索,特别是对于大型表-保证数据的唯一性(通过唯一索引)-加速表之间的连接操作索引的缺点:-占用额外的存储空间-降低写操作(INSERT、UPDATE、DELETE)的速度,因为每次写操作都需要更新索引-增加数据库维护的复杂性4.答案:数据库并发控制中可能发生的三种主要问题:丢失更新(LostUpdate):两个事务同时读取同一数据,然后分别修改并提交,后提交的事务会覆盖前一个事务的修改,导致第一个事务的更新丢失。读脏数据(DirtyRead):一个事务读取了另一个未提交事务修改的数据,如果该事务随后回滚,那么第一个事务读取的就是无效的脏数据。不可重复读(Non-repeatableRead):一个事务两次读取同一数据,但在这两次读取之间,另一个事务修改了该数据并提交,导致第一个事务两次读取的结果不同。避免这些问题的方法:-使用适当的隔离级别:读未提交、读已提交、可重复读和可串行化-实现锁机制:使用共享锁和排他锁控制并发访问-使用时间戳或乐观并发控制技术-实现多版本并发控制(MVCC)技术五、SQL编程题(每题10分,共30分)1.答案:(1)查询计算机学院所有学生的学号、姓名和年龄:```sqlSELECTstudent_id,student_name,ageFROMStudentsWHEREdepartment='计算机学院';```(2)查询每门课程的平均成绩,并按平均成绩降序排列:```sqlSELECTc.course_name,AVG(e.score)ASaverage_scoreFROMCoursescJOINEnrollmentseONc.course_id=e.course_idGROUPBYc.course_nameORDERBYaverage_scoreDESC;```(3)查询选课门数超过3门的学生学号和姓名:```sqlSELECTs.student_id,s.student_nameFROMStudentssJOIN(SELECTstudent_id,COUNT()AScourse_countFROMEnrollmentsGROUPBYstudent_idHAVINGCOUNT()>3)eONs.student_id=e.student_id;```2.答案:(1)创建一个视图,显示每个部门的名称和该部门的平均薪资:```sqlCREATEVIEWDepartmentAvgSalaryASSELECTd.department_name,AVG(e.salary)ASaverage_salaryFROMDepartmentsdJOINEmployeeseONd.department_id=e.department_idGROUPBYd.department_name;```(2)编写一个存储过程,为指定部门的所有员工薪资增加10%:```sqlCREATEPROCEDUREIncreaseSalaryByDepartment@department_idINTASBEGINUPDATEEmployeesSETsalary=salary1.10WHEREdepartment_id=@department_id;END;--调用存储过程EXECIncreaseSalaryByDepartment@department_id=1;```(3)使用触发器实现:当删除一个部门记录时,自动将该部门的所有员工记录的department_id设为NULL:```sqlCREATETRIGGERtr_DeleteDepartmentONDepartmentsFORDELETEASBEGINUPDATEEmployeesSETdepartment_id=NULLWHEREdepartment_idIN(SELECTdepartment_idFROMdeleted);END;```3.答案:(1)查询每个类别的产品总销售额,并按销售额降序排列:```sqlSELECTp.category,SUM(od.quantityod.unit_price)AStotal_salesFROMProductspJOINOrder_DetailsodONduct_id=duct_idJOINOrdersoONod.order_id=o.order_idGROUPBYp.categoryORDERBYtotal_salesDESC;```(2)查询2023年的订单中,订单金额大于1000的订单详情,包括客户ID、订单日期、产品名称和数量:```sqlSELECTo.customer_id,o.order_date,duct_name,od.quantityFROMOrdersoJOINOrder_DetailsodONo.order_id=od.order_idJOINProductspONduct_id=duct_idWHEREo.order_date>='2023-01-01'ANDo.order_date<'2024-01-01'ANDo.total_amount>1000;```(3)使用窗口函数查询每个产品在所有类别中的销售排名:```sqlSELECTduct_id,duct_name,p.category,SUM(od.quantityod.unit_price)AStotal_sales,RANK()OVER(PARTITIONBYp.categoryORDERBYSUM(od.quantityod.unit_price)DESC)ASsales_rankFROMProductspJOINOrder_DetailsodONduct_id=duct_idGROUPBYduct_id,duct_name,p.categoryORDERBYp.category,sales_rank;```六、设计题(每题10分,共20分)1.答案:(1)E-R图:-实体:客户(Customer)、书(Book)、订单(Order)、订单详情(Order_Detail)、作者(Author)、出版社(Publisher)-联系:客户与订单:一对多(一个客户可以有多个订单)订单与订单详情:一对多(一个订单可以包含多个订单详情)书与订单详情:一对多(一本书可以在多个订单详情中出现)书与作者:多对多(一本书可以有多个作者,一个作者可以写多本书)书与出版社:多对一(一本书属于一个出版社,一个出版社可以出版多本书)(2)关系模式:-客户表(Customer):customer_id(主键),name,address,phone,email-书表(Book):book_id(主键),title,publisher_id(外键),publish_date,price,stock_quantity-订单表(Order):order_id(主键),customer_id(外键),order_date,status-订单详情表(Order_Detail):detail_id(主键),order_id(外键),book_id(外键),quantity-作者表(Author):author_id(主键),name,nationality,birth_date-出版社表(Publisher):publisher_id(主键),name,address,contact_phone-书-作者关联表(Book_Author):book_id(外键),author_id(外键),primarykey(book_id,author_id)(3)索引设计:-客户表:在customer_id上创建主键索引,在name上创建普通索引-书表:在book_id上创建主键索引,在title上创建普通索引,在publisher_id上创建外键索引-订单表:在order_id上创建主键索引,在customer_id上创建外键索引-订单详情表:在detail_id上创建主键索引,在order_id和book_id上创建复合外键索引-作者表:在author_id上创建主键索引,在name上创建普通索引-出版社表:在publisher_id上创建主键索引,在name上创建普通索引-书-作者关联表:在book_id和author_id上创建复合主键索引(4)视图设计:-书籍详细信息视图:包含书名、作者、出版社信息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论