数据库实验报告2.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库实验报告2.doc
实验报告
( 2015 / 2016 学年第 2 学期)题目:数据库系统原理
专业:物联网工程学生姓名:
班级学号:
指导教师:
指导单位:物联网学院
日期:2016-5-12
实验名称:约束、视图、索引与存储过程
一、实验内容和要求
1、用create database命令创建电影数据库(以自己的学号命名)。
2、在电影数据库中用create table 命令创建如下5个关系模式。
3、用alter table命令修改movies关系模式,增加引用完整性约束cproducerc,要求movies表中的producerC必须是在MovieExec表中已有的导演。若违反了此约束,则拒绝更新操作。
4、用alter table命令修改StarsIn关系模式,增加引用完整性约束cmovies,要求StarsIn表中的电影名称和年份必须是在movies表中已有的电影名称和年份。若违反了此约束,则拒绝更新操作。
5、用alter table命令修改movies关系模式,增加完整性约束cyear,要求电影年份不能是1915年以前的。
6、用alter table命令修改movies关系模式,增加完整性约束clength,要求电影长度不能小于60也不能多于250。
7、设计数据对3~6的内容进行验证。
8、用create view命令创建如下视图。
a)视图RichExec给出了所有资产在10000000以上的导演的姓名、地址、证书号和资产;
b)视图StudioPress给出了既是电影公司经理又是导演的那些人的名字、地址和证书号;
c)视图ExecutiveStar给出了既是演员又是导演的那些人的名字、地址、性别、生日、证书号和资产总值。
9、用create index命令在StarsIn的StarName属性上创建索引aindex。
10、编写存储过程(函数)
①求产品数据库Laptop内存容量的平均值和总和。
然后调用该存储过程(函数)。
二、实验环境
PostGreSQL9.3
三、实验设计
1、创建电影数据库B13070607,并创建5个数据表分别为movies、moviestar、starsin、movieexec、studio。
2、运行语句
添加约束:
①ALTER TABLE movies ADD CONSTRAINT cproducerc
FOREIGN KEY(producerC) references MovieExec(cert);
②ALTER TABLE StarsIn ADD CONSTRAINT cmovies
FOREIGN KEY(movieTitle,movieYear) references movies(title,year);
③ALTER TABLE movies ADD CONSTRAINT cyear
CHEAK(year>=1915);
④ALTER TABLE movies ADD CONSTRAINT clength
CHEAK(length>=60 AND length<=250);
添加要求的视图和索引:
⑤CREATE VIEW RichExec AS
SELECT name,address,cert,netWorth
FROM MovieExec
WHERE netWorth>=10000000;
⑥CREATE VIEW StudioPress AS
SELECT ,MovieExec.address,cert
FROM MovieExec,Studio
WHERE MovieExec.cert=Studio.presC;
⑦CREATE VIEW ExecutiveStar AS
SELECT , MovieExec.address,gender,birthdate,netWorth
FROM MovieStar,MovieExec
WHERE = AND MovieStar.address=MovieExec.address;
⑧CREATE INDEX aindex ON StarsIn(StarName);
3、调用存储过程(函数),求Laptop内存容量的平均值和总和。
create function laptop() returns setof real
as $$
declare ramcount int :=0;
sum int:=0;
ramloop int;
ave real ;
begin
for ramloop in
select ram from laptop
loop
sum :=sum + ramloop;
ramcount :=ramcount +1;
end loop;
ave :=sum/ramcount;
return next sum;
return next ave;
end ;
$$language plpgsql;
四、实验步骤
1、用create database命令创建电影数据库(以自己的学号命名)。
2、在电影数据库中用create table 命令创建如下5个关系模式。
3、用alter table命令修改movies关系模式,增加引用完整性约束cproducerc,要求movies表中的producerC必须是在MovieExec表中已有的导演。若违反了此约束,则拒绝更新操作。
4、用alter table命令修改StarsIn关系模式,增加引用完整性约束cmovies,要求StarsIn表中的电影名称和年份必须是在movies表中已有的电影名称和年份。若违反了此约束,则拒绝更新操作。
5、用alter table命令修改movies关系模式,增加完整性约束cyear,要求电影年份不能是1915年以前的。
6、用alter table命令修改movies关系模式,增加完整性约束clength,要求电影长度不能小于60也不能多于250。
7、设计数据对3~6的内容进行验证。
8、用create view命令创建如下视图。
a)视图RichExec给出了所有资产在10000000以上的导演的姓名、地址、证书号和资产;
b)视图StudioPress给出了既是电影公司经理又是导演的那些人的名字、地址和证书号;
c)视图ExecutiveStar给出了既是演员又是导演的那些人的名字、地址、性别、生日、证书号和资产总值。
9、用create index命令在StarsIn的StarName属性上创建索引aindex。
10、编写存储过程(函数)
①求产品数据库Laptop内存容量的平均值和总和。
然后调用该存储过程(函数)。
五、实验结果
1、设计数据对3~6的内容进行验证: