数据库实验报告2.doc

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的内容进行验证:

相关文档
最新文档