2017-06-13 161 views
2

我想實現標籤系統silimar到其中一個StackOverflow上了。很顯然,我已閱讀過多篇文章,包括answer實現標籤系統與多發表

不過我的情況是標籤可以由用戶以更高的特權不僅創造有點不同

  • 會有限制量(任何人都可以分配有一個標籤)。這不包括選項#1(從上面鏈接的SO問題,每個標記直接插入表tags列,然後查詢與LIKE)我猜
  • 也有多個表中的數據庫可以標記(目前是五個)

尤其是第二標準,使得它更難所以這些都是我的想法

  • 我可以按照選項#3,具有表tags和具有M:N每個表的關係。然而,這將使搜索更難(想象加入,如果表數量的增加),也是我需要告訴其表(應用模塊)的標籤相匹配的搜索結果
  • 我可以使用某種多態的,但我非常新到這個關於數據庫的概念,那麼這是否適合這個問題呢?

我使用PostgreSQL的最新版本。感謝您的任何提示

+0

發佈選項。 –

+0

它在我已經鏈接的問題 –

+0

如果這個問題是一樣的,應該關閉。否則,問題的所有元素都應該在問題中。 –

回答

1

既然你使用PostgreSQL,你有一些字段類型,其不能用於其他數據庫的選項。特別是數組和JSON字段。我做了一些a blog post中的各種方法的性能比較。對於需要組合多個標籤的任何搜索,數組和JSONB絕對比標籤表更好。

鑑於此,我建議創建要在其上有標記每個表標籤欄,數組或一個JSONB列,這取決於。如果你需要搜索多個表,我會建議一個UNION查詢,而不是一個單一的單一標籤表連接到一切。

+0

我想過這個問題,但不會影響UNION性能提升不少,同時做了情侶對錶? –

+0

只有當你打算將結果與別的東西結合起來。由於你正在整理5個表格,你必須要UNION * something *。 – FuzzyChef