Foreign-Key
以數組格式保存引用
我有一個
orders
桌子和products
桌子的設計。每個訂單可以有很多產品,所以 1 訂單 N 個產品。預設設計是這樣的:
訂單表
order_id, product_id
產品表
product_id, product_name, value
因為每個訂單都會有很多產品,所以我會有很多行只針對一個訂單,例如
order_id = 1, product_id = 1 order_id = 1, product_id = 2 order_id = 1, product_id = 3
我想保存多行的創建,並以 CSV 方式儲存 product_ids,例如:
order_id = 1, product_ids = 1,2,3
該表如下所示:
新更新的訂單表,區別在於 product_ids 現在是一個 VARCHAR,它將保存許多用逗號分隔的 id。
order_id, product_ids
如果是這樣,我該如何建立關係?我無法將 product_id 連結到參考 product_ids,因為它不匹配。我如何建立這種關係?
我可以使用哪些其他優點和缺點或技術來實現我正在嘗試的目標?
您建議的設計違反了第一範式,該範式規定每個屬性都必須是原子的。如果您將多個項目儲存為 CSV 字元串,那麼稍後查詢它會遇到許多挑戰。你也不能有效地索引它,當然你也不能強制引用完整性。
訂單通常儲存在訂單表中,其中包含與訂單相關的屬性,例如訂單日期和客戶。Order items 是一個不同的實體,應該建模為一個 order items 表,它的 key 應該是一個由 order ID 和 item 標識符組成的複合鍵。
遵循久經考驗的設計,不要試圖重新發明輪子,絕對不要違反第一範式。有很多很好的理由。