我正在为我的公司构建业务应用程序,并努力为特定情况选择最合适的数据库设计。假设我有以下实体:
批准书
- ID
- 状态
- ...
批准评论
- ID
- ApprovalId
- 评论
订购
- ID
- ...
发票
- ID
- ...
显然,可能存在多种类型的批准和多个需要批准的对象。设计表时,以下选项中最合适的是:
选项1
有一个带有空外键的批准表:
批准书
- 编号PK
- 状态
- OrderId FK NULL
- InvoiceId FK NULL
批准意见
- 编号PK
- ApprovalId FK
- 评论
在这种情况下,我必须为每个需要批准的对象添加一列
选项2
有一个带有公共字段的父审批表,以及每个需要审批的对象的子表:
批准书
- 编号PK
- 状态
批准意见
- 编号PK
- ApprovalId FK
- 评论
订单批准
- ApprovalId PK FK
- OrderId FK
发票审批
- ApprovalId PK FK
- InvoiceId FK
选项3
每个对象都有一个批准表:
订单批准
- 编号PK
- OrderId FK
- 状态
订单批准评论
- 编号PK
- OrderApprovalId FK
- 评论
发票审批
- 编号PK
- InvoiceId FK
- 状态
发票审批注释
- 编号PK
- InvoiceApprovalId FK
- 评论
我知道这些都是有效的解决方案,但是我无法确定哪种解决方案将来最好添加不同类型的批准。有什么想法吗?