# 创建专辑表
CREATE TABLE Music (
title VARCHAR ( 32 ) ,
alias VARCHAR ( 32 ),
image VARCHAR ( 64 ),
style VARCHAR ( 8 ),
type VARCHAR ( 4 ),
MEDIUM VARCHAR ( 4 ),
publish_time date,
publisher VARCHAR ( 16 ),
number TINYINT,
barcode BIGINT,
summary VARCHAR ( 1024 ),
artist VARCHAR ( 16 ),
user_id INT UNIQUE,
id INT UNIQUE,
PRIMARY KEY(id,user_id)
);
# 创建歌曲表
CREATE TABLE Song (NAME VARCHAR ( 32 ),
serial_number TINYINT,
id int PRIMARY KEY
);
# 创建用户表
CREATE TABLE USER ( username VARCHAR ( 16 ) UNIQUE,
image VARCHAR ( 64 ),
signature VARCHAR ( 64 ),
nickname VARCHAR ( 16 ),
id INT PRIMARY KEY
);
# 创建评论表
CREATE TABLE Review ( music_id INT UNIQUE,
user_id INT UNIQUE,
content VARCHAR ( 256 ),
rating TINYINT,
review_time datetime,
PRIMARY KEY(music_id,user_id)
);
我是先建表再添加外键约束的,建立多个外键先建表比较方便。
# 一对多:在多的一方建立外键关联一的一方主键
# 此处为歌曲建立与专辑的外键约束
ALTER TABLE Song add CONSTRAINT fk_song_music foreign key(id) REFERENCES Music(id);
# 多对多:建立中间表,中间表至少包含两个以上外键分别关联双方主键,由此推断评论表为中间表
ALTER TABLE Review ADD CONSTRAINT fk_review_music FOREIGN KEY ( music_id) REFERENCES Music ( id ); # 评论与专辑的外键约束
ALTER TABLE Review ADD CONSTRAINT fk_review_user FOREIGN KEY (user_id ) REFERENCES USER ( id ); # 评论与用户的外键约束
ALTER TABLE Music ADD CONSTRAINT fk_music_user FOREIGN KEY (user_id) REFERENCES USER ( id );
# 专辑与用户的外键约束
建立外键约束,外键列名与主表列名类型必须相同哦!!修改表要先解除外键约束哦,不然可能不成功。
# 可能会需要用到的
drop table if EXISTS Review;
#删除表,EXISTS后接表名
ALTER TABLE Review drop foreign key fk_review_user;
# table后接要为其删除外键约束的表名,key后接要删除的外键名称
老师给的关系图是这样
我做完逆向表到模型后是这样
大概就是这样,如果觉得不对的话欢迎指正呀~~