数据库第八次实验
----------问题-----------
小明打算设计一个数据库来保存自己喜欢的电影信息。
他需要保存的电影信息有,电影名称,电影的类型(如:动作片、动画片、悬疑片、剧情片等),上映日期,电影的导演,参演的主要演员,电影评分。
同时,他还打算把相关的演员和导演的信息也保存下来,这样可以通过导演和演员来查询相关影片,还可以通过电影来查询演员或导演的个人信息。演员的信息有,姓名,性别,生日,星座,参演的影片等;导演的信息有:姓名,性别,生日,执导过的影片等。假设这些影片中,每一部电影由多名演员参演,而且,每一部电影由唯一的一个导演来执导。
请根据以上相关描述来帮助小明设计一个数据库。
----------要求-----------
① 分析以上问题,设计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 热血高校
查询结果