设要对关系模式R(工号,姓名,商品代码,商品名,销售数量)进行分解,将其规范化到第三范式,下列()是最正确的规范化结果。A、R1(工号,姓名)R2(商品代码,商品名,销售数量)B、R1(工号,姓名)R2(商品代码,商品名)R3(工号,商品代码,销售数量)C、R1(工号,姓名)R2(工号,商品代码,商品名,销售数量)D、R1(工号,姓名)R2(商品代码.商品名)R3(商品代码.销售数量)

题目

设要对关系模式R(工号,姓名,商品代码,商品名,销售数量)进行分解,将其规范化到第三范式,下列()是最正确的规范化结果。

  • A、R1(工号,姓名)R2(商品代码,商品名,销售数量)
  • B、R1(工号,姓名)R2(商品代码,商品名)R3(工号,商品代码,销售数量)
  • C、R1(工号,姓名)R2(工号,商品代码,商品名,销售数量)
  • D、R1(工号,姓名)R2(商品代码.商品名)R3(商品代码.销售数量)
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

用SQL命令查询商品价格高于或等于120元的商品的商品名称和数量,正确的命令是______。

A.SELECT 商品.商品名称,商品.数量 FROM 商品; WHERE NOT EXIST (SELECT*FROM 价格; WHERE 价格.商品号;商品.商品号 AND 商品价格<120)

B.SELECT 商品.商品名称,商品.数量 FROM 商品; WHERE EXIST (SELECT*FROM 价格; WHERE 价格.商品号=商品.商品号 AND 商品价格<120)

C.SELECT 商品.商品名称,商品.数量 FROM 商品; WHERE IN (SELECT*FROM 价格; WHERE 价格.商品号:商品.商品号 AND 商品价格<120)

D.SELECT 商品.商品名称,商品.数量 FROM 商品; WHERE NOT IN (SELECT*FROM 价格; WHERE 价格.商品号=商品.商品号 AND 商品价格<120)


正确答案:A
解析:本题建立的是SELECT—SQL命令的嵌套查询语句。在这个命令中要用到两个SELECT—FROM— WHERE查询块,即内层查询块和外层查询块,通过内层查询块检索商品价格都高于或等于120元的记录,即检索出价格中都不存在120元以下的记录。

第2题:

设有关系W(工号,姓名,工种,定额),将其规范化到第三范式正确的答案是()

A.W1(工号,姓名),W2(工种,定额)

B.W1(工号,定额),W2(姓名,工种)

C.W1(工号,姓名,工种),W2(工种,定额)

D.W1(工号,工种,定额),W2(工号,姓名)


参考答案:D

第3题:

在SQL Server 2008中,设某数据库中有商品表(商品号,商品名,进货价格),商品号为主码;销售表(商品号,销售时间,销售数量,销售价格,本次利润),商品号和销售时间为主码,销售价格为本次销售商品的单价。现要求每当在销售表中插入前4列数据时(假设一次只插入一行数据),系统自动计算本次销售产生的利润,并将该利润赋给销售表的第5列“本次利润”。请编写实现上述功能的后触发型触发器代码。(10分)


正确答案:
【解题思路】触发器是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。触发器类似于约束,但比约束更加灵活,可以实施比FOREIGN KEY约束、CHECK约束更为复杂的检查和操作,具有更精细和强大的数据控制能力。触发器的创建格式:CREATE TRIGGER[schema_name.]trigger_nameON{tablelview}{FORlAFFERIINSTEAD OF}{[INSERT][,][UPDATE][,][DELETE]}AS{Sql_statement}[;]对应于本题中,触发事件为在销售表中插入前四列,条件为无条件执行,触发体动作为计算本次利润并插入表中。【参考答案】CREATE TRIGGER calcu_productAFTER INSERT ON销售表FOR EACH ROWAS BEGINDECLARE@PurchasePrise float/*对应商品的进价的参数*/SELECT@PurchasePrise=进货价格FROM商品表WHERE商品号=new.商品号UPDATE销售表SET本次利润=new.销售数量*(new.销售价格-@PurchasePrise)WHERE商品号=new.商品号AND销售时间=New.销售时间/*因为是行级触发器,所以可以使用更新后的新值,用new*/END

第4题:

查询商品单价在10到50之间、并且日销售数量高于20的商品名、单价、销售日期和销售数量,查询结果按单价降序。正确命令是

A.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ORDER BY单价DESC

B.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ORDER BY单价

C.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 ON商品.商品号=销售.商品号ORDER BY单价

D.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN 10 AND 50)AND销售数量>20 AND商品.商品号=销售.商品号ORDER BY单价DESC


正确答案:D
解析:按单价降序排列应在ORDER BY后跟DESC短语,因此排除B)和C)选项。选行多表查询时,指定两表关键字进行连接时,JOIN短语必须与ON短语联合使用,故选项A)错误。

第5题:

阅读下列说明,回答问题1~问题4。

【说明】

某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式见表6所示。

对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计(下划线表示主关键字)

设计一:

顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)

收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话 phone)

商品Merchandise(商品代码Mno,商品名称Mname,价格price)

发票Invoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno,商品代码 Mno,单价unitpfice,数量amount)

设计二:

顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)

收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话 phone)

商品Memhandise(商品代码Mno,商品名称Mname,价格price)

发票Ivoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno)

发票明细Invoicedetail(发票号码Ino,商品代码Mno,单价unitprice,数量amount)

设计一的关系模式Invoice最高满足第几范式?为什么?设计一和设计二哪个更加合理?为什么?


