1、你想将电影数据库放到网站上。你希望通过让人们在网站上注册成为会员来建立一个社区。a. 根据你对网站的经验,你会尝试记录会员的哪些类型的信息,以及如何识别他们?换句话说,该网站的会员表会是什么样子?指明哪些属性是必需的,哪些是可选的。b. 你想允许会员发布电影评论,和/或给电影打1到5星的评分。有人可以只评论不评分,或者只评分不评论。但是,会员不能对同一部电影多次评分或评论。你会如何组织数据?
- 必需属性 :
- 数值型会员ID
- 自选用户名
- 电子邮件地址
- 密码
- 注册日期
- 积分计数器
这些属性是会员注册和使用网站的基本信息,应在注册时立即提供。
- 可选属性 :
- 头像
- 人口统计信息(如出生日期、性别、国家等)
- 会员在网站上的活动信息(如访问次数、最后登录时间等)
- 会员的喜好信息(如喜欢的电影类型、演员等)
- 会员与其他会员的“友谊”信息
这些属性可以在会员注册后根据需要逐步添加。
- 每次会员对电影进行评分或评论时,必须存储会员的标识符和电影的标识符,并创建一个约束,强制该组合唯一。
2、你为一个允许会员借几天 DVD 的协会工作。我们只想记录合适的 DVD 信息。首先,你认为准备热门电影的多份拷贝是个好主意,这样多人可以同时借同一部电影的不同 DVD。其次,在 DVD 盒背面通常能找到这类信息:特别功能 * 幕后迷你纪录片 * 交互式菜单 * 电影预告片 * 演员/电影制作人简介 * 场景访问 语言:英语 DTS 5.1 和西班牙语立体声环绕 字幕:英语(供听力障碍者使用)、法语、葡萄牙语、德语、中文、泰语和韩语 彩色/片长 118 分钟 宽高比:宽屏 未分级 a. 你会选择将上述哪些信息存入数据库?b. 你会如何组织想要管理的信息?
-
a. 应存入数据库的信息有:语言、字幕、片长、分级、颜色、宽高比和有价值的特别功能(如幕后纪录片)。
-
b. 组织信息的方式如下:
- 需一个
DVD表,每行代表一张物理 DVD,包含:-
DVD 标识符(主键) -
电影标识符(外键) - 可选字段:
DVD 发行年份、发行公司、分级、片长、颜色、宽高比 - 根据记录特别功能的方式设置相应属性
-
- 语言和字幕信息不存于
DVD表中,需以下结构支持:- 一个 语言参考表 ,用于关联语言代码和语言名称
- 一个
dvd_language表,包含: -
DVD 标识符 -
语言代码 -
类型代码(例如:音频语言或字幕语言) - 可选:一个额外表存储
类型代码及其含义(如“audio”表示音频语言,“subtitle”表示字幕)
- 若需详细描述特别功能:
- 一个 特别功能参考表 ,列出所有可能的特别功能类型(如“幕后纪录片”、“导演评论音轨”等)
- 一个中间表实现
DVD与特别功能之间的 多对多关系
3、编写 movie_genres 表和修改后的 movies 表的创建语句。
create table movie_genres(
code char(1) not null primary key,
meaning varchar(50) not null,
unique(meaning)
);
create table movies2(
movieid int not null primary key,
title varchar(60) not null,
country char(2) not null,
year_released numeric(4) not null,
genre char(1) not null,
unique (title, country, year_released),
foreign key(country) references countries(country_code),
foreign key(genre) references movie_genres(code)
);
> **注**:如果使用 Oracle,用 `varchar2` 代替 `varchar`,用 `number(4)` 代替 `numeric(4)`;如果使用 MySQL,在两个创建语句的最后右括号后(分号前)添加 `engine=InnoDB`。

最低0.47元/天 解锁文章
768

被折叠的 条评论
为什么被折叠?



