gpt4 book ai didi

mysql - 基于另一列的外键

转载 作者:行者123 更新时间:2023-11-29 17:35:10 25 4
gpt4 key购买 nike

我有一个数据库,其中包含以下表格:CommentsArticlesVideosSongs游戏书籍评论与其他内容之间具有一对多关系(一篇文章、视频、歌曲...可能有很多评论)。我有一个关联表 CommentBelongsTo,具有三列 comment_idpage_typepage_id),例如,如果 page_type = 'article'page_id = 1 表示评论属于 id = 1 的文章。问题是我如何将 page_id 设置为外键取决于page_type?或者还有更好的表格设计吗?

最佳答案

以下表结构可以解决问题

DROP TABLE IF EXISTS `test`.`article`;
CREATE TABLE `test`.`article` (
`idArticle` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Name` varchar(45) NOT NULL DEFAULT '',
PRIMARY KEY (`idArticle`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `test`.`games`;
CREATE TABLE `test`.`games` (
`idGames` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL DEFAULT '',
PRIMARY KEY (`idGames`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `test`.`comments`;
CREATE TABLE `test`.`comments` (
`idComments` int(10) unsigned NOT NULL AUTO_INCREMENT,
`a_id` int(10) unsigned DEFAULT NULL,
`g_id` int(10) unsigned DEFAULT NULL,
`Comment` varchar(45) NOT NULL DEFAULT '',
PRIMARY KEY (`idComments`),
KEY `FK_Comments_1` (`a_id`),
KEY `FK_Comments_2` (`g_id`),
CONSTRAINT `FK_Comments_1` FOREIGN KEY (`a_id`) REFERENCES `article` (`idArticle`),
CONSTRAINT `FK_Comments_2` FOREIGN KEY (`g_id`) REFERENCES `games` (`idGames`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

insert into article values (1,'A1');
insert into comments values (1,1,null,'A1 comment')
insert into games values (1,'G1');
insert into comments values (1,null,1,'G1 comment')

select * from comments where a_id<>'NULL';

获取特定类型的评论

关于mysql - 基于另一列的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50327629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com