2010-05-14 50 views
1

對於每個廣告,我允許用戶最多選擇5個標籤。現在,在我的數據庫,我把它像...我應該使用哪兩種方式將標籤插入到mysql中?

Posting_id  TagID 
    5   1 
    5   2 
    5   3 
    6   5 
    6   1 

但我在想,如果我要使它像...

Posting_id  TagID 
    5    1 2 3 
    6    5 1 

然後第一個選項是非常容易的插入和檢索數據。但是,如果我有100個職位,每3個標籤,這是300行...所以很多更行

第二個選項需要使用爆炸()impode()等,但它是乾淨多了。

哪個選項我應該做的,爲什麼呢?謝謝!

編輯:第一種方式是更好!

回答

3

,因爲第二個選項使得很難指數TagID柱有效地使用第一個選項。如果您想要查詢您的數據是否存儲在TagID列中的特定數值(我打賭您會這樣做),那麼您會在第二個選項中獲得糟糕的性能。

+1

好的想法,我保持不變。 – ggfan 2010-05-14 03:34:52

2

就做了第一種方式。行很便宜,mysqsl可以處理數百萬行數百萬行的表。而且,這樣做的第一種方式是將ID保留爲整數,這可以使將來的表格更容易處理(例如,在進行連接和引用外鍵時)。

+0

是的,我沒有看到。第一種方法是計算標籤的數量會更容易。 – ggfan 2010-05-14 03:35:41

0

第一個。你會意識到,當你不得不「用這些標籤計算所有主題,而不是用這些標籤」。

+0

是啊,只是打我。謝謝! – ggfan 2010-05-14 03:37:06

0

第二種方法打破了數據庫規範化的第1章。

相關問題