此外,我们还应加上一些额外的可选功能,如
1. 数据的版本信息
2. 数据的状态管理
3. 数据的变更记录
4. 数据的基线功能
5. 自动的全文搜索
3.需求
在做这个数据库前我们还是先确定一下上述的第2种情况主要有那些需求.
3.1数据的定义
本数据库是用条目(item)、关系(relationship)和属性组(attributeGroup)三个概念来组织数据的,用户可以按自已的需求定义这三种对象,将数据库的数据看成一个有属性的有向图,如下
条目(item)就是图中的节点, 关系(relationship)就是图中的边。节点和边都具有属性,它们用属性组(attributeGroup)来组织。这三个对象的UML类图如下
所有用户自定义的条目(item)、关系(relationship)和属性组(attributeGroup)都必须从它们继承。
3.1.1条目(item)
一个条目(item)代表一个对象实例(如计算机,应用软件,或其它),<!--[if !supportLists]-->1. <!--[endif]-->每一个条目(item)将至少有一个唯一的Id,并充当一个Key <!--[if !supportLists]-->2. <!--[endif]-->为一个条目(item)指定一个Id.后,它可能用在任何需要Id的场合 <!--[if !supportLists]-->3. <!--[endif]-->一个条目(item)具有0个或多个属性组(attributeGroup)。注意它自己不能直接包含属性.
3.1.2关系(relationship)
一个关系(relationship)表示源条目(item)与目标条目(item)之间的连接。如一个软件“运行(runs)”在一个操作系统上、一个操作系统“安装(installed)”在一个计算机上、一个故障(incident)记录“影响(affects)”一个计算机、以及一个服务使用另一个服务。关系(relationship)有下列特征:
<!--[if !supportLists]-->1. <!--[endif]-->一个关系(relationship)严格的连接两个条目(item),一个是源,一个是目标,并提供关于这个关系(relationship)的信息。 <!--[if !supportLists]-->2. <!--[endif]-->一个关系(relationship)是一个条目(item)的子类,并具有一个条目(item)的所有特征。如每个关系(relationship)都将有一个唯一的ID,并作为key。 <!--[if !supportLists]-->3. <!--[endif]-->一个关系是有方向的,但本系统并没有为这个方向赋予什么特殊的意义。但删除是依赖于方向的,具体请见删除条目。 <!--[if !supportLists]-->4. <!--[endif]-->一个关系(relationship)具有0个或多个属性组(attributeGroup)。注意它自己不能直接包含属性.
3.1.3属性组(attributeGroup)
属性组(attributeGroup)表示一个含有描述条目(item)或关系的属性(注意这里的属性是类似于数据库表中的字段,而不是像C#语言中的属性)的集合。属性组(attributeGroup)有下列特征:
出处:博客园
责任编辑:bluehearts
上一页 GraphDatabase在关系数据库中的实现 [1] 下一页 GraphDatabase在关系数据库中的实现 [3]
◎进入论坛网络编程版块参加讨论
|