数据库规范化如何规范审批/状态

时间:2018-05-20 13:21:57

标签: sql-server database-design database-normalization

我正在学习正常化并且有些混乱。我在桌子上工作。 请求表。

  • 的requestId
  • requestedby
  • requestdate
  • approver1
  • approver1_additionalinfo
  • approval1_dateapproved
  • approval1_status(拒绝/批准)
  • approver2
  • approver2_additionalinfo(关于请求)
  • approval2_dateapproved
  • approval2_status(拒绝/批准)

根据数据库规范化,应该将不直接相关的字段分开,以便我将批准放在单独的表中。(如果我错了,请纠正我)

表名:Approval1

  1. ApprovalID
  2. 请求ID
  3. ApproverID
  4. DateApproved
  5. AdditionalInfo(type int)
  6. 状态(拒绝/批准)
  7. 表名:Approval2

    1. ApprovalID
    2. 请求ID
    3. ApproverID
    4. DateApproved
    5. AdditionalInfo(type nvarchar)
    6. 状态(拒绝/批准)
    7. 基于此设计,有关请求的信息将在3个表上,并且需要更多联接才能进行查询。它可能会影响性能。

      最佳方法是什么?

      希望有人在此赐教。感谢

1 个答案:

答案 0 :(得分:0)

1)摆脱approver_1等,然后将其移到另一张桌子上。这是标准化101。

2)如果只需要值的副本,请使用SQL Server时态表来维护更改历史记录。如果您需要工作流程类型的东西,那么您可能需要一个新表格,但如果没有完整的要求,很难说清楚。

相关问题