我使用嵌套集架构对数据库中的父子关系进行了建模。
每个孩子(叶子)都链接到一个包含开放日期的表格,但父母没有。
我希望能够检索在某个时间打开的所有叶子,如果该父母的所有孩子都打开了,他们的父母。
有没有办法快速做到这一点?我想像做一个子请求这样的事情,但这既不漂亮,也不快;最好的办法是在一个查询中完成。
我可以将我的嵌套集架构更改为另一个架构,以便更轻松地构建此请求吗?
编辑:
我正在使用 MySql,但如果这是实现我的目标所必需的,我可以更改为任何其他数据库。
这是我的节点(父子)表的样子:
id (int)
lft (int)
rgt (int)
root_id (int , self reference to the root id, used to generate multi-rooted tree)
level (int)
name (string)
description (string)
...
我的 opening_dates 表如下所示:
id (int)
node_id (int)
start (datetime)
end (datetime)
status (bool, 0 for an opened date, 1 for a close one)
我还补充说,我的父子不会经常更改,这就是我决定采用嵌套集合架构的原因。我的目标是在“选择查询”系统时尽可能快。