数据库管理作业.docx
《数据库管理作业.docx》由会员分享,可在线阅读,更多相关《数据库管理作业.docx(4页珍藏版)》请在冰点文库上搜索。
第一次作业
一、名词解释
1.视图
答:
视图是从一个或几个基本表导出的表。
它本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放视图对应的数据。
这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。
视图在概念上与基本表等同,用户可以在视图上再定义视图。
2.并发操作
答:
并发操作是指在同一时间可能有多个用户对同一数据进行读写操作。
3.内模式
答:
内模式是数据库在物理存储方面的描述,定义所有的内部记录类型、索引和文件的组成方式,以及数据控制方面的细节。
4.事务
答:
数据库系统的一个操作系列,这些操作或者都做,或者都不做,是一个不可分割的工作单位。
5.数据备份
答:
数据备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。
二、简答题
1.与文件管理数据相比,数据库管理系统有哪些优点?
答:
1.数据共享性 允许不同用户使用同一个数据库,提高了信息利用率。
2.数据的一体化和结构化 数据文件之间互相关联,单个数据文件又能自成一个表。
3.数据独立性好 数据与程序相互独立,改变数据存储结构,对程序没有影响。
4.冗余度低且可控制
5.对数据可进行集中统一的控制。
2.试述数据库设计的基本步骤?
答:
(1)需求分析阶段:
需求收集和分析,得到数据字典和数据流图。
(2)概念结构设计阶段:
对用户需求综合、归纳与抽象,形成概念模型,用E-R图表示。
(3)逻辑结构设计阶段:
将概念结构转换为某个DBMS所支持的数据模型。
(4)数据库物理设计阶段:
为逻辑数据模型选取一个最适合应用环境的物理结构。
(5)数据库实施阶段:
建立数据库,编制与调试应用程序,组织数据入库,程序试运行。
(6)数据库运行和维护阶段:
对数据库系统进行评价、调整与修改。
3.请给出关系模式规范化的步骤?
答:
1)对1NF关系进行投影,消除原关系中非主属性对码的函数依赖,将1NF关系转换为若干个2NF关系。
2)对2NF关系进行投影,消除原关系中非主属性对码的传递函数依赖,从而产生一组3NF关系。
3)对3NF关系进行投影,消除原关系中主属性对码的部分函数依赖和传递函数依赖(也就是说,使决定属性都成为投影的侯选码),得到一组BCNF关系。
以上三步也可以合并为一步:
对原关系进行投影,消除决定属性不是侯选码的任何函数依赖。
4)对BCNF关系进行投影,消除原关系中非平凡且非函数依赖的多值依赖,即可得到一组4NF关系。
5)对4NF关系进行投影,消除原关系中不是由侯选码所蕴含的连接依赖,即可得到一组5NF关系。
4.数据完整性约束有哪几种?
SQL如何实现数据完整性?
答:
数据完整性约束可分为六类:
静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。
SQL要实现数据完整性,1.首先要明白数据的完整性有哪些:
域完整性/列完整性,实体完整性/行完整性,参照完整性/引用完整性;2.怎样实现:
域完整性:
(1)定义列时,使用check约束;
(2)定义规则;实体完整性:
(3)利用primarykey;参照完整性:
(4)利用foreignkeyreferences。
5.SQL Server2000的安全认证过程?
答:
SQLServer2000支持两种认证模式,一是Windows认证,二是混合模式。
1)Windows认证,这是SQLServer2000的默认身份验证模式。
Windows验证的方式是利用windows的验证机制,由于进入windows的用户有些拥有很高的权限,所以通常也能进入SQLServer2000 服务器。
为避免重复验证,SQLServer2000认可windows的安全机制。
只要windows的账号在SQLServer2000中有对应的账号就能顺利地直接进入SQLServer2000。
2)混合认证模式,这是将windows认证和SQLServer2000认证连接在一起。
使用SQLServer2000认证时,系统管理员创建一个登陆账号口令,并将它们存储在SQLServer2000中,当用户连接上SQLServer2000时,必须提供SQLServer2000登陆账号和口令。
用户也可以通过windows账号进行连接,这正如windows认证一样。
对于登陆时提供了SQLServer2000账号者,系统将使用SQLServer2000身份验证对其进行认证;对于没有提供SQLServer2000账号或请求windows身份验证的登陆者,则使用windows身份验证对其认证。
即先查找SQLServer2000登陆账户,若找不到则去查找windows登陆账户。
第二次作业
用SQL语言实现下列1—4小题:
现有关系数据库如下:
学生(学号,姓名,性别,专业,奖学金)
课程(课程号,名称,学分)
学习(学号,课程号,分数)
1.检索获得奖学金的所有学生所学课程的信息,包括学号、姓名、课程名和分数;
2.检索学生“黎明”所学课程中有不及格课程的课程号、名称和分数;
3.检索获得奖学金、同时又有不及格成绩的学生信息,包括学号、姓名和专业;(提示:
用子查询实现)
4.检索没有任何一门课程成绩超过90分的所有学生的信息,包括学号、姓名和专业。
(提示:
用子查询实现)
答:
1.selecta.学号,a.姓名,a.奖学金,b.课程名,c.分数from学号asainnerjoin学习ascona.学号=c.学号leftjoin
课程onc.课程号=b.课程号
2.selecta.姓名,b.课程号,b.名称,c.分数from学生ainnerjoin学生ascona.学号=c.学号leftjoin
课程bonc.课程号=b.课程号wherea.姓名='黎明'andc.分数<60
3.select 姓名,专业,奖学金from学生awherea.学号in(select学号from学习bwhere分数<60)
4.select 学号,姓名,专业wherea.学号in(select学号from学习bwhere分数<90)
5.设有关系数据库:
职工关系EMPLOYEE(职工号,职工名,街道,城市)
工作关系WORKS(职工号,公司号,工资)
公司关系COMPANY(公司号,公司名,城市)
假设职工可在多个公司兼职,请用SQL语言写出至少在公司号为‘C2’和‘C5’公司兼职的职工号。
答:
∏1σ2=′c2′^5=′c5′(WORKS×WORKS)
6.假设学校有多名学生,财务处每年要收一次学费。
为财务处收学费工作设计一个数据库,包括两个关系:
学生(学号,姓名,专业,入学日期)
收费(学年,学号,学费,书费,总金额)
假设规定属性的类型:
学费、书费、总金额为数值型数据;学号、姓名、学年、专业为字符型数据;入学日期为日期型数据。
列的宽度自定义。
试用SQL语句定义上述表的结构。
(定义中应包括主码子句和外码子句)
答:
CREATETABLE学生
(学号CHAR(8),
姓名CHAR(8),
专业CHAR(13),
入学日期DATE,
PRIMARYKEY(学号));
CREATETABLE收费
(学年CHAR(10),
学号CHAR(8),
学费NUMERIC(4),
书费NUMERIC(5,2),
总金额NUMERIC(7,2),
PRIMARYKEY(学年,学号),
FOREIGNKEY(学号)REFERENCES学生(学号));