2014-02-11 51 views
0

我正在建立一個視頻數據庫。
而你知道的視頻有很多標籤。每個標籤也與很多視頻有關。
SQL多對多關係解決方案:中間表還是xml查詢?

正常的解決方案是創建的每一個標籤和視頻之間的中間表記錄的關係。
剛纔,讓我驚訝的是,我瞭解了mysql可以查詢xml!所以我認爲我可以將視頻的所有標記保存到Video表中的一列。

但我想知道這樣做是否更有效率。

回答

2

XML非常適合存儲非結構化和結構化數據。 MySQL非常適合存儲結構化數據。這個數據是非結構化的嗎?聽起來像是一個簡單的多對多的關係。 XML也可以是性能殺手看到這個Performance of MySql Xml functions?

這是一個設計決策,並沒有硬性規定。我建議你測試兩種方法並作出明智的選擇。不過,我發現MySQL在解析XML時會更好地加入多對多的關係。

上次我檢查你無法索引XML。哦,然後有一件事你必須記住。膨脹... XML文檔可能會膨脹數據庫。例如,在關係設計中,您可以將標籤Kung Fu存儲一次,然後將該標籤與正確的電影相關聯。在XML方法中,您將潛在地存儲數千次的<tag>Kung Fu</tag>

在您的設計中,您想要將所有xml添加到一列中?這將是一個巨大的XML文檔,並且我願意在這一點上下注,從而嚴重影響性能。我在回家的路上想到了一點,如果你把所有的標籤放入一個XML列中,更新和讀取的爭用也將非常巨大,其中一個嚴重後果就是。如果您爲存儲帶有標籤的XML列的每部電影,都會獲得更好的性能。包含所有XML的一列將像擁有公主的地牢守護者一樣鎖定。

所以就像我說過的每個人都有自己的利弊。測試他們並學習新技能。