父子关系的最佳实践

Pri*_*aju 7 database-design

假设,在这些任务下有一些任务和一些子任务,
例如:

任务1  
   子任务 1.1  
   子任务 1.2  
   子任务 1.3  
   子任务 1.4  

任务 2  
   子任务 2.1  
   子任务 2.2  
   子任务 2.3 

在这种情况下设计模式的最佳方法是什么?

第一种方式:

“任务”表
====================================
task_id | 任务名称 | 描述     
====================================

“子任务”表
================================================== ================================================== ======================
sub_task_id | task_id | sub_task_name | 说明 | 附件链接| 开始日期 | 到期日 | 地位  
================================================== ================================================== ======================

第二种方式:

================================================== ================================================== ==================================
身份证 | 姓名 | 说明 | parent_id | 附件链接| 开始日期 | 到期日 | 状态 | 类型(任务/子任务)   
================================================== ================================================== ==================================

哪个更可取?

小智 12

这有点晚了,但以前的答案没有提供第三种既灵活又规范化的选择。

所有任务都应该保存在一个任务表中,因为子任务毕竟只是任务。

任务之间的关系应存储在第二个表中,该表具有根据与任务表的外键关系来标识父/子任务关系的列,这些列一起将形成复合主键。

任务

  • ID

  • 标题

  • 描述

  • 开始日期

  • 结束日期

任务关系

  • parent_task_id

  • sub_task_id

为了找到给定任务的父任务,您可以查询 sub_task_id 列。要查找给定任务的子任务,请搜索 parent_task_id 列。

这种结构具有额外的好处,即可以根据需要灵活地将尽可能多的父任务添加到任务中。