第二次数据库作业

第二章作业

1 简述关系运算基本运算,导出运算和核心运算。给出使用基本运算表示导出运算的表示方法。

笛卡尔积:符号 \(\times\) ,输出所有域的取值的集合,由于结果量过大,一般不使用。

并集:符号 \(\cup\)

差集:符号为 \(-\) ,专业领域也用 \(\setminus\)

交集:符号为 \(\cap\)

专用关系

选择:符号为 \(\sigma\) ,用于从 \(\mathbb{}R\) 中选择出满足给定条件的元组。使用方式如下: \(\begin{aligned}\boxed{\sigma_F(\mathbb{R})}\end{aligned}\) ,代表从 \(\mathbb{R}\) 中选择出条件为 \(F\) 的元组。

投影:符号为 \(\pi\) ,用于从 \(\mathbb{}R\) 中选择出若干属性的。使用方式如下: \(\begin{aligned}\boxed{\pi_A(\mathbb{R})}\end{aligned}\) ,代表从 \(\mathbb{R}\) 中选择出所有 \(A\) 属性的列。

连接:符号为 \(\Join\) ,从两个关系的笛卡尔积中选取属性间满足一定条件的元组。即根据指定的连接条件,依次检测 \(\mathbb{R}\)\(\mathbb{S}\) 中的每一个元组,如果 \(\mathbb{R}\) 中的某个元组与 \(\mathbb{S}\) 中的某个元组满足了连接条件,则把这两个元组对接起来,而最终所有对接后的元组的集合即为 \(\mathbb{R}\)\(\mathbb{S}\) 的连接。而连接又分为非等值连接(选取属性值满足条件的连接),等值连接(选取属性值相等),自然连接(去掉重复列的等值连接)。

除:符号为 \(\div\)

2 运输公司关系库查询

