Mysql

對於一對一的關係表,是否值得將列分成多個表

  • February 14, 2020

我需要對數據庫結構做出決定,是否將一對一的關係列分成多個表並與一個關係 ID 連結,或者只是將所有列添加到一個表中。

列數約為 45,我需要對不同查詢的不同列上的數據進行排序(每個查詢一個排序)。

我將使用 MyISAM 儲存引擎。

此外,表中將有數百萬條數據。

在決定是否拆分錶格時要考慮的另一件事是如果將它們全部放在一個表格中,表格的寬度。許多數據庫將允許您定義一個表,其中所有欄位的總長度大於允許的總記錄長度。但是,您不能將數據放入超過寬度的記錄中。因此,如果您超出限制,拆分錶可能是明智之舉。此外,大多數數據庫可以在寬度較小的表中更有效地儲存和檢索數據。因此,如果您要拆分的欄位並不總是會使用原始表中的欄位進行查詢,並且表會很大,那麼拆分錶可能符合您的最佳利益。

另一件要考慮的事情是,如果您現在處於 1-1 關係中,您是否有可能或可能希望稍後更改為 1-many?例如,假設您要移出的欄位是地址欄位。也許現在您只需要一個地址,但是將它們放在單獨的表中會使以後擁有多個地址變得容易得多。

如果拆分錶,請確保在 FK 上定義唯一索引以保留一對一關係。

如果關係是一對一的,那聽起來就像在兩個方向上都存在函式依賴關係,即列代表給定項目的資訊片段。

在您的概念模型中,您有實體,列表示屬於這些實體的資訊。在我看來,除非有非常明顯的理由將資訊分成不同的實體,否則這些列應該在同一個表中

引用自:https://dba.stackexchange.com/questions/43841