marcobuschini / mlb-dag-bundle
此包提供实体和用于处理有向无环图的方法。
dev-master
2018-07-28 21:54 UTC
Requires
- php: >=5.3.1
- symfony/symfony: ~2.3.41 || ~2.7.13 || ~2.8.6 || ~3.0.6
Requires (Dev)
- doctrine/data-fixtures: ~1.0
- doctrine/doctrine-bundle: ~1.0
- doctrine/doctrine-fixtures-bundle: ^2.2
- doctrine/orm: ~2.3 || ~2.5
- phpunit/php-code-coverage: ~2.2
- phpunit/phpunit: ~4.1
- satooshi/php-coveralls: ~1.0
This package is not auto-updated.
Last update: 2024-09-21 16:42:50 UTC
README
marcobuschini/MLBDagBundle
当管理属于现实世界的实体之间的复杂关系时,我们经常发现它们无法适应简单的数据模型,如列表、映射,甚至是树。
此Symfony2包实现了一个Doctrine数据模型,允许应用程序通过使用邻接列表和完全传递闭包来间接处理有向无环图。
有向无环图(DAG)是一组通过一组有向边连接的节点集,使得数据结构中不能创建闭合回路(循环)。此结构最好通过邻接列表来处理,即连接一对节点的边的列表(边E连接节点A到节点B,但不是相反)。为了防止大量查询以确定节点B是否可以从节点A到达,实现了一个完全传递闭包,即由包管理的一系列间接边。因此,如果节点A连接到节点B,而节点B又连接到节点C,则节点A到节点C的间接边由包的逻辑管理。
需要注意的是,数据结构不得在此包之外修改,因为防止循环和创建间接边的逻辑不是由数据库处理,而是由包本身处理。