正确答案:设计一中Invoice最高满足第一范式。 根据题意可得出以下函数依赖: Ino→SnoCnoIdate 而关系Invoice的主码是Ino和Mno。非主属性Sno、Cno和Idate并非完全依赖于主码因此关系Invoice不满足第二范式最高满足第一范式。 设计二更加合理。因为设计二解决了设计一中由于非主属性不完全依赖于主码而造成的数据冗余等问题。
设计一中Invoice最高满足第一范式。 根据题意可得出以下函数依赖: Ino→Sno,Cno,Idate 而关系Invoice的主码是Ino和Mno。非主属性Sno、Cno和Idate并非完全依赖于主码,因此关系Invoice不满足第二范式,最高满足第一范式。 设计二更加合理。因为设计二解决了设计一中由于非主属性不完全依赖于主码而造成的数据冗余等问题。

第6题:

设有一个商店的数据库,记录客户及其购物情况,由三个关系组成:商品(商品号,商品名,单价,商品类别,供应商),客户(客户号,姓名,地址,电邮,性别,身份证号),购买(客户号,商品号,购买数量),则关系购买的键为()。

A.客户号

B.商品号

C.客户号,商品号

D.客户号,商品号,购买数量


正确答案:C

第7题:

设有商品表(商品号,商品名,单价) 和销售表(商品号,销售时间,销售数量)。现要查询单价高于100元的全部商品的销售总次数和总数量,包括没有被卖出过的商品(没有被卖出过的商品的销售总次数和总数量置为0) 。请补全如下语句:

SELECT商品表。商品号,销售总次数= (9) ,

销售总数量=SUM(销售数量)

FROM商品表 (10) 销售表

0N商品表。商品号=销售表。商品号

WHERE单价>100

GROUP BY商品表。商品号

(9)


正确答案:COUNT(销售表.商品号)
COUNT(销售表.商品号)

第8题:

设有商品表(商品号,商品名,单价)和销售表(销售单据号,商品号,销售时间,销售数量,销售单价)。其中,商品号代表一类商品,商品号、单价、销售数量和销售单价均为整型。请编写查询某年某商品的销售总毛利的存储过程,毛利=销售数量x(销售单价一单价)。要求商品号和年份为输入参数,总毛利用输出参数返回。(10分)


正确答案:
存储过程是由PL/SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,使用时只要调用即可。使用存储过程具有以下优点:其已经编译和优化过了,所以运行效率高,提供了在服务器端快速执行SQL语句的有效途径;存储过程降低了客户端和服务器之间的通信量;方便实施企业规则,当企业规则发生变化时只要修改存储过程,而无需修改其他应用程序。创建存储过程:create procedure过程名@[参数名][类型],@[参数名][类型]/*过程首部*/AsDeclare/*as下面对应的<PL/SQL>块为过程体*/beginend如上所示,存储过程包括过程首部和过程体。过程名是数据库服务器合法的对象标识;参数列表:用名字来标识调用时给出的参数值,必须指定值的数据类型。参数可以是输人参数或输出参数,默认为输人参数。【参考答案】CREATE PROCEDURE PRODUCT@商品号int,@年份int,@毛利int outputASDECLARE@某商品销售量int,@某商品进价int,@某商品销售单价int/*中间变量定义:*/BEGINSelect@某商品进价=单价from商品表where@商品号=商品号Select@某商品销售单价=销售单价,@某商品销售量=count(*)from销售表where@商品号=商品号and销售时间=@年份IF@某商品进价is NULL THEN/木判断该商品是否存在*/ROLLBACK;RETURN;END IFIF@某商品销售单价is NULL THEN/*判断该两晶是否可卖*/ROLLBACK;RETURN;END IFSET@毛利=(@某商品销售单价-@某商品进价)*@某商品销售量GO

第9题:

查询单价最高的商品销售情况,查询结果包括商品号、商品名、销售日期、销售数量和销售金额。正确命令是

A.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售ON商品.商品号=销售.商品号 WHERE单价=(SELECT MAX(单价)FROM商品)

B.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售ON商品.商品号=销售.商品号 WHERE单价=MAX(单价)

C.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售WHERE单价=(SELECT MAX(单价)FROM商品)

D.SELECT商品.商品号,商品名,销售日期,销售数量,销售数量*单价AS销售金额 FROM商品JOIN销售WHERE单价=MAX(单价)


正确答案:A
解析:在指定连接字段时可以用WHERE指定连接条件,也可以用超连接关键字JOIN表示普通连接,即只有满足连接条件的记录才出现在查询结果中,但JOIN后面必须用ON子句指定连接条件,故选项C)和D)是错误的,选项B)中的WHERE语句“单价=MAX(单价)”没有指明MAX(单价)这个最大值来自哪个表,故选A)。

第10题:

查询商品单价在10到50之间,并且日销售数量高于20的商品名,单价,销售日期和销售数量,查询结果按单价降序,正确命令是( )

A.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN l0 AND 50)AND销售数量>=20 ORDER BY单价DESC

B.SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售 WHERE(单价BETWEEN l0 AND 50)AND销售数量>20

C.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN l0 AND 50)AND销售数量>20 ON商品.商品号=销售.商品号ORDER BY单价

D.SELECT商品名,单价,销售日期,销售数量FROM商品,销售 WHERE(单价BETWEEN l0 AND 50)AND销售数量>20 AND商品,商品号=销售,商品号ORDER BY单价DESC


正确答案:D
D。【解析】根据题意,A选项中使用了JOIN但是少了ON语句所以错误;B选项中不仅没有使用ON语句同时也没有使用降序排列,所以B选项错误;C选项中没有使用降序排列;D选项根据题意进行了查询并将查询结果按照降序进行排列,所以正确。

更多相关问题