Team(TNo,TName,Phone)
Car(CNo,Company,CDate,TNo)
Driver(DNo,DName,Phone,TNo,WDate)
代码含义:
Team-车队:TNo-车队编号;TName-车队名称;Phone-电话
Car-车辆:CNo-车辆编号;Company-生产厂家;CDate-出厂日期
Driver-司机:DNo-司机编号;DName-姓名;Phone-电话;WDate-聘期

  1. 查询生产厂家是“金龙公司”的车辆信息,显示数据为CNo,Company,CDate,TNo。$$\Pi _{CNo,Company,CDate,TNo} ( \sigma _{Company="金龙公司"}(car))$$
  2. 查询李明司机的名称、电话和聘期,显示数据为DName,Phone,和WDate。其中:Phone为司机的电话。$$\Pi_{DName,Phone,WDate}(\sigma_{DName="李明"}(Driver))$$
  3. 查询车队编号为“01”的车辆信息,显示数据为TName,Phone,CNo,Company和CDate。其中:Phone为车队的电话。 $$\Pi_{TName,Phone,CNo,Company,CDate}(\sigma_{TNo="01"}(Team\Join Car))$$
  4. 查询车队名称为“翔龙车队”的司机信息,显示数据为TName, Phone(该电话为车队电话,DName和Phone(该电话为司机电话)。$$\Pi_{TName,Team.Phone,DName,Driver.Phone}(\sigma_{TName="翔龙车队"}(Team\Join Driver))$$

3 等值连接和自然连接的与区别和联系

\(1\)

4 计算

\((z,a,z),(x,a,z)\)

5 工程管理数据库查询

供应商S(供应商号SNo,供应商名SName,所在城市City)
零件P(零件号PNo,零件名PName,颜色Color,重量Weight)
工程J(工程号JNo,工程名JName,所在城市City)
供应SPJ(SNo,PNo,JNo,供应数量Qty)

  1. 查找上海的各工程名。$$\Pi_{JName}\Big(\sigma_{City="上海"}(J)\Big)$$
  2. 查询供应商S1给工程J2供应的所有零件名。$$\Pi_{PName} \Big( \sigma_{SNo="S1" \wedge JNo="J2"}(SPJ) \Join P \Big) $$
  3. 查询北京的工程使用蓝色零件的工程号。$$\Pi_{JNo} \Big( \sigma_{City="北京" \wedge Color="蓝色"}(J \Join SPJ \Join P)\Big)$$
  4. 查询没有使用S1所供应零件的工程号。$$\Pi_{JNo}(SPJ) -\Pi_{JNo} \Big( \sigma_{SNo="S1"}(SPJ) \Big)$$
  5. 查询找出能提供零件号为P3的供应商。$$\Pi_{SNo} \Big( \sigma_{PNo="P3"}(SPJ) \Big)$$
  6. 查询能提供供应商S1所提供的所有零件的供应商。$$\Pi_{SNo}(SPJ) \div \Pi_{SNo} \Big( \sigma_{SNo="S1"}(SPJ) \Big) $$
  7. 查询不提供零件P1和P2的供应商。$$\Pi_{SNo}(SPJ) - \Pi_{SNo} \Big( \sigma_{PNo="P1" \wedge PNo="P2"}(SPJ) \Big)$$
  8. 查询同时提供零件P1和P2的供应商。$$ \Pi_{SNo} \Big( \sigma_{PNo="P1" \wedge PNo="P2"}(SPJ) \Big)$$
  9. 查询同供应商S1在同一城市的供应商所提供的所有零件。$$\Pi_{PNo} \Big(\Pi_{City}(S \Join SPJ) \div \Pi_{City} \big( \sigma_{SNo="S1"}(S \Join SPJ ) \big) \Big)$$
  10. 查询供应红色的P1零件的供应商,且其供应量大于1000。$$\Pi_{SNo} \Big(\sigma_{Color="红色" \wedge PNo="P1" \wedge Qty \ge1000}(P \Join SPJ) \Big)$$

6 读者订单管理数据库查询

读者Read(读者号RNo,读者名RName,读者身份Status,读者城市City)
图书Book(书号BNo,书名BName,书价Price,出版社Publisher)
订单OrderForm(订单号ODNo,BNo,订书数量Quantity)
订单读者索引Index(ODNo,RNo)

  1. 找出科学出版社出版的全部书号和价格。$$\Pi_{BNo,Price} \Big( \sigma_{Pubilsher="科学出版社"}(Book) \Big)$$
  2. 找出有订单的书名和订单号。$$\Pi_{BName,ODNo} \Big( \sigma_{Quantity>0}(OrderForm \Join Book) \Big)$$
  3. 找出订购数量为20的所有订单号和书号。$$\Pi_{ODNo,BNo} \Big( \sigma_{Quantity=20}(OrderForm) \Big)$$
  4. 找出至少订购了“数据库技术”的读者号。$$\Pi_{RNo} \Big(\sigma_{Quantity>0 \wedge BName="数据库技术"}(QrderForm \Join Book \Join Index) \Big)$$
  5. 找出没有订购任何图书的读者号。$$\Pi_{RNo} \Big(\sigma_{Quantity=0}(OrderForm \Join Index) \Big)$$

7 商品销售数据库查询

商品SP(商品号SPNO,商品名SPN)、库存KC(SPNO,库存数量SL1)
销售XS(SPNO,KHNO,销售日期RQ,销售数量SL2,单价DJ)
客户KH(客户码KHNO,客户名KHN)。

  1. 查询所有商品的全部信息。$$\Pi_{SPNO,SPN,SL1,RQ,SL2,DJ,KHNO,KHN}(SP \Join KC \Join XS \Join KH)$$
  2. 查询客户“蓝天食品厂”所购的商品码和数量。$$\Pi_{SPNO,SL2} \Big( \sigma_{KHN="蓝天食品厂"}(KH \Join XS) \Big)$$
  3. 查询客户‘1616’所购商品的库存数量。$$\Pi_{SL1} \Big( \sigma_{KHN="1616"}(KH \Join KC) \Big)$$
  4. 查询购买所有商品的客户名。$$\Pi_{KHN} \Big( \sigma_{SL1=SL2}(KC \Join XS) \Big)$$
posted @ 2022-03-29 23:54  hh2048  阅读(525)  评论(0编辑  收藏  举报