我有顶点"人"和边缘"知道"。这是我如何创建它的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")
当我在John知道之间创建边缘时 - >安 通过
CREATE EDGE Knows FROM (SELECT FROM Person WHERE name = "John")
TO (SELECT FROM PERSON WHERE name = "Ann")
它创造它并且每件事都没问题。
但是当我意外地多次创造边缘时会出现问题。
对于这种关系" Knows"重复是多余的,但对于其他一些,例如"访问" (John [Visited - >] New York)边缘重复是边缘"访问"拥有财产" date"。
我尝试通过向edge" Knows"添加唯一索引来解决它,但之后我能够在一对顶点之间创建边缘。
在创作之前检查每一次存在的边缘在我看来都不是一个好主意。
如何以正确的方式解决这个问题?
答案 0 :(得分:5)
直接的解决方案是在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