我有很多對象,每個對象都可以有很多不同類型的屬性。許多屬性重疊,例如,許多對象具有「名稱」屬性。 由於有很多類型的對象,如果爲每個具有相同屬性集的對象集構造一個表,它將佔用很多表。在數據庫中存儲對象
目前我使用的是一個mysql,它以這種方式存儲。
object_id|attribute_id|data
有幾個這樣的表,不同的表有不同類型的數據。 例如,在整數表中,它只存儲整數
因此,我可以將所有類型的對象存儲在系統中,並且仍然可以根據屬性的數據進行過濾和排序。它使查詢有點複雜,我不認爲它是有效的。
這是在mysql或其他關係數據庫中做的唯一方法嗎? 我應該嘗試爲這個問題找到其他數據庫模型嗎?
編輯 我做了一些研究,看來我需要的是一個具有SQL功能的面向文檔的數據庫。
MongoDB的另一個好處就是它可以直接適用於您的情況,因爲您可以擁有在一個集合中類似但不相同的所有不同類型的對象(類似於MySQL中的表)。如果您使用像Doctrine這樣的良好ORM,它甚至可以自動區分對象的類型,並在PHP中從數據庫加載它們時將它們轉換爲正確的對象。不知道你使用的是什麼語言,但我敢打賭,如果它不是PHP,就會有類似的東西。 – cjroth 2011-02-04 02:36:07