数据库常考大题

 宝子们心心念念的数据库大题来啦~

我已经整理好啦~你们根据目录找对应题目就好啦,嘿嘿~姐姐是不是还有点小贴心呢?

° · 🛸   🌏 ° 🌘 • .°  ✯✯ ★ *° 🛰 °· . • °★ •

             ▁▂▃▄▅▆▇▇▆▅▄▃▁▂▃.

目录

 宝子们心心念念的数据库大题来啦~

数据库常考大题

一、应用题

1.设有三个关系:

2.设教学数据库中有三个基本表:

3.现有关系数据库如下:

4.设学生教学数据库中,有两个基本表:

二、证明题 

1.指出下列关系模式是第几范式?并说明理由。

2.设R={A,B,C,D},F={A→B,A→C,C→D},ρ={ABC,CD}。分解是否无损联接分解?试说明理由。

 3.设关系模式R(ABC),函数依赖F={A→B,B→A,A→C}满足3NF还是满足BCNF,试说明理由。

 4.设有关系R和函数依赖F:

5. 现有如下关系模式:借阅(图书编号,书名,作者名,出版社,读者编号,读者姓名,借阅日期,归还日期),基本函数依赖集F={图书编号→(书名,作者名,出版社),读者编号→读者姓名,(图书编号,读者编号,借阅日期)→归还日期}

6.某工厂生产多种产品,每种产品由不同的零件组装而成,有的零件可用在不同的产品上。产品有产品号和产品名两个属性,零件有零件号和零件名两个属性。根据语义设计E-R模型,并将E-R模型转换成关系模式,要求关系模式主码加下划线表示。

7.设有关系模式R(A,B,C,D,E,G,K),其最小函数依赖集F={AB→C,B→DE,C→G,G→A}

提示:

如何选出候选码?

三、程序设计题

1.设有如下4个关系模式:

2.某医院病房计算机管理中需要如下信息:

3.设有如下信息:

4.现有如下E-R图:


数据库常考大题

