3.2.1.2插入
属性组的插入, 可以将它当作表一样,基本上与常见的Insert支持的都支持,在这里我就不再说了。但需要注意满足条目与属性组的约束。
条目的插入,它有点特殊,因为有条目与属性组的约束和条目与条目的关系约束,因此你必须一次性地将条目和条目的必选属性组以及条目与其它条目的必选关系一起建起来,否则无法创建成功。可能还要一同创建必要的子条目。
关系的插入,它也有点特殊,因为有条目与属性组的约束,因此一次性的将关系与它的必选属性组一起建起来,否则无法创建成功。
3.2.1.3删除
这个就是与一般的数据库相差甚远,因此重点说明一下。
3.2.1.3.1删除属性组
基本上与常见的ORM工具提供的删除没有什么区别,一般Delete 语句能支持的都支持,在这里我就不再说了。当然删除它不能违反条目与属性组的约束。
3.2.1.3.2删除条目
删除一个条目时必须同时删除该条目的所有属性组,但在删除它之前,需要同时删除与它相连的关系。但删除关系时需要满足下面的条件:
<!--[if !supportLists]-->l <!--[endif]-->不能违反条目与条目之间的关系约束
在实际情况中,仅仅这样子是不够,你可能希望在删除一个条目时,将其相邻的条目删除(相邻是指两者之间有一个关系存在),但这需要清楚该条目能否安全的删除。所以我们需要用户来指定一下:
在定义关系时,在定义关系的源和目标时各增加一个onDelete字段,用来表示删除这个关系时,是否连带删除该条目.
呵呵,这个就是数据库的级联删除了.
3.2.1.3.3删除关系
同样,删除一个关系时必须同时删除该关系的所有属性组。注意同样地删除时不能违反条目与条目的关系约束。
3.2.1.4更新
属性组的更新,可以将它当作表一样,基本上与常见的Update支持的都支持,在这里我就不再说了。
条目的更新,它有点特殊,因为它的属性都归类在属性组中,自身没有属性,那么唯一可以更改的就是改变类型了。但改变类型需要注意,两个类型可以拥有的属性组是不一样的,你可能在更改它的类型时,需要删除和添加一些属性组。
关系的更新,因为它是条目的子类,因此它的更新与条目的更新差不多,但它比条目多两个属性,即源条目和目标条目的引用。源条目是不可更改的,但目标条目的引用是可以更改的。用户可以修改它,但要注意不能违反条目与条目的关系约束
3.2.2可选功能
3.2.2.1对象的状态管理
一个对象在它的生命周期中可能会经过几个阶段, 而对不同的用户来说在对象处于某些阶段时他并不想看到它,如一个PC可能会分为购入待处理、试用、正式运行、停用、作废。对财务人员来说,从它生命周期开始到结束之前都能看到。而对网络管理的值班人员来说只希望看到处于“试用”和“正式运行”阶段的PC。
针对这种情况本数据库引入一个环境的概念,即管理员可以为系统定义几个环境,并定义这些环境可以访问到处于哪几个状态的对象,并且为用户设置一个默认环境。用户可以在运行中更改自己所处的环境。
出处:博客园
责任编辑:bluehearts
上一页 GraphDatabase在关系数据库中的实现 [5] 下一页 GraphDatabase在关系数据库中的实现 [7]
◎进入论坛网络编程版块参加讨论
|