我們的MySql數據庫中的大多數表不是EAV tables。我一直在閱讀SQL反模式,並試圖確定重新設計此表的最佳方式。我知道我們會喜歡在春季表格中更容易引用的好處以及更好的數據完整性。如何重新設計EAV表
EAV table有可能帶有費用的可選屬性。在代碼中,現在有55個選項,該數字不斷增長。每項費用的平均屬性數量爲2.719,最多的單項費用爲39項屬性。
在這種情況下,創建一個包含55個選項的表格是否理想,或者下一個必須維持桌面大小的下一個人嗎?
我們的MySql數據庫中的大多數表不是EAV tables。我一直在閱讀SQL反模式,並試圖確定重新設計此表的最佳方式。我知道我們會喜歡在春季表格中更容易引用的好處以及更好的數據完整性。如何重新設計EAV表
EAV table有可能帶有費用的可選屬性。在代碼中,現在有55個選項,該數字不斷增長。每項費用的平均屬性數量爲2.719,最多的單項費用爲39項屬性。
在這種情況下,創建一個包含55個選項的表格是否理想,或者下一個必須維持桌面大小的下一個人嗎?
這聽起來像是查看document-oriented storage作爲替代(非SQL)設計的好時機,其中EAV三元組可以存儲爲例如JSON數據在MongoDB。您沒有爲此定義模式,因此查詢語法與SQL不同,但在某些情況下它可能更加強大。例如,我最近看到一篇演示文稿,介紹如何使用這種設置來使用RDF進行存儲,然後形成一個支持其他服務的整個負載的公共層。 REST,webservices,XMLRPC等等。顯然,這些數據都是標準化的。
請參閱this question瞭解更多關於這是否是一個好主意的更多想法。
感謝您的建議和鏈接。在我們的模式中,使用非SQL數據庫是否是一個好主意?這對ORM是否合適? – 2012-03-21 18:38:50
看起來我們會嘗試使用REST來獲取字段。謝謝! – 2012-05-01 16:20:07
如果您注意到只有某些選項的子集合纔有意義,那麼您可以使用多種表格繼承形式之一將它們重構爲子表格。 – Hiro2k 2012-03-21 15:09:22
謝謝,我已經考慮過這個問題,但每次我開始執行一項艱鉅的任務時,因爲有太多費用類型可能包含或不包含字段。我可能不得不坐下來寫下來看看它是否會運行良好。 – 2012-03-21 18:39:51