Mysql 文档管理系统的数据库结构是什么?

Mysql 文档管理系统的数据库结构是什么?,mysql,database,database-design,Mysql,Database,Database Design,我想存储一个文档,然后决定应用于该文档的工作流。 该工作流将要求用户对文档执行操作,并捕获实际执行的操作。 e、 g 什么样的数据库体系结构将支持这些任务?以下是支持您的应用程序的潜在体系结构的框架。它包含表的定义、表中的列以及每个表的一些示例数据。允许的交易有两个目的:在特定状态下为特定文档生成请求的操作;以及在将操作应用到数据库时验证操作 State Value (PK) Example Data Initial Authenticated Verified

我想存储一个文档,然后决定应用于该文档的工作流。 该工作流将要求用户对文档执行操作,并捕获实际执行的操作。 e、 g


什么样的数据库体系结构将支持这些任务?

以下是支持您的应用程序的潜在体系结构的框架。它包含表的定义、表中的列以及每个表的一些示例数据。允许的交易有两个目的:在特定状态下为特定文档生成请求的操作;以及在将操作应用到数据库时验证操作

State
  Value (PK)

  Example Data
    Initial
    Authenticated
    Verified
    Rejected
    Accepted

Flow
  Flow ID (PK)
  Description

  Example Data
    27,Authenticate and validate general document

Permitted Transition
  Current State (PK)(FK)
  Action Type (PK)(FK)
  Result State (PK)(FK)
  Flow ID (FK)

  Example Data
    Initial,Authenticate,Authenticated

Action Requested
  User (PK)(FK)
  Document (PK)(FK)
  Action Type (PK)(FK)

  Example Data
    Mr.X,2,Authenticate

Document
  Document ID
  Current State (FK)

  Example Data 
    2,Initial

Document Flow
  Document (FK)
  Flow (FK)

  Example Date
    2,27

User
  Name

  Example Data
    Mr.X
    Mr.Y
    Mr.Z

Action Type
  Value (PK)

  Example Data
    Authenticate
    Verify
    Reject
    Accept

Action
  Action Type (PK)(FK)
  User (PK)(FK)
  Document (PK)(FK) 

  Example Data
    Authenticate,Mr.X,2

工作流的架构受工作流是否具有分支的影响很大。如果所有工作流都是线性的,没有分支,那么问题就简单多了,因为工作流配置的定义只需要列出工作流中的步骤,文档工作流实例只需要记录当前步骤。如果涉及条件分支或并行步骤,则需要为这些步骤使用某种层次结构模型(例如,每个工作流配置步骤可以有一个指向父级的指针和指向子级的指针)。这些文件通常存储在XML中

没有分支的简单情况如下所示:

表:工作流配置(每个工作流一行)

  • 工作流配置id
  • 名字
  • 描述
表:工作流配置步骤(每个工作流步骤一行)

  • 工作流配置id
  • 步骤id
  • 名字
  • 描述
  • 行动计划
  • 参数(或上下文,或需要传递给操作启动器的任何信息)
表:文档工作流程(每个文档一行)

  • 文件id
  • 工作流id
  • 当前步骤id
  • 参数(或上下文,或需要从一个步骤传递到下一个步骤的任何信息)
表:文档\工作流程\步骤(对文档执行的每个操作对应一行)

  • 文件id
  • 步骤id
  • 地位
  • 时间戳

请注意,分支工作流需要在各个阶段之间传递更多的信息。事实上,“参数”属性可能需要位于单独的交联表中。我在这里只称它为字段,因为如果只需要很少的数据,您可以使用分隔符或XML表示。

谢谢您的回复。如果我想使用没有XML的分支,那么结构必须是什么。我们只需要将所有工作流保存在数据库中而不是XML中。好的,数据库字段可以保存XML,所以它们不是互斥的。如果需要简单的并行性(多个步骤同时运行),可以使用非唯一的步骤编号,让工作流在同一步骤同时启动每个工作流进程,并且在当前步骤的所有进程完成之前不继续下一个步骤编号。如果你需要条件分支,这完全取决于条件有多复杂,以及所有条件是二元、三元还是多元。它们是:documentable[DocId][DocName][DocType][DocLocation][uploadeby][DocStatus]PerId][DocId][UserId][SequenceNo][SubSequenceNo]CurrentStatusTable[][StatusId][SequenceNo][DocId]和DocHistoryTable[docisid][DocId][UserId][Operation][Comment]。这些是我正在使用的表。那么,你能告诉我我的结构中是否存在任何类型的缺陷吗?该操作仅接受或拒绝带有注释。我可以向你发送一个我根据上述数据库结构制作的用例。如果你给我你的emailId。你以前没有谈论过权限,所以我不知道你想用它做什么表。我喜欢用一个单独的表来记录竞争文档工作流的想法,这样保存活动文档工作流的表就可以保持很小。您实际上只需要其中的时间戳和结束状态。
State
  Value (PK)

  Example Data
    Initial
    Authenticated
    Verified
    Rejected
    Accepted

Flow
  Flow ID (PK)
  Description

  Example Data
    27,Authenticate and validate general document

Permitted Transition
  Current State (PK)(FK)
  Action Type (PK)(FK)
  Result State (PK)(FK)
  Flow ID (FK)

  Example Data
    Initial,Authenticate,Authenticated

Action Requested
  User (PK)(FK)
  Document (PK)(FK)
  Action Type (PK)(FK)

  Example Data
    Mr.X,2,Authenticate

Document
  Document ID
  Current State (FK)

  Example Data 
    2,Initial

Document Flow
  Document (FK)
  Flow (FK)

  Example Date
    2,27

User
  Name

  Example Data
    Mr.X
    Mr.Y
    Mr.Z

Action Type
  Value (PK)

  Example Data
    Authenticate
    Verify
    Reject
    Accept

Action
  Action Type (PK)(FK)
  User (PK)(FK)
  Document (PK)(FK) 

  Example Data
    Authenticate,Mr.X,2