栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库设计案例 mysql学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库设计案例 mysql学习

需求:对专辑,曲目,评论,用户四个表进行关联,寻找每个表需要的数据信息,找出表与表之间的关系。

音乐专辑表名:Music

字段名数据类型说明
titlevarchar(32)专辑名
aliasvarchar(32)专辑别名
imagevarchar(64)封面图片
stylevarchar(8)流派(如经典、流行、民谣、电子等)
typevarchar(4)类型(专辑、单曲等)
mediumvarchar(4)介质(CD、黑胶、数字等)
publish_timedate发行时间
publishervarchar(16)出版者
numbertinyint唱片数
barcodebigint条形码
summaryvarchar(1024)简介
artistvarchar(16)艺术家
idint编号(唯一)

曲目表名: Song

字段名数据类型说明
namevarchar(32)歌曲名
serial_numbertinyint歌曲序号
idint编号(唯一)

评论表名:Review

字段名数据类型说明
contentvarchar(256)评论内容
ratingtinyint评分(1~5)
review_timedatetime评论时间

用户表名:User

字段名数据类型说明
usernamevarchar(16)用户名(唯一)
imagevarchar(64)用户头像图片地址
signaturevarchar(64)个人签名,例如(本来无一物,何处惹尘埃!)
nicknamevarchar(16)用户昵称
idint用户编号(主键)

-- 专辑与用户之间为多对多的关系(一张专辑可多用户购买,一个用户也可以购买多张专辑)
-- 需要新建一张中间表对二者进行关联

create table Music_User (
	id int primary key auto_increment,-- 编号(主键),自增长
	Music_id int,                     -- 对应记录专辑编号
	User_id int                       -- 对应记录用户编号
	);
-- 添加外键约束
alter table Music_User add constraint fk_Music_id1 foreign key(Music_id) references Music(id);
alter table Music_User add constraint fk_User_id1 foreign key(User_id) references User(id);

-- 专辑与曲目之间为一对多的关系(一张专辑可以有许多曲目,一首曲子只能在一张专辑中)
-- 一对多外键设置在多的一方,当前应设置在曲目表,评论表,评论表中

alter table Song add constraint fk_Music_Song foreign key(Music_id) references Music(id);

-- 专辑与评论之间为一对多的关系(一张专辑可以有许多评论,对应评论只能在一张专辑中)
-- 用户与评论之间为一对多的关系(一个用户可以有许多评论,对应评论只能属于一个用户)

alter table Review add constraint fk_Music_id2 foreign key(Music_id) references Music(id);
alter table Review add constraint fk_User_id2 foreign key(User_id) references User(id);

 

 

 当您删除数据时会发现这样一个提示

 这边提示您的数据被外键约束了,不可以进行删除。

源代码:

-- 案例
CREATE TABLE Music (
	title VARCHAr ( 32 ),-- 专辑名
	alias VARCHAr ( 32 ),-- 专辑别名
	image VARCHAr ( 64 ),-- 封面图片
	style VARCHAr ( 8 ),-- 流派(经典,民谣等)
	type VARCHAr ( 4 ),-- 类型(单曲,专辑等)
	media VARCHAr ( 4 ),-- 介质(CD,黑胶)
	publish_time date,-- 发行时间
	publisher VARCHAr ( 16 ),-- 出版者
	number TINYINT,-- 唱片数
	barcode BIGINT,-- 条形码
	summary VARCHAr ( 1024 ),-- 简介
	artist VARCHAr ( 16 ),-- 艺术家
	id INT PRIMARY KEY -- 编号(主键)
	
);
CREATE TABLE Song ( NAME VARCHAr ( 32 ), -- 歌曲名
	serial_number TINYINT, -- 歌曲序号
	id INT PRIMARY KEY, -- 编号(主键)
	Music_id INT -- 外键编号
);
CREATE TABLE Review ( content VARCHAr ( 256 ), -- 评论内容
	rating TINYINT, -- 评分(1-5)
	review_time datetime, -- 评论时间
	Music_id INT, -- 外键编号
	User_id INT -- 外键编号
);
CREATE TABLE USER (
	username VARCHAr ( 16 ) UNIQUE,-- 用户名(唯一)
	image VARCHAr ( 64 ),-- 用户头像图片地址
	signature VARCHAr ( 64 ),-- 个人签名,例如(本来无一物,何处惹尘埃!)
	nickname VARCHAr ( 64 ),-- 用户昵称
	id INT PRIMARY KEY -- 用户编号(主键)
	
);-- 专辑与用户之间为多对多的关系(一张专辑可多用户购买,一个用户也可以购买多张专辑)
-- 需要新建一张中间表对二者进行关联
CREATE TABLE Music_User ( id INT PRIMARY KEY auto_increment, -- 编号(主键),自增长
	Music_id INT, -- 对应记录专辑编号
	User_id INT -- 对应记录用户编号
);-- 添加外键约束
ALTER TABLE Music_User ADD CONSTRAINT fk_Music_id1 FOREIGN KEY ( Music_id ) REFERENCES Music ( id );
ALTER TABLE Music_User ADD CONSTRAINT fk_User_id1 FOREIGN KEY ( User_id ) REFERENCES USER ( id );-- 专辑与曲目之间为一对多的关系(一张专辑可以有许多曲目,一首曲子只能在一张专辑中)
-- 一对多外键设置在多的一方,当前应设置在曲目表,评论表,评论表中
ALTER TABLE Song ADD CONSTRAINT fk_Music_Song FOREIGN KEY ( Music_id ) REFERENCES Music ( id );-- 专辑与评论之间为一对多的关系(一张专辑可以有许多评论,对应评论只能在一张专辑中)
-- 用户与评论之间为一对多的关系(一个用户可以有许多评论,对应评论只能属于一个用户)
ALTER TABLE Review ADD CONSTRAINT fk_Music_id2 FOREIGN KEY ( Music_id ) REFERENCES Music ( id );
ALTER TABLE Review ADD CONSTRAINT fk_User_id2 FOREIGN KEY ( User_id ) REFERENCES USER ( id );
SELECt
	* 
FROM
	Music;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号