Mysql

為具有 40 個屬性的實體設計模式

  • November 2, 2019

我對在 MySQL 中為我目前的項目設計模式有疑問。

主要是因為我做了一個實體,有40個屬性。

表/實體 X 包含以下欄位:個人資訊集合、物理屬性(例如頭髮顏色、眼睛顏色、身高等),主要是少於 10 個字元的 varchar。

問題是:我應該將屬性分解到另一個表中,還是讓它保留在一個表 X 中,並帶有所有這 40 個屬性?

擁有 40 列的表不是問題。如果沒有屬性的並發更新,問題只會提出這些屬性是如何更新的。否則會出現鎖定問題。

設計:功能依賴應該是一個指南,以確保所有 40 個屬性都是同一個實體:

  • 您的實體必須有一個標識符
  • (所有屬性必須是原子的)
  • 所有其他屬性必須在功能上依賴於標識符

換句話說:對於標識符的唯一值(出現),您必須獲得每個其他屬性的唯一值。

如果沒有,你應該打破你的實體。

20 年前,我對產品及其特性(100 或更多)有同樣的問題。以下是我使用的解決方案:

  • 產品(idp,…重要/常用屬性)(idp)PK
  • 特徵(idc、標題、數據類型):(idc)PK
  • ProductCaracteristics (idp, idc, numeric value, string value), (idp, idc) PK, (idp) FK to Product, (idc) FK to Caracteristics

它是不斷發展的,但需要更多的數據空間。

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