2016-12-30 82 views
0

目前,我正在创造一个新的Rails项目的数据库架构,我想正确的事情,所以我去问问!为命名的SQL表约定在某些情况下

试想一下:我有一张名为“”的文章“这些文章应该有标签。我现在要做的事情是相对简单的。创建一个名为“标签”另一个表和第三个叫“article_tags”。 每一篇文章和标签具有唯一的ID和“article_tags”是的映射表带来正确的文章id和标签ID一起。

表:

- articles 
- tags 
- article_tags (mapping) 

“问题” 我现在有是这样的:不仅物品具有标签也是我的 “用户”(另一个表)。这些标签必须位于两个不同的表格中,这会导致一些非常奇怪的命名。

表:

- articles 
- article_tags (no mapping) 
- article_article_tags (mapping???) 

- users 
- user_tags (no mapping) 
- user_user_tags (mapping???) 

你有什么(一般)建议如何提高这些表的命名因为你可以在上面看到没有让我非常开心...

+0

是标签同为文章和用户? –

+0

不,这就是为什么我需要两个表的标签:( – krebas

+0

,而不是重复的话,我会用复数形式为他们的第一个实例;像'articles_article_tags',直到你习惯它可能会觉得有点怪异它可以很容易地被理解为''articles'article_tags'“。...或者你可以有一个带tag的列表来指定”标签类型“ – Uueerdo

回答

1

我认为你可以使用polymorphic association做到这一点,是这样的:

class User 
    has_many :taggings, as: :taggable 
    has_many :tags, through: :taggings 
end 

class Article 
    has_many :taggings, as: :taggable 
    has_many :tags, through: :taggings 
end 

class Tagging 
    belongs_to :taggable, polymorphic: true 
    belongs_to :tag 
end 

class Tag 
end 

所以你只需要4个表格:用户,文章,标签,标签。

+0

嘿,谢谢你的帮助! – krebas