我目前正在为一个新的Rails项目创建数据库模式,我想做对的事情,所以我最好问一下!
想象一下:我有一个名为“ articles”的表,这些文章应带有标签。我现在要做的事情相对简单。创建另一个名为“ tags”的表,以及第三个名为“ 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???)
您是否有任何(一般)技巧来改进这些表的命名,因为您在上面看到的内容并不会让我感到非常高兴...
最佳答案
我认为您可以使用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个表:用户,文章,标签,标签。
关于mysql - 在某些情况下SQL表的命名约定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41402811/