某电影资料数据库关系代数和SQL语句查询示例
某电影资料数据库包含以下4个关系
-
演员A(no,name,address,gender,birthday)
- 包括属性:演员编号,演员姓名,演员地址,演员性别,演员出生日期;
-
电影公司C(cno,cname,address,tel)
- 包括属性:电影公司编号、公司名称,公司地址,公司电话;
-
电影M(mno,name,len,year,cno)
- 包括属性:电影编号,电影名称,电影长度,电影制作年份,电影公司编号;
-
上映信息I(ino,mno,idate,price)
- 包括属性:上映信息编号、电影编号、上映时间、电影票价;
-
电影演员关系表R(rno,mno,ano,rrole,rtime)
- 包括属性:关系编号、电影编号、演员编号,演员在电影中饰演角色名称,演员在电影中出现时间(分钟);
电影、演员、电影公司、上映信息、电影演员关系表分别由电影编号(mno)、演员编号(no)、电影公司编号(cno)、上映信息编号(ino)、关系编号(rno)唯一标识,其中上映时间日期格式为yyyy-MM-dd
用关系代数表达下面操作:
(1) 用关系代数和SQL语句查询所有“北影”电影公司制作的电影名称和电影主演的姓名,主演要求在电影中出现的时间大于40分钟。
关系代数:
π M.name, A.name (M ⨝ C.cno = M.cno ∧ R.mno = M.mno ∧ R.ano = A.no ∧ R.rtime > 40 ∧ C.cname = '北影' ∧ A.name IS NOT NULL)
SQL语句:
SELECT M.name, A.name
FROM M
JOIN C ON C.cno = M.cno
JOIN R ON R.mno = M.mno
JOIN A ON R.ano = A.no
WHERE R.rtime > 40 AND C.cname = '北影' AND A.name IS NOT NULL
(2) 用关系代数和SQL语句查询所有电影公司制作的电影名称、制作年份和电影票价,按票价降序排序,只取前10条记录。
关系代数:
π M.name, M.year, I.price (M ⨝ I.mno = M.mno) ↓I.price[10]
SQL语句:
SELECT M.name, M.year, I.price
FROM M
JOIN I ON I.mno = M.mno
ORDER BY I.price DESC
LIMIT 10
原文地址: https://www.cveoy.top/t/topic/osCT 著作权归作者所有。请勿转载和采集!