电影数据库设计与SQL实践

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`。

4、编写两到三条插入语

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值