How can I implement inheritance for likes with different categories in Objection.js?










0















Im trying to implement a database design using Objection.js but I don't know how to define an inheritance relationship with multiple categories that are mutually exclusive.



The case in question is as follows: I want to implement likes for posts, comments, and replies. As far as I know, "The most extensible solution is to have just one "base" table, and "inherit" all other tables from it." as stated in another SO question. The idea is to link a like to an entity and for an entity to be either a post, comment or another entity.



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


In Objection.js you implement a relationship as follows:



class Entity extends Model 
static tableName = 'entities';

static relationMappings =
Post:
relation: Model.HasOneRelation,
modelClass: Like,
join:
from: 'post.id',
to: 'like.postId'






However if a do that I don't know how to define that it can be also comment or reply. Not only Post.



Is there a way to archive this? If not, should I use another JS library? Should I change my schema to make it work with Objection.js?



Relevant links:



Implementing Comments and Likes in database



http://vincit.github.io/objection.js/#relations










share|improve this question



















  • 1





    Hi. What is relevant in your links to your design & problem and in what way? Please include everything necessary to a question in it, with anything that is expressible as text as text, and connect it to the rest of your question. (Don't expect readers to go elsewhere or to read a lot then guess what is applicable & why.) What would you like to do in terms of SQL or design (preferably in text not diagram) & what is the problem with "state a single table to join" in terms of if? See also How can you represent inheritance in a database?.

    – philipxy
    Nov 12 '18 at 20:38












  • Thanks for the feedback! I made some changes that I think made it better.

    – tlalco
    Nov 12 '18 at 22:10






  • 1





    You don't actually say what is a subtype of what. Also "where you can only choose one" is not clear. (Maybe you are trying to say that the subtypes are mutually exclusive.) Use enough words & sentences to clearly say what you mean. If you know some design method like ER or if you know the relational model or SQL it would be helpful if you described the tables & "relationships" (FKs) you would like. (If not, time to read a textbook on information modeling, the relational model & database design.) (A manual for a design tool, api or language to record designs is not a manual/tutorial on design.)

    – philipxy
    Nov 12 '18 at 22:33












  • Added table definitions and relations.

    – tlalco
    Nov 13 '18 at 5:07















0















Im trying to implement a database design using Objection.js but I don't know how to define an inheritance relationship with multiple categories that are mutually exclusive.



The case in question is as follows: I want to implement likes for posts, comments, and replies. As far as I know, "The most extensible solution is to have just one "base" table, and "inherit" all other tables from it." as stated in another SO question. The idea is to link a like to an entity and for an entity to be either a post, comment or another entity.



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


In Objection.js you implement a relationship as follows:



class Entity extends Model 
static tableName = 'entities';

static relationMappings =
Post:
relation: Model.HasOneRelation,
modelClass: Like,
join:
from: 'post.id',
to: 'like.postId'






However if a do that I don't know how to define that it can be also comment or reply. Not only Post.



Is there a way to archive this? If not, should I use another JS library? Should I change my schema to make it work with Objection.js?



Relevant links:



Implementing Comments and Likes in database



http://vincit.github.io/objection.js/#relations










share|improve this question



















  • 1





    Hi. What is relevant in your links to your design & problem and in what way? Please include everything necessary to a question in it, with anything that is expressible as text as text, and connect it to the rest of your question. (Don't expect readers to go elsewhere or to read a lot then guess what is applicable & why.) What would you like to do in terms of SQL or design (preferably in text not diagram) & what is the problem with "state a single table to join" in terms of if? See also How can you represent inheritance in a database?.

    – philipxy
    Nov 12 '18 at 20:38












  • Thanks for the feedback! I made some changes that I think made it better.

    – tlalco
    Nov 12 '18 at 22:10






  • 1





    You don't actually say what is a subtype of what. Also "where you can only choose one" is not clear. (Maybe you are trying to say that the subtypes are mutually exclusive.) Use enough words & sentences to clearly say what you mean. If you know some design method like ER or if you know the relational model or SQL it would be helpful if you described the tables & "relationships" (FKs) you would like. (If not, time to read a textbook on information modeling, the relational model & database design.) (A manual for a design tool, api or language to record designs is not a manual/tutorial on design.)

    – philipxy
    Nov 12 '18 at 22:33












  • Added table definitions and relations.

    – tlalco
    Nov 13 '18 at 5:07













0












0








0








Im trying to implement a database design using Objection.js but I don't know how to define an inheritance relationship with multiple categories that are mutually exclusive.



The case in question is as follows: I want to implement likes for posts, comments, and replies. As far as I know, "The most extensible solution is to have just one "base" table, and "inherit" all other tables from it." as stated in another SO question. The idea is to link a like to an entity and for an entity to be either a post, comment or another entity.



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


In Objection.js you implement a relationship as follows:



class Entity extends Model 
static tableName = 'entities';

static relationMappings =
Post:
relation: Model.HasOneRelation,
modelClass: Like,
join:
from: 'post.id',
to: 'like.postId'






However if a do that I don't know how to define that it can be also comment or reply. Not only Post.



Is there a way to archive this? If not, should I use another JS library? Should I change my schema to make it work with Objection.js?



Relevant links:



Implementing Comments and Likes in database



http://vincit.github.io/objection.js/#relations










share|improve this question
















Im trying to implement a database design using Objection.js but I don't know how to define an inheritance relationship with multiple categories that are mutually exclusive.



The case in question is as follows: I want to implement likes for posts, comments, and replies. As far as I know, "The most extensible solution is to have just one "base" table, and "inherit" all other tables from it." as stated in another SO question. The idea is to link a like to an entity and for an entity to be either a post, comment or another entity.



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


In Objection.js you implement a relationship as follows:



class Entity extends Model 
static tableName = 'entities';

static relationMappings =
Post:
relation: Model.HasOneRelation,
modelClass: Like,
join:
from: 'post.id',
to: 'like.postId'






However if a do that I don't know how to define that it can be also comment or reply. Not only Post.



Is there a way to archive this? If not, should I use another JS library? Should I change my schema to make it work with Objection.js?



Relevant links:



Implementing Comments and Likes in database



http://vincit.github.io/objection.js/#relations







javascript postgresql database-design objection.js






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 13 '18 at 5:05







tlalco

















asked Nov 12 '18 at 17:22









tlalcotlalco

486




486







  • 1





    Hi. What is relevant in your links to your design & problem and in what way? Please include everything necessary to a question in it, with anything that is expressible as text as text, and connect it to the rest of your question. (Don't expect readers to go elsewhere or to read a lot then guess what is applicable & why.) What would you like to do in terms of SQL or design (preferably in text not diagram) & what is the problem with "state a single table to join" in terms of if? See also How can you represent inheritance in a database?.

    – philipxy
    Nov 12 '18 at 20:38












  • Thanks for the feedback! I made some changes that I think made it better.

    – tlalco
    Nov 12 '18 at 22:10






  • 1





    You don't actually say what is a subtype of what. Also "where you can only choose one" is not clear. (Maybe you are trying to say that the subtypes are mutually exclusive.) Use enough words & sentences to clearly say what you mean. If you know some design method like ER or if you know the relational model or SQL it would be helpful if you described the tables & "relationships" (FKs) you would like. (If not, time to read a textbook on information modeling, the relational model & database design.) (A manual for a design tool, api or language to record designs is not a manual/tutorial on design.)

    – philipxy
    Nov 12 '18 at 22:33












  • Added table definitions and relations.

    – tlalco
    Nov 13 '18 at 5:07












  • 1





    Hi. What is relevant in your links to your design & problem and in what way? Please include everything necessary to a question in it, with anything that is expressible as text as text, and connect it to the rest of your question. (Don't expect readers to go elsewhere or to read a lot then guess what is applicable & why.) What would you like to do in terms of SQL or design (preferably in text not diagram) & what is the problem with "state a single table to join" in terms of if? See also How can you represent inheritance in a database?.

    – philipxy
    Nov 12 '18 at 20:38












  • Thanks for the feedback! I made some changes that I think made it better.

    – tlalco
    Nov 12 '18 at 22:10






  • 1





    You don't actually say what is a subtype of what. Also "where you can only choose one" is not clear. (Maybe you are trying to say that the subtypes are mutually exclusive.) Use enough words & sentences to clearly say what you mean. If you know some design method like ER or if you know the relational model or SQL it would be helpful if you described the tables & "relationships" (FKs) you would like. (If not, time to read a textbook on information modeling, the relational model & database design.) (A manual for a design tool, api or language to record designs is not a manual/tutorial on design.)

    – philipxy
    Nov 12 '18 at 22:33












  • Added table definitions and relations.

    – tlalco
    Nov 13 '18 at 5:07







1




1





Hi. What is relevant in your links to your design & problem and in what way? Please include everything necessary to a question in it, with anything that is expressible as text as text, and connect it to the rest of your question. (Don't expect readers to go elsewhere or to read a lot then guess what is applicable & why.) What would you like to do in terms of SQL or design (preferably in text not diagram) & what is the problem with "state a single table to join" in terms of if? See also How can you represent inheritance in a database?.

– philipxy
Nov 12 '18 at 20:38






Hi. What is relevant in your links to your design & problem and in what way? Please include everything necessary to a question in it, with anything that is expressible as text as text, and connect it to the rest of your question. (Don't expect readers to go elsewhere or to read a lot then guess what is applicable & why.) What would you like to do in terms of SQL or design (preferably in text not diagram) & what is the problem with "state a single table to join" in terms of if? See also How can you represent inheritance in a database?.

– philipxy
Nov 12 '18 at 20:38














Thanks for the feedback! I made some changes that I think made it better.

– tlalco
Nov 12 '18 at 22:10





Thanks for the feedback! I made some changes that I think made it better.

– tlalco
Nov 12 '18 at 22:10




1




1





You don't actually say what is a subtype of what. Also "where you can only choose one" is not clear. (Maybe you are trying to say that the subtypes are mutually exclusive.) Use enough words & sentences to clearly say what you mean. If you know some design method like ER or if you know the relational model or SQL it would be helpful if you described the tables & "relationships" (FKs) you would like. (If not, time to read a textbook on information modeling, the relational model & database design.) (A manual for a design tool, api or language to record designs is not a manual/tutorial on design.)

– philipxy
Nov 12 '18 at 22:33






You don't actually say what is a subtype of what. Also "where you can only choose one" is not clear. (Maybe you are trying to say that the subtypes are mutually exclusive.) Use enough words & sentences to clearly say what you mean. If you know some design method like ER or if you know the relational model or SQL it would be helpful if you described the tables & "relationships" (FKs) you would like. (If not, time to read a textbook on information modeling, the relational model & database design.) (A manual for a design tool, api or language to record designs is not a manual/tutorial on design.)

– philipxy
Nov 12 '18 at 22:33














Added table definitions and relations.

– tlalco
Nov 13 '18 at 5:07





Added table definitions and relations.

– tlalco
Nov 13 '18 at 5:07












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53267122%2fhow-can-i-implement-inheritance-for-likes-with-different-categories-in-objection%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53267122%2fhow-can-i-implement-inheritance-for-likes-with-different-categories-in-objection%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

How do I collapse sections of code in Visual Studio Code for Windows?

ャフサォクコ ケウ,コ,ワ メ,ロスョノ゙,クネ,フムカヤヲニ,エコ゚ツ ウイオン゙ケワサネォキモュキォウイノンコチ゚メヌナイゥフュ,カヒウネェ ネ,ホノケ,ムュキ ッボーミュハ,チ ツス ィ メウイマヤ,゙ウチ ヅ ロ,ォジヌェ ャヌット ェ,マャ,チナエヒネソキツテ トホヲヲミーァ