因为基本上任何东西下都可能有注解,所以我不确定如何将关系转换到我的数据库设计模式中。
CREATE TABLE comments (
id INT(11) NOT NULL PRIMARY KEY,
content TEXT NOT NULL,
authorId INT(11) NOT NULL,
FOREIGN KEY(authorId) REFERENCES users(id)
);
如您所见,注解通过在数据集中存储作者的id,也确实与users表有关系。但是,评论本身可以在post或video下,这是两个独立的表。我的问题是:我应该为这两种关系(video\u comments和post\u comments)创建一个连接表,还是以其他方式创建连接表。此外,应该有一个对删除级联约束,这将导致一个视频,这是被删除,也删除了有关它的评论。
2条答案
按热度按时间fbcarpbf1#
我想你可以创造
commentable_id
以及commentable_type
让您知道此id属于哪个表作为此部分此外,应该有一个对删除级联约束,这将导致一个视频,这是被删除,也删除了有关它的评论
我不知道如何做到这一点,我想如果我是在你的立场,我会处理它使用的代码之前,我删除一个视频,我会检查是否有任何评论,并删除它。
wgx48brx2#
以下是您可能需要考虑的另一种方法:
添加一个名为“itme\u id”或类似的列来存储视频\u id或post\u id
创建
for/after delete triggers
在video和post表上,使用magic表中的信息删除触发器内的comment表。这样,您就不必创建一个新表或坚持使用cascade。这只是我的假设,请让我知道这是否对你有意义。