我有許多非常類似的數據類型,除了少數邏輯上具有不同名稱(但數據類型相同)的列以外。我想把所有東西都放在一張桌子上。SQL:一個表,不同名稱的列?
現在我的想法很簡單,就是提供一個通用名稱的一些列(如「custom_data_1」等),並在不同的表記爲每個數據類型什麼的列名。這應該可行,但我想知道是否有更結構化的方式(這將使查詢更容易,並且會感覺不太髒)來達到相同的效果(在MySQL或SQLite中)。
我有許多非常類似的數據類型,除了少數邏輯上具有不同名稱(但數據類型相同)的列以外。我想把所有東西都放在一張桌子上。SQL:一個表,不同名稱的列?
現在我的想法很簡單,就是提供一個通用名稱的一些列(如「custom_data_1」等),並在不同的表記爲每個數據類型什麼的列名。這應該可行,但我想知道是否有更結構化的方式(這將使查詢更容易,並且會感覺不太髒)來達到相同的效果(在MySQL或SQLite中)。
如果要存儲不同的東西,你應該將它們存儲在不同的表。然後,您可以創建一個視圖來獲得容易查詢的內容。
的好處是,每個表都有其自己的對象,你可以輕鬆地添加/刪除/重命名列吧。如果你的類型1需要2個額外的列,但是type2實際上丟失了一列呢?
如果有尖叫的SQL VIEW的情況下,我沒有看到一個比這更好的。假設你的SQL後端支持他們(我相信所有值得他們的鹽的人都會這樣做)。
最佳實踐建議有一個規範化的表結構來寫容易閱讀/使用SQL The Three Normal Forms - MySQL
確保您的列名是描述性的,以他們將被用於,例如userid
不能說是custom_data_1
。如果你創建一個新表並且需要引用userid,它應該很容易作爲外鍵鏈接。
你可以存儲在一個表中的一切,但是結構查詢語言是否有做到這一點 - 整合來自不同的表(優化和正確創建)數據到一個視圖中。隨着數據的增長,要考慮的重要事情是可擴展性和可維護性。
考慮MySQL的最佳實踐 - Top 20+ MySQL Best Practices
你的意思是這樣[實體 - 屬性 - 值模型(http://stackoverflow.com/questions/12278025/sql -one-table-different-names-for-columns) –
您的邏輯數據庫模型應該依賴於概念模型(由業務邏輯定義)+技術輔助實體。看起來像你要構建一些可怕的東西,並使你的業務邏輯依賴於db模型。這不是一種方法。另外,閱讀關於數據庫規範化。 –