2016-12-30 56 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