user(group) - item(文件夹),具有树结构的多根数据库

时间:2011-08-17 16:18:50

标签: database database-design data-binding

¡唉,caramba! - enter image description here 这是挤压我的非计算机科学小脑 - 请帮忙

我可能有两个数据库表 - 第一个是用户(文件夹)表,它是一个树结构(父子)(用户组织成客户端或deptartments) 它完全可编辑的新结构(parentid left right等)需要经常重写

然后我有一个项目(文件夹)表树结构 - 同样的东西 - 可编辑,所以添加,删除,复制,粘贴,移动......如http://www.jstree.com/demo - (PHP MYSQL可编辑功能)

NB我希望树的深度很少超过5,所以深度优先并不是真的必要......虽然我正在考虑它(更安全) - 但是会有很多物品和潜在的用户。

只是在谷歌搜索多年后寻找一些方向...... 问题1 - 一两个桌子? - 一张桌子很可爱......如果Im移动文件夹,只有整个DBtable需要重新写入保存。考虑到这个结构需要监视所有用户和项目......它是一个很大的SQL UPDATE

问题2 - 多个根树结构...如果我只想访问结构,请说...用户5(根)播放并保存树的一部分我打开自己向左/向右/ id正在腐败。

基本上要求用户登录 - 然后他们可以管理他们的用户结构,可以组织到文件夹(客户端)。 然后允许那些登录用户将项目文件夹(组织项目)添加到其他用户,并具有能够跨用户复制(添加,重命名,移动,删除)项目文件夹的功能...以便那些用户(登录时) )只能查看这些项目。

pheew。希望我已经解释过这个好了

1 个答案:

答案 0 :(得分:1)

我与我们的一位顶级DBA就这件事提供了一些帮助。

这些类型的设计的主要问题不是表的数量,而是使用的类型。

如果它是单个用户系统,使用一个表不是问题,管理起来有点麻烦,但merge命令可以在这里提供帮助。

如果要由许多用户同时访问数据,这种结构会导致锁定问题。

“我会选择两个表,第一个持有数据,第二个持有关系信息父对象。如果项目之间有多个关系 即,父母有很多孩子,在关系表中会有多行。 (Oracle已将这种方法用于其外键关系(Parent-Child))“

希望这有帮助