Mysql

需要幫助設計數據庫,在表中創建具有附加列/欄位的表,或者為每種不同類型創建一個新表?

  • April 7, 2021

因此,我擁有的表是 Certificates、Approvers、CertificatesApprovers、Categories、Approvees、Status、AdditionalFields、AdditionalFieldsValues。

許多證書與許多批准者的關係。

1 類別到許多證書的關係。

1 類別到許多 AdditionalFields 關係

1 AdditionalFields 到許多 AdditionalFieldsValues 關係

如果有不同類型的證書具有不同的欄位/列,我應該為每種類型的證書創建一個不同的唯一表還是只在證書表中添加其他欄位/列(但某些條目將為空白)?

例如,MedicalCertificate 將具有欄位 Specialization,而 DrillCertificate 將具有欄位 DrillType。

證書表

或者

醫療證書表

我更喜歡你的第二個選項,因為它比第一個選項更規範化,但更好的規範化是有一個包含Certificates公共欄位的表,ID然後是一個通用輔助表來儲存中不常見的領域。ApproveeID``ValidFrom``ValidUntil``StatusID

例如,可以使用、、、、、等CertificatesAdditionalInfo欄位呼叫輔助表。資訊欄位可以為空,因此它們很靈活。ID``CertifcateID``Info1Name``Info1Value``Info2Name``Info2Value

以這種方式實現它意味著您只需要一個表來儲存 的主要數據Certifcates,這將導致更少的數據重複,更好的長期可維護性,並可能提高性能。另外請選擇比我更好的表名和列名(儘管列名應該是通用的),因為我不擅長命名。🙂

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