一、应用题

   1.    设有三个关系:

    S(S#,SNAME,AGE,SEX)

    C(C#,CNAME,TEACHER)

    SC(S#,C#,GRADE)

试用关系代数表达式表示下列查询语句:

     (1)检索至少选修两门课程的学生学号(S#)。

               ∏S# (σ1=4∧2≠5(SC×SC)

    (2)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。

              ∏C#,CNAME(C⋈(∏S#,C#(SC) ÷∏S#(S))

    (3)检索选修课程包含“陈军”老师所授课程之一的学生学号(S#)。

              ∏S#(SC⋈∏C#(σTEACHER=’陈军’(C))

    (4)检索选修课程号为k1和k5的学生学号(S#)。

              ∏S#, C# (SC) ÷∏C#(σC#=’k1’∨ C#=’k5’(C))

   2.设教学数据库中有三个基本表:

学生表S(SNO,SNAME,AGE,SEX),其属性分别表示学号、学生姓名、年龄、性别。课程表C(CNO,CNAME,TEACHER),其属性分别表示课程号、课程名、上课教师名。选修表SC(SNO,CNO,GRADE),其属性分别表示学号、课程号、成绩。

有如下SQL查询语句:

SELECT CNO

FROM C

WHERE CNO NOT IN

(SELECT CNO

FROM S,SC

WHERE S.SNO=SC.SNO

AND SNAME='张三');

请完成下列问题:

(1)用汉语句子阐述上述SQL语句的含义。

 答:查询张三同学没有选修的课程的课程号

(2)用等价的关系代数表达式表示上述SQL查询语句。

 答:πCNO(C)- πCNO (sSNAME='张三' (S)⋈SC) 或

πCNO(C)- πCNO (sSNAME='张三' (S⋈SC)) 

    3.现有关系数据库如下:

                  学生(学号,姓名,性别,专业)

                  课程(课程号,课程名,学分)

                  学习(学号,课程号,分数)

分别用关系代数表达式和SQL语句实现下列1—5小题

   (1)检索所有选修了课程号为“C112”的课程的学生的学号和分数;    

     解:SQL语句:

    SELECT 学号,分数 FROM 学习 WHERE 课程号=’C112’

  (SELECT 学号,分数 FROM 学习,WHERE 课程号=’C112’)

    关系代数:

    π学号,分数(课程号=’C112’(学习))

  (π学号,分数,课程号=’C112’(学习)

             

   (2)检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名和分数;

    SQL语句:

    SELECT 学生.学号,姓名,课程名,分数

    FROM 学生,学习,课程       

    WHERE 学习.学号=学生.学号 AND 学习.课程号=课程.课程号 AND 专业=’英语’   

   关系代数:

   π学号,姓名,课程名,分数(π学号,姓名(专业=’英语’(学生))学习π课程号,课程名(课程))

(π学号,姓名,课程名,分数1分,π学号,姓名(专业=’英语’(学生))学习π课程号,课程名(课程)

 (3)检索“数据库原理”课程成绩高于90分的所有学生的学号、姓名、专业和分数;

  SQL语句:

  SELECT 学生.学号,姓名,专业,分数

  FROM 学生,学习,课程       

  WHERE 学生.学号=学习.学号 AND 学习.课程号=课程.课程号 AND分数>90 AND 课程名=‘数据库 原理’ 

  关系代数:

 π学号,姓名,专业,分数(π学号,姓名,专业(学生)(分数>90(学习))π课程号,课程名( 课程名=’数 据库原理’(课程)))

 (π学号,姓名,专业,分数,π学号,姓名,专业(学生)(分数>90(学习))π课程号,课程名(课程名=’数据库原理’(课程)) 

   (4)检索没学课程号为“C135”课程的学生信息,包括学号,姓名和专业;

   SQL语句:

   SELECT 学号,姓名,专业

    FROM 学生

               WHERE 学号 NOT IN      

 (SELECT 学号 FROM 学习 WHERE 课程号=‘C135’)

  关系代数:

   (π学号(学生)-π学号(课程号=‘C135’ (学习)))(π学号,姓名,专业(学生)

 (π学号(学生)-1分,π学号(课程号=‘C135’ (学习)))(π学号,姓名,专业(学生)

   (5)检索至少学过课程号为“C135”和“C219”的课程的学生的信息,包括学号、姓名和专业。

   SQL语句:

   SELECT 学号,姓名,专业 FROM 学生 WHERE 学号 IN      

(SELECT X1.学号 FROM  学习 X1,学习 X2  WHERE X1.学号=X2.学号 AND X1.课程号=‘C135’AND X2.课程号=‘C219’)

  关系代数:

  (π学号,课程号(学习)÷π课程号(课程号=‘C135’∨课程号=‘C219’ (课程)))π学号,姓名,专业(学生)

 (π学号,课程号(学习)÷π课程号(课程号=‘C135’∨课程号=‘C219’ (课程))1分,π学号,姓名,专 业(学生)

4.设学生教学数据库中,有两个基本表:

学生表:S(Sno, Sname, Sage, Ssex)

成绩表:SC(Sno, Cno, Grade)

现有如下SQL语句:

SELECT Sname FROM S INNER JOIN SC ON S.Sno=SC.Sno

  WHERE Grade >= 60  

请给出关系代数式和题目含义。

解答:

关系代数:

 

题目含义:查询成绩大于等于60分所有学生的姓名。

二、证明题 

1.指出下列关系模式是第几范式?并说明理由。

(1)R(X,Y,Z)

     F={X→Y,X→Z}

答:BCNF.R的候选码为X,而且F中每一个函数依赖的左部都包含了候选码X。

(2)R(A,B,C,D,E)

     F={AB→C,AB→E,A→D,BD→ACE}

答:3NF.R的候选码是AB和BD,R中非主属性C和E都直接且完全函数依赖于候选码AB和BD,但存在主属性D对候选码AB的部分函数依赖,因此R最高属于3NF。

(3)R(W,X,Y,Z)

F={X→Z,WX→Y}

答:1NF。R的候选码为WX,则Y,Z为非主属性,又由于X→Z,因此F中存在非主属性对候选码的部分函数依赖。

   

2.设R={A,B,C,D},F={A→B,A→C,C→D},ρ={ABC,CD}。分解是否无损联接分解?试说明理由。

      解:设R1=ABC,R2=CD

  ∵R1∩R2=C,R2-R1=D,而C→D(已知)

     故R1∩R2→R2-R1成立

    根据定理,分解ρ为无损联接分解

 3.设关系模式R(ABC),函数依赖F={A→B,B→A,A→C}满足3NF还是满足BCNF,试说明理由。

    解: 对于关系模式R(ABC),函数依赖F={A→B,B→A,A→C},
    分析可知,该关系模式关键字为A。
    同样由分析可得,该关系模式不存在非主属性B、C对关键字A的部分依赖和传递依赖现象,   R∈3NF,但由于B→A(已知),而B不是关键字,
    故该关系模式R∈BCNF不成立。

 4.设有关系R和函数依赖F:

R(A,B,C,D,E),F = { ABC→DE,BC→D,D→E }。

试求下列问题:

(1)关系R的侯选码是什么?R属于第几范式?并说明理由。

答:关系R的候选码是(A,B,C),R∈1NF,因为R中存在非主属性D,E对候选码(A,B,C)的部分函数依赖。

(2)如果关系R不属于BCNF,请将关系R逐步分解为BCNF。

首先消除部分函数依赖

将关系分解为:

R1(A,B,C) (A,B,C)为候选码,

R1中不存在非平凡的函数依赖

R2(B,C,D,E),(B,C)为候选码,

R2的函数依赖集为:F2={(B,C)→D,D→E}

在关系R2中存在非主属性E对候选码(B,C)的传递函数依赖,所以将R2进一步分解:

R21(B,C,D) ,(B,C)为候选码,

R21的函数依赖集为:F21 = {(B,C)→D }R22依赖集为:F22 = { D→E },D为候选码

在R1中已不存在非平凡的函数依赖,在R21、R22关系模式中函数依赖的决定因素均为候选码,所以上述三个关系模式均是BCNF。

5. 现有如下关系模式:借阅(图书编号,书名,作者名,出版社,读者编号,读者姓名,借阅日期,归还日期),基本函数依赖集F={图书编号→(书名,作者名,出版社),读者编号→读者姓名,(图书编号,读者编号,借阅日期)→归还日期}

(1)读者编号是候选码吗?

答:不是

(2)写出该关系模式的主码。

答:(图书编号,读者编号,借阅日期)

(3)该关系模式中是否存在非主属性对码的部分函数依赖?如果存在,请写出一个。

答:存在。(图书编号,读者编号,借阅日期)→书名、(图书编号,读者编号,借阅日期)→作者名、(图书编号,读者编号,借阅日期)→出版社、(图书编号,读者编号,借阅日期)→读者姓名。

(4)该关系模式满足第几范式?并说明理由。

答:1NF。因为存在非主属性对码的部分函数依赖。

6.某工厂生产多种产品,每种产品由不同的零件组装而成,有的零件可用在不同的产品上。产品有产品号和产品名两个属性,零件有零件号和零件名两个属性。根据语义设计E-R模型,并将E-R模型转换成关系模式,要求关系模式主码加下划线表示。

解:E-R:

      产品(产品号,产品名)

      零件(零件号,零件名)

      组装(产品号,零件号

7.设有关系模式R(A,B,C,D,E,G,K),其最小函数依赖集F={AB→C,B→DE,C→G,G→A}

① 求模式R的所有候选码;

② 说明R不是2NF的理由,并把R分解成2NF模式集;

解:

L属性:B;R属性:DE;LR属性:A,C,G;NLR属性:K。

计算(B)+={DE},所以,B不能做为唯一的候选码,需要与LR属性联合;

计算(AB)+={ABCDEG},故ABK是候选码;

计算(BC)+={ABCDEG},故BCK是候选码;

计算(BG)+={ABCDEG},故BGK是候选码;

在上面的关系中,非主属性只有{DE},但存在函数依赖B→DE,即存在非主属性对码的部分函数依赖,故不是2NF;

将R分解成:

R1(A,B,C,G,K, AB→C,C→G,G→A)

R2(B,D,E, B→DE)

R1关系中的候选码仍为ABK,BCK,BGK,没有非主属性,故一定满足2NF;R2关系中候选码为B,主属性只有一个,故一定满足2NF

提示:

如何选出候选码?

1)只出现在左边的⼀定是候选码

2)只出现在右边的⼀定不是候选码

3)左右都出现的不⼀定

4)左右都不出现的⼀定是候选码

5)再求确定的候选码的闭包,如果可以推出全部,那么当前确定的就是候选码

三、程序设计题

1.设有如下4个关系模式:

    S(SN,SNAME,CITY)

    P(PN,PNAME,COLOR,WEIGHT)

    J(JN,JNAME,CITY)

    SPJ(SN,PN,JN,QTY)

    其中:S表示供应商,SN为供应商编码,SNAME为供应商名字,CITY为供应商所在城市;P表示零件,PN为零件编码,PNAME为零件名字,COLOR为零件颜色,WEIGHT为零件重量;J表示工程,JN为工程编码,JNAME为工程名字,CITY为工程所在城市;SPJ表示供应关系,QTY表示提供的零件数量。

    写出实现以下各题功能的SQL语句:

   (1)取出所有工程的全部细节。

     SELECT *

     FROM J;

    (2)取出所在城市为南京的所有工程的全部细节。

     SELECT *

     FROM J

     WHERE CITY=’南京’;  

    (3)取出为所在城市为上海的工程提供零件的供应商编码。

      SELECT DISTINCT SN

      FROM SPJ

      WHERE JN IN

             (SELECT JN

               FROM J

               WHERE CITY=’上海’); 

    (4)取出为所在城市为上海或北京的工程提供红色零件的供应商编码。

     SELECT SN

     FROM SPJ

     WHERE JN IN

             (SELECT JN

              FROM J

                WHERE CITY=’上海’ OR CITY=’北京’)

           AND PN IN

               (SELECT PN

                 FROM P

                 WHERE COLOR=’红’)

    (5)取出供应商与工程所在城市相同的供应商提供的零件编码。(3分)

     SELECT SPJ.PN

     FROM S,J,SPJ

     WHERE S.SN=SPJ.SN AND J.JN=SPJ.JN AND S.CITY=J.CITY; 

(6)取出至少由一个和工程不在同一城市的供应商提供零件的工程编码。

     SELECT DISTINCT SPJ.JN

         FROM S,J,SPJ

     WHERE S.SN=SPJ.SN AND J.JN=SPJ.JN AND S.CITY<>J.CITY;

(7)取出上海供应商不提供任何零件的工程编码。

     SELECT JN

        FROM J

        WHERE JN NOT IN

                 (SELECT DISTINCT JN

                   FROM SPJ

                   WHERE SN IN

                          (SELECT SN

                            FROM S

                            WHERE CITY=’上海’));

    (8)取出所有这样的一些<CITY,CITY>二元组,使得第1个城市的供应商为第2个城市的工程提  供零件。

     SELECT S.CITY,J.CITY

     FROM S,J,SPJ

     WHERE S.SN=SPJ.SN AND J.JN=SPJ.JN;           

2.某医院病房计算机管理中需要如下信息:

科室:科室名,科地址,科电话,医生姓名;

病房:病房号,床位号,所属科室名;

医生:姓名,职称,所属科室名,年龄,工作证号;

病人:病历号,姓名,性别,年龄,主管医生,病房号;

其中,一个科室有多个病房,多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。

要求:画出该计算机管理系统的E-R图。

解:

(1)在教学管理数据库中有学生、课程和选课三个表,它们的定义分别为为:

Student(Sno Char(5),Sname Char(6),Ssex Char(2),

          Sage Int,Sdept Char(2))

Course(Cno Char(1), Cname Char (10), Cpno Char(1),

        Ccredit Int)

SC(Sno Char(5), Cno Char(1), Grade int)

根据下面的要求,写出SQL语句。

① 用SQL语句建立数据表SC,以(Sno, Cno)作为主键;

用SQL语句建立数据表SC,以(Sno, Cno)作为主键

CREATE TABLE SC (

  Sno CHAR(5),

  Cno CHAR(1),

  Grade INT,

  PRIMARY KEY (Sno,Cno)

);

② 向Student表插入一条记录(95011, 张三, 女, 19,CS);

INSERT INTO Student VALUES('95011', '张三', '女', 19, 'CS');

③ 检索计算机系(CS)所有女同学的姓名和年龄;

SELECT Sname, Sage FROM Student

  WHERE Sdept='CS' AND Ssex='女';

④ 检索选修了2号课程学生的学号、姓名、成绩,并按成绩降序排序;

SELECT Student.Sno, Sname, Grade

  FROM Student INNER JOIN SC ON Student.Sno=SC.Sno

  WHERE SC.Cno='2'

  ORDER BY Grade DESC

⑤ 建立一个信息系(IS)所有不及格(Grade<60)学生的视图vwStudent。

CREATE VIEW vwStudent AS (

   SELECT Student.*

   FROM Student INNER JOIN SC ON Student.Sno=SC.Sno

   WHERE Sdept='IS' AND Grade < 60

)

3.设有如下信息:

下列E-R图是反映产品与仓库两实体间联系的信息模型,要求:

(1)给出该E-R图的关系数据库模式,并指出相应的关键字。

解:

关系数据库模式:

    仓库W(仓库号W#,仓库名WN,地址WA)            关键字:W#

    产品P(产品号P#,产品名称PN,规格PS,型号PM)    关键字:P#

    存放L(仓库号W#,产品号P#,数量QTY)             关键字:(W#,P#

 (2)若仓库号、仓库名及仓库地均为字符型且长度均为10,用SQL语言为仓库关系建立相应的基表并说明实体完整性规则。

  解:CREATE TABLE W(W# CHAR(10) PRIMARY KEY,

                    WN CHAR(10),

                    WA CHAR(10))

 (3)将仓库基表的查询权限授予所有用户,收回User3对仓库的查询权限。

  解:GRANT SELECT ON W TO PUBLIC

    REVOKE SELECT ON W FROM User3

4.现有如下E-R图:

 

实体的主要属性如下,其中下划线部分为主码:

仓库(仓库号,仓库名,面积,货位数)

零件(零件号,零件名称,规格型号,计量单位,供货商号,价格)

库存,库存量)

(1)请在处填上相应的属性。

(2)试用SQL定义上述E-R图中所有的实体、属性及联系,所对应的英文名称为:

Warehouse(wno,wname,square,cou)

Material(mno,mname,type,unit,cusnum,price)

Storage(,storenumber),要求反映主码和外码,其中的类型长度可以根据需要自行确定。

(3)用SQL与关系代数表示查询:找出零件名为“镙丝”的零件号、所存放的仓库号、库存量。

(4)建立一个包含仓库号、仓库名、零件号、零件名、价格、库存量的视图VIEW1。

答: 仓库号 零件号

建立仓库表

Create table warehouse

(

                     wno varchar(10) primary key,

                     wname varchar(20),

                     square number(10,2),

                     cou int)

       建立零件表

Create table material

(

                     mno varchar2(10) primary key,

                     mname varchar2(20),

                     type varchar2(10),

                     unit varchar2(10),

                     cusnum varchar2(10),

                     price number(10,2))

       建立库存表

Create table storage

(

                     wno varchar2(10) foreign key references warehouse(wno),

                     mno varchar2(10) foreign key references material(mno),

                     storenumber number(10,2),

primary key(wno,mno))

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨桐Miracle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值