某电影资料数据库包含以下 5 个关系: 1 演员表:A(no,name,address,gender,birthday),其属性含义分别为:演员编号,演员姓名,演员地址, 演员性别,演员出生日期; 2 电影制作公司表:C(cno,cname,address,tel),其属性含义分别为:电影公司编号、公司名称,公司地 址,公司电话; 3 电影表:M(mno,name,len,year,cno),其属性含义分别为:电影编号,电影名称,电影长度,电影制作 年份,电影制作公司编号; 4 上映信息表:I(mno,idate,price),其属性含义分别为:上映信息编号、电影编号、上映日期、电影 票价。注意:一个电影可能会有多条上映记录。 5 电影角色表:R(mno,rrole,ano,duration),其属性含义分别为:电影编号、电影中的角色,角色扮演 者(即演员)的编号,演员在电影中出现时长(分钟)。注意:一个角色在不同时期可能由不同演员来扮演,但 一个演员在一部电影中至多扮演一个角色。 电影、演员、电影公司,分别用电影编号(mno)、演员编号(no)、电影公司编号(cno)唯一标识,其中上 映日期格式为 yyyy-MM-dd请为我生成mysql创建表语句
时间: 2024-03-05 17:51:49 浏览: 127
以下是基于给出的关系模式的 MySQL 创建表语句:
```sql
-- 演员表
CREATE TABLE Actor (
no INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
address VARCHAR(100) NOT NULL,
gender ENUM('男', '女') NOT NULL,
birthday DATE NOT NULL
);
-- 电影制作公司表
CREATE TABLE Company (
cno INT PRIMARY KEY,
cname VARCHAR(100) NOT NULL,
address VARCHAR(100) NOT NULL,
tel VARCHAR(20) NOT NULL
);
-- 电影表
CREATE TABLE Movie (
mno INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
len INT NOT NULL,
year INT NOT NULL,
cno INT NOT NULL,
FOREIGN KEY (cno) REFERENCES Company(cno)
);
-- 上映信息表
CREATE TABLE Info (
id INT PRIMARY KEY AUTO_INCREMENT,
mno INT NOT NULL,
idate DATE NOT NULL,
price INT NOT NULL,
FOREIGN KEY (mno) REFERENCES Movie(mno)
);
-- 电影角色表
CREATE TABLE Role (
mno INT NOT NULL,
rrole VARCHAR(100) NOT NULL,
no INT NOT NULL,
duration INT NOT NULL,
PRIMARY KEY (mno, rrole),
FOREIGN KEY (mno) REFERENCES Movie(mno),
FOREIGN KEY (no) REFERENCES Actor(no)
);
```
注意,上面的 SQL 语句中,我们使用了外键(Foreign Key)来保证表间的完整性约束。具体地,电影表(Movie)的 cno 属性是一个外键,参照了电影制作公司表(Company)的 cno 属性;电影角色表(Role)的 mno 和 no 属性也是外键,分别参照了电影表和演员表(Actor)的对应属性。这样一来,如果试图在这些表中插入不存在的电影、演员或电影制作公司,就会触发外键约束失败的错误,从而保证了数据的完整性。
阅读全文