我正在尝试使用Objection.js实现数据库设计,但是我不知道如何定义具有互斥的多个类别的继承关系。
有问题的情况如下:我想对帖子,评论和回复实施赞。据我所知,“最可扩展的解决方案是只具有一个“基础”表,并从其“继承”所有其他表。”如另一个SO问题中所述。想法是将“赞”链接到一个实体,并使一个实体成为帖子,评论或另一个实体。
User
id PK int
name string
Entity
id PK int
Like
userId int Fk >- User.id
entityId int Fk >- Entity.id
Article
id PK int Fk >- Entity.id
author int FK >- User.id
title string
text string
Comment
id PK int Fk >- Entity.id
articleId int FK >- Article.id
authorId int FK >- User.id
text string
--There can be more entities like reply, image, etc
在Objection.js中,您实现了如下关系:
class Entity extends Model {
static tableName = 'entities';
static relationMappings = {
Post: {
relation: Model.HasOneRelation,
modelClass: Like,
join: {
from: 'post.id',
to: 'like.postId'
}
}
}
}
但是,如果我不知道如何定义它,也可以发表评论或回复。不只是帖子。
是否可以存档?如果没有,我应该使用另一个JS库吗?我是否应该更改架构以使其与Objection.js一起使用?
相关链接: