Mysql
這是整合規範化的正確方法嗎?
我正試圖圍繞規範化。這是用這些數據創建數據庫的正確方法嗎?例如,使用外鍵而不是僅僅重複 AAPL 更有效嗎?
這將是公司簡介,每個公司都有外鍵
這是包含所有數據的表。例如顯示了幾列,但會有另外 30 列左右。每家公司都會有 20 年左右的數據。CompanyID 連結到 Company Profile 表的外鍵。
謝謝!非常感謝任何提示
規範化表格有三個很好的理由。
- 它最大限度地減少了數據的冗餘。在您的範例中,AAPL 不需要對其在主數據表中所屬的每條記錄重複。它僅存在於 CompanyProfile 表中的一條記錄中。
- 如您所見,您的主數據表中的 CompanyID 是重複的,這沒關係,重複整數比重複文本字元串(如 AAPL)要輕得多。所以這裡有性能提升。
- 如果您沒有進行規範化,而是將 CompanyName 重複儲存在主數據表中,並且某天公司更改了它的名稱,那麼您必須更新主數據表中的每一行以修復 CompanyName。但是將其規範化到自己的表中意味著您只需要在一行中更改 CompanyName。從維護的角度來看,這不僅更好,而且效率也更高。
*也只是一個旁注,但您的 CompanyProfile 表可能不需要該 ForeignKey 列。它有一個 PrimaryKey 列,該列本身是唯一的(與主數據表中的 PrimaryKey 列無關)。您可以將 CompanyId 上的主數據表與 CompanyProfile 的 PrimaryKey 列建立外鍵關係(這通常是人們設計表的方式)。