我正在编写一个站点(PHP + MySQL),其中一些对象(例如文章)按集合组织。每篇文章都属于一个单例集。每个集合可以是独立的,也可以属于更大的集合。集合要么是单例,要么是集合的集合。为了跟踪集合之间的关系,我使用了一个封闭表来跟踪所有“家庭联系”。该表具有一个ancestor
字段、一个descendant
字段和一个length
字段,该字段计算祖先和后代之间的分离程度。
- 每篇新文章都意味着创建一个新的单例集。
- 每个新集合都意味着创建一个新的闭包表条目,其中
ancestor
和descendant
相同且其中length
= 0。可以独立于文章创建新集合,因为集合可以是现有集合的集合。
我想构造我的 PHP 程序,这样每次我在数据库中写一篇新文章时,我都会自动编写一个新集合,而每次我加载一个新集合时,我都会自动编写一个新的闭包表条目。
构建代码的正确方法是什么?是否创建嵌套对象(article
对象包括 a set
,其本身包括 a closure
)和一个递归函数来写入数据库,该函数将首先写入嵌套对象(如果对象是闭包表条目,则结束条件是哪里) ? 有没有办法在单个事务中折叠这些递归写入?
我可以使用现有的模式吗?