数据库第八次实验

 

----------问题-----------

小明打算设计一个数据库来保存自己喜欢的电影信息。

他需要保存的电影信息有,电影名称,电影的类型(如:动作片、动画片、悬疑片、剧情片等),上映日期,电影的导演,参演的主要演员,电影评分。

同时,他还打算把相关的演员和导演的信息也保存下来,这样可以通过导演和演员来查询相关影片,还可以通过电影来查询演员或导演的个人信息。演员的信息有,姓名,性别,生日,星座,参演的影片等;导演的信息有:姓名,性别,生日,执导过的影片等。假设这些影片中,每一部电影由多名演员参演,而且,每一部电影由唯一的一个导演来执导。

请根据以上相关描述来帮助小明设计一个数据库。

 

----------要求-----------

① 分析以上问题,设计E-R图(一定要先画图)。

② 将以上问题分析完成之后,利用SQL语句(CREATE TABLE)完成表的创建。

③ 完成若干条记录的输入。

④ 编写一个带参数的存储过程,能完成对电影信息表的数据输入。

⑤ 编写一个存储过程,能根据提供的电影名称查询出参演演员名称。

 

create database db
use db
create table director(
    导演号 varchar(20) primary key,
    姓名 char(20),
    性别 varchar(5) check(性别 in ('','')),
    生日 date,
)

create table actor(
    演员号 varchar(20) primary key,
    姓名 char(20),
    性别 varchar(5) check(性别 in ('','')),
    生日 date,
    星座 char(8)
)

create table files(
    电影号 varchar(20) primary key,
    名称 varchar(30),
    类型 char(10) not null,
    上映日期 date,
    导演 varchar(20),
    演员 varchar(100),
    电影评分 numeric(2,1),
    foreign key(导演) references director(导演号)
)

create table af(
    演员号 varchar(20),
    电影号 varchar(20),
    foreign key(演员号) references actor(演员号),
    foreign key(电影号) references files(电影号)
)

insert director values
('6640238', '乔.罗素', '', '1971-03-17'),
('9852348', '王晶', '', '1961-05-30'),
('0619444', '海莉.贝内特', '', '1983-02-11');

insert actor values
('06x5411', '艾弗森', '', '1985-02-03', '白羊'),
('9066x66', '小栗旬', '', '1981-12-15', '魔蝎'),
('06165x5', '李民基', '', '1992-03-17', '双鱼'),
('x489116', '石原里美', '', '1989-7-25', '狮子'),
('65x5988', '斯嘉丽.约翰逊', '', '1981-06-09', '双子');

insert files values
('f51650', '美国队长3', '科幻', '2016-07-11', '6640238', '克里斯·埃文斯、小罗伯特·唐尼、斯嘉丽·约翰逊、李民基', 8.9),
('f97641', '失恋达人', '爱情', '2017-02-08', '9852348', '小栗旬、石原里美、李民基', 7.6),
('f89412', '达子的春天', '喜剧', '2007-02-16', '9852348', '李民基、李慧颖、孔炯轸、小栗旬、艾弗森', 8.8),
('f65499', '无底洞', '恐怖', '2009-12-11', '0619444', '娜塔莉·波特曼、迈克尔·法斯宾德、方·基默、斯嘉丽.约翰逊', 8.3);

insert af values
('06x5411', 'f89412'),
('9066x66', 'f97641'),
('9066x66', 'f89412'),
('06165x5', 'f51650'),
('06165x5', 'f97641'),
('06165x5', 'f89412'),
('x489116', 'f97641'),
('65x5988', 'f51650'),
('06165x5', 'f65499');

go
create procedure addfiles
@fno varchar(20),@fname varchar(30),@ftype char(10),@fdate date,@fdirector varchar(20),@factor varchar(100),@fscore int
as
begin
insert into files values(@fno, @fname, @ftype, @fdate, @fdirector, @factor, @fscore)
end

go
create procedure queryactor
@fname varchar(30)
as
begin
select @fname as 电影, 演员
from files
where 名称 = @fname
end
go

execute addfiles 'f69419', '热血高校', '动作', '2007-12-12', '9852348', '小栗旬、石原里美、山田孝之、桐谷健太', 9.5
execute queryactor 美国队长3
execute queryactor 热血高校

查询结果

猜你喜欢

转载自www.cnblogs.com/lesroad/p/8992545.html