在某些情况下SQL表的命名约定

时间:2016-12-30 21:16:41

标签: mysql sql ruby-on-rails naming-conventions

我目前正在为新的Rails项目创建数据库架构,我希望事情正确,所以我最好问一下!

想象一下:我有一张名为" 文章"这些文章应该有标签。我现在要做的事情相对简单。创建另一个名为" 标签"的表格第三个叫做" 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???)

您是否有任何(一般)提示如何改进这些表格的命名,因为您在上面看到的内容并不能让我感到非常高兴......

1 个答案:

答案 0 :(得分: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个表:用户,文章,标签,标签。