Mysql

這是整合規範化的正確方法嗎?

  • November 29, 2020

我正試圖圍繞規範化。這是用這些數據創建數據庫的正確方法嗎?例如,使用外鍵而不是僅僅重複 AAPL 更有效嗎?

這將是公司簡介,每個公司都有外鍵

這是公司表

這是包含所有數據的表。例如顯示了幾列,但會有另外 30 列左右。每家公司都會有 20 年左右的數據。CompanyID 連結到 Company Profile 表的外鍵。 在此處輸入圖像描述

謝謝!非常感謝任何提示

規範化表格有三個很好的理由。

  1. 它最大限度地減少了數據的冗餘。在您的範例中,AAPL 不需要對其在主數據表中所屬的每條記錄重複。它僅存在於 CompanyProfile 表中的一條記錄中。
  2. 如您所見,您的主數據表中的 CompanyID 是重複的,這沒關係,重複整數比重複文本字元串(如 AAPL)要輕得多。所以這裡有性能提升。
  3. 如果您沒有進行規範化,而是將 CompanyName 重複儲存在主數據表中,並且某天公司更改了它的名稱,那麼您必須更新主數據表中的每一行以修復 CompanyName。但是將其規範化到自己的表中意味著您只需要在一行中更改 CompanyName。從維護的角度來看,這不僅更好,而且效率也更高。

*也只是一個旁注,但您的 CompanyProfile 表可能不需要該 ForeignKey 列。它有一個 PrimaryKey 列,該列本身是唯一的(與主數據表中的 PrimaryKey 列無關)。您可以將 CompanyId 上的主數據表與 CompanyProfile 的 PrimaryKey 列建立外鍵關係(這通常是人們設計表的方式)。

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