假设我有一个类似于Instagram的社交网络应用程序。对于我的数据库模式,我将执行以下操作:
CREATE TABLE `likes` (
`like_id` int PRIMARY KEY AUTO_INCREMENT,
`user_id` int,
`type` ENUM ('POST', 'COMMENT'),
`target_id` int
);
其中target_id是指向特定帖子或特定评论的外键。将帖子和评论喜欢合并到单个表中并按ENUM类型区分它们的设计不好吗?最好创建两个没有区别的表:commentLikes和postLikes?
[请记住,我将来确实会预见到,他们可能会向应用程序添加更多他们喜欢的功能,例如物品或食谱等
您的方法很好。不幸的是,您要执行的操作在SQL中并不简单。理想情况下,您希望在target_id
和它引用的表之间具有外键关系。对于您的结构,这是不可能的。
但是,您的方法确实具有简洁的优点-在表定义和基础表布局中均如此。代价是无法声明外键关系。