簡體   English   中英

如何防止在OrientDB中創建相同頂點之間的邊復制?

[英]How to prevent creating duplicates of edges between the same vertices in OrientDB?

我有頂點“人物”和邊緣“知道”。 這是我如何創建它的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")

當我在約翰之間創造一個優勢時 - > Ann by

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM