=============================================1第1章习题一、选择题1.下列四项中,不属于数据库系统优点的是()。A.实现数据共享B.确保数据的安全性与保密性C.控制数据冗余D.数据依赖程序2.数据库系统中,对用户使用的数据视图的描述称为()。A.概念模式B.内模式C.存储模式D.外模式3.下列四项中,不属于数据库特点的是()A.数据共享B.C.数据冗余很高D.数据独立性高4.数据库的三级模式之间存在着两级映像,使数据库系统具有较高的数据()。A.相容性B.独立性C.共享性D.一致性5.数据库系统的三级模式结构中,定义索引的组织方式属于()。A.概念模式B.外模式C.逻辑模式D.内模式6.E-R模型属于()。A.概念模型B.层次模型C.网状模型D.关系模型7.学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是()A.多对多B.一对一C.多对一D.8.反映现实世界中实体及实体间联系的信息模型是()A.关系模型B.层次模型C.网状模型D.E-R模型二、设计题1.某医院病房计算机管理中需要如下信息:科室:科名,科地址,科电话,医生姓名病房:病房号,床位号,所属科室名医生:姓名,职称,所属科室名,年龄,工作证号病人:病历号,姓名,性别,诊断,主管医生,病房号其中,一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。设计该计算机管理系统的E-R图,并注明属性和联系类型。2.假设某公司的业务规则如下:(1)公司下设几个部门,如技术部、财务部、市场部等。(2)每个部门承担多个工程项目,每个工程项目属于一个部门。(3)每个部门有多名职工,每一名职工只能属于一个部门。(4)一个部门可能参与多个工程项目,且每个工程项目有多名职工参与施工。根据职工在工程项目中完成的情况发放酬金。(5)工程项目有工程号、工程名两个属性;部门有部门号、部门名称两个属性;职工有职工号、姓名、性别属性。请根据上述规则设计E-R模型。3.某公司的业务规则如下:(1)每位职工可以参加几个不同的工程,且每个工程有多名职工参与;(2)每位职工有一个职位,且多名职工可能有相同的职位;(3)职位决定小时工资率,公司按职工在每一个工程中完成的工时,计算酬金;(4)职工的属性有职工号、姓名、职位和小时工资率;(5)工程的属性有工程号和工程名称。试根据上述业务规则设计E-R模型。答案:一、选择题DDCBDADD二、设计题1.2.3.1n===================================================2第3章习题1.学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教师,每名教师只教一门课,每门课可由多个教师教;每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。请用E-R图画出该学校的概念模型,注明联系类型,再将E-R模型转换为关系模型。2.工厂生产的每种产品由不同的零件组成,有的零件可用于不同的产品。这些零件由不同的原材料制成,不同的零件所用的材料可以相同。一个仓库存放多种产品,一种产品存放在一个仓库中。零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中(不跨仓库存放)。请用E-R图画出此关于产品,零件,材料,仓库的概念模型,注明联系类型,再将E-R模型转换为关系模型。3.一个图书馆管理系统中有如下信息:图书:书号、书名、数量、位置借书人:借书证号、姓名、单位出版社:出版社名、邮编、地址、电话、E-mail其中约定:任何人可以借多种书,任何一种书可以被多个人借,借书和还书时,要登记相应的借书日期和还书日期;一个出版社可以出版多种书籍,同一本书仅为一个出版社所出版,出版社名具有唯一性。根据以上情况,完成如下设计:(1)设计系统的E-R图;(2)将E-R图转换为关系模式;(3)指出转换后的每个关系模式的关系键。答案1.假定:主码用____表示外码用表示该E-R图可以转换为以下关系模式:学院(院名,地址,成立日期,教师人数,学生人数)系(系名,系址,系主任,院名)班级(班号,专业名,入学年份,学生数,班级导师,系名)学生(学号,姓名,性别,出生日期,联系电话,籍贯,班号)教研室(教研室名称,教师人数,电话,办公室编号,系名)教师(教工号,姓名,性别,出生日期,联系电话,教研室名称,课号)课程(课号,课名,学时,学分,开课学期,必修课否)选修(学号,课号,成绩)2.该E-R图可以转换为以下关系模式:产品(产品名,型号,重量,仓库号,数量c)零件(零件名,规格)材料(材料编号,名称,仓库号,数量a)仓库(仓库号,地点,面积,保管员)产品-零件(产品名,零件名,组装日期b)零件-材料(材料编号,零件名,生产日期a)零件-仓库(零件名,仓库号,数量b)3.1个M:N的联系必须成为一个独立的关系模式7个实体各自为一个关系模式,6个1:N的联系没有成为一个独立的关系模式,全部合并到多方实体3个M:N的联系必须成为一个独立的关系模式4个实体各自为一个关系模式,2个1:N的联系没有成为一个独立的关系模式,而是合并到多方实体,合并时包括联系得属性该E-R图可以转换为以下关系模式:图书(书号,书名,数量,位置,出版社名)借书人(借书证号,姓名,单位)出版社(出版社名,邮编,地址,电话,E-mail)借阅(借书证号,书号,借书日期,还书日期)===================================================3第5章习题1.试用T-SQL语言创建ZYGL(职员管理)数据库,要求数据文件的初始大小为1MB,最大大小为50MB,增长方式按10%增长;日志文件的初始大小为3MB,按1MB增长。2.试用T-SQL语言修改ZYGL数据库的主数据文件,将增长方式修改为按5MB增长。3.试用T-SQL语言修改ZYGL数据库,为ZYGL增加一个数据文件ZYGLBAK。4.试用T-SQL语言删除ZYGL数据库。--1.CREATEDATABASEzyglON(NAME='zygl_Data',FILENAME='E:\sql\zygl_Data.MDF',SIZE=1,MAXSIZE=30,FILEGROWTH=10%)LOGON(NAME='zygl_Log',FILENAME='E:\sql\zygl_Log.LDF',SIZE=3,FILEGROWTH=1)GO--2ATLERDATABASEZYGLMODIFYFILE(NAME=ZYGL_DATA,FILEGROWTH=5)--3ATLERDATABASEZYGLADDFILE(NAME=ZYGLBAK,FILENAME='E:\sql\zygl_Data1.NDF',SIZE=1,MAXSIZE=50,FILEGROWTH=10%)--4DROPDATABASEZYGL===================================================4第6章习题设计题现有一个数据库scd,库中包含以下系、学生、班级各表:student(学号,姓名,年龄,班号)class(班号,专业名,系名,入学年份)department(系号,系名)假设表中将有如下数据:student(2008101,张山,18,101;2008102,李斯,16,102;2008103,王玲,17,111;2008105,李飞,19,112)class(101,软件,计算机,2005;102,微电子,计算机,2006;111,无机化学,化学,2004;112,高分子化学,化学,2006)department(001,数学;002,计算机;003,化学)1.用SQL语言创建以上各数据表,在定义中要求为每一字段(列)选择合适的数据类型和长度,并设置适当的约束,即声明:(1)每个表的主键和所有可能的外键。(2)学生姓名不能为空。(3)系部系名不能为空,且唯一。(4)学生的年龄介于15到40岁之间,默认为18。2.试用SQL语言完成下列功能:(1)学校又新增加了两个系部:一个物理系,编号为006,一个经济系,编号为008。(2)将入学年份在2004年以前的班级删除。(3)学生张山转到111班,请更新相关的表。(4)为每个学生的年龄增加1岁,请更新相关的表。3.试用SQL语言修改表结构:由于年龄可以通过出生日期计算而来,对student表删除“年龄”字段,增加一个“出生日期”字段。(提示:必须先删除对年龄的检查约束,才能删除年龄列)答案--1.createdatabasescdgoUsescdGoCREATETABLEdepartment(系号char(3)PRIMARYKEY,系名char(20)notnullunique)GoCREATETABLEclass(班号char(3)PRIMARYKEY,专业名char(20),系名char(20)referencesdepartment(系名),入学年份int)GoCREATETABLEstudent(学号char(7)PRIMARYKEY,姓名char(8)NOTNULL,年龄intconstraintck_nlCHECK(年龄=15and年龄=40)constraintdf_nlDEFAULT18,--指定约束名ck_nl和df_nl,以便以后好删除班号char(3)referencesclass(班号))Insertintodepartmentvalues('001','数学');Insertintodepartmentvalues('002','计算机');Insertintodepartmentvalues('003','化学')Insertintoclassvalues('101','软件','计算机',2005);Insertintoclassvalues('102','微电子','计算机',2006);Insertintoclassvalues('111','无机化学','化学',2004);Insertintoclassvalues('112','高分子化学','化学',2006)Insertintostudentvalues('2008101','张山',18,'101');Insertintostudentvalues('2008102','李斯',16,'102');Insertintostudentvalues('2008103','王玲',17,'111')Insertintostudentvalues('2008104','李飞',19,'112')--2.--1)Insertintodepartmentvalues(‘006’,’物理系‘)Insertintodepartmentvalues(‘008’,’经济系‘)--2)Deleteclasswhere入学年份2004--3)Updatestudentset班号='111'where姓名='张山'--4)Updatestudentset年龄=年龄+1--3.--1)--要删除年龄列,应先删除该列上的约束,再删除Altertablestudentdropconstraintck_nl,df_nl--删除年龄列Altertablestudentdropcolumn年龄Altertablestudentadd出生日期datetime--2)AltertableclassAdd班长学号char(7)referencesstudent(学号)===================================================5第7章习题设计题以下各题在CJGL数据库中实现:1.查询“数据库原理”这门课程的学分和开课学期。2.查询身高在175cm以上的男生信息。3.查询所有姓“李”同学的基本情况。4.查询至少选修了两门课程的学生学号。5.将所有学生信息按身高逆序输出