Database design 设计具有复杂依赖关系的数据库?(与日程安排有关)

Database design 设计具有复杂依赖关系的数据库?(与日程安排有关),database-design,scheduled-tasks,Database Design,Scheduled Tasks,我正在寻求设计一个数据库来存储一些复杂依赖项的信息,并且可以真正使用正确方向上的一个点。我的谷歌搜索没有发现任何相关信息,但也许你有一个很棒的网络链接 为了提供上下文,它围绕着作业调度,并将提供分析。不,我不想创建作业调度程序 关于数据的一些注释 数据可以是递归的。作业C依赖于作业B,作业B依赖于作业A 可能存在一对多依赖关系:作业C可能依赖于作业B1和作业B2 可能存在复杂的依赖关系:作业C可能依赖于(作业B1或作业B2)和作业A 可能有一个令人困惑的变量…时间:工作a或上午10点 以下是一

我正在寻求设计一个数据库来存储一些复杂依赖项的信息,并且可以真正使用正确方向上的一个点。我的谷歌搜索没有发现任何相关信息,但也许你有一个很棒的网络链接

为了提供上下文,它围绕着作业调度,并将提供分析。不,我不想创建作业调度程序

关于数据的一些注释

  • 数据可以是递归的。作业C依赖于作业B,作业B依赖于作业A
  • 可能存在一对多依赖关系:作业C可能依赖于作业B1和作业B2
  • 可能存在复杂的依赖关系:作业C可能依赖于(作业B1或作业B2)和作业A
  • 可能有一个令人困惑的变量…时间:工作a或上午10点

    • 以下是一种方法:

      因此,对于您描述的案例:

      第一。作业C依赖于作业B,而作业B依赖于作业A

      INSERT INTO dependency (type_id, job_id, depend_on_job_id) VALUES (SIMPLE, JOB B, JOB A);
      INSERT INTO dependency (type_id, job_id, depend_on_job_id) VALUES (SIMPLE, JOB C, JOB B);
      
      第2项。作业C可能依赖于作业B1和作业B2

      INSERT INTO dependency (type_id, depend_on_job_id) VALUES (SIMPLE, JOB B2);
      INSERT INTO dependency (type_id, job_id, depend_on_job_id, depend_on_dependency_id, operator_type_id) VALUES (COMPLEX, JOB C, JOB B1, DEPENDENCY D1 (from previous insert), AND);
      
      第3项。作业C可能依赖于(作业B1或作业B2)和作业A

      INSERT INTO dependency (type_id, depend_on_job_id) VALUES (SIMPLE, JOB B2);
      INSERT INTO dependency (type_id, depend_on_job_id, depend_on_dependency_id, operator_type_id) VALUES (COMPLEX, JOB B1, DEPENDENCY D1 (from previous insert), OR);
      INSERT INTO dependency (type_id, job_id, depend_on_job_id, depend_on_dependency_id, operator_type_id) VALUES (COMPLEX, JOB C, JOB A, DEPENDENCY D2 (from previous insert), AND);
      
      第4项。作业C可能取决于作业A或上午10点

      INSERT INTO dependency (type_id, condition) VALUES (TIME-BASED, '10 AM');
      INSERT INTO dependency (type_id, job_id, depend_on_job_id, depend_on_dependency_id, operator_type_id) VALUES (COMPLEX, JOB C, JOB A, DEPENDENCY D1 (from previous insert), OR);
      
      此模型可能会有更新:您可能希望将
      依赖于\u作业\u id
      依赖于\u依赖性\u id
      拆分为多个列(
      依赖于\u作业1\u id
      依赖于\u作业2\u id
      ,等等)。在某些情况下,这会降低树的深度(如caseNo 2.,然后只需一个
      插入即可实现)。当然,模型会跳过索引、唯一键等

      此外,使用SQL阅读此树是一个完全不同的故事

      INSERT INTO dependency (type_id, condition) VALUES (TIME-BASED, '10 AM');
      INSERT INTO dependency (type_id, job_id, depend_on_job_id, depend_on_dependency_id, operator_type_id) VALUES (COMPLEX, JOB C, JOB A, DEPENDENCY D1 (from previous insert), OR);