加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何防止在OrientDB中的相同顶点之间创建边的重复?

发布时间:2020-12-15 03:06:31 所属栏目:Java 来源:网络整理
导读:我有顶点“人物”和边缘“知道”.这是我如何创建它的SQL示例. CREATE CLASS Person EXTENDS V;CREATE PROPERTY Person.name STRING;CREATE CLASS Knows EXTENDS E;INSERT INTO Person (name) VALUES("John")INSERT INTO Person (name) VALUES("Ann")INSERT I
我有顶点“人物”和边缘“知道”.这是我如何创建它的SQL示例.
CREATE CLASS Person EXTENDS V;
CREATE PROPERTY Person.name STRING;

CREATE CLASS Knows EXTENDS E;

INSERT INTO Person (name) VALUES("John")
INSERT INTO Person (name) VALUES("Ann")
INSERT INTO Person (name) VALUES("Harry")

当我在约翰之间创造一个边缘 – >安
通过

CREATE EDGE Knows FROM (SELECT FROM Person WHERE name = "John") 
TO (SELECT FROM PERSON WHERE name = "Ann")

它创造了它,每件事都没问题.

但是当我意外地多次创建边缘时会出现问题.

对于关系“知道”重复是多余的,但是对于诸如“访问”(John [Visited – >] New York)之类的其他一些,如果边缘“已访问”具有属性“日期”,则边缘的重复是期望的特征.

我试图通过向边缘“Knows”添加唯一索引来解决它,但之后我能够在仅一对顶点之间创建边缘.

并且在创作之前检查每一次存在的边缘对我来说似乎也不是一个好主意.

如何以正确的方式解决这个问题?

解决方法

直接的解决方案是在EdgeClass [out,in]上创建索引.为此,您还必须定义边类的模式:
CREATE CLASS Knows EXTENDS E
CREATE PROPERTY Knows.out LINK Person
CREATE PROPERTY Knows.`in` LINK Person
CREATE INDEX Knows.out_in ON Knows (out,in) UNIQUE

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读