簡體   English   中英

OrientDB對兩個連接的頂點的屬性的唯一索引

[英]OrientDB unique index on properties of two connected vertices

我有兩個頂點類V1和V2,都具有屬性'id'。 我有一個邊緣班,E。

V1的id屬性是唯一索引,因此所有V1都有唯一的ID。 現在,我希望連接到某個V1實例的所有V2實例都具有唯一的ID。 所以:

還行(需要工作)

V1(id:"A") ---- E ----> V2(id:"a")
V1(id:"A") ---- E ----> V2(id:"b")
V1(id:"B") ---- E ----> V2(id:"a")
V1(id:"B") ---- E ----> V2(id:"b")

不好

V1(id:"A") ---- E ----> V2(id:"a")
V1(id:"A") ---- E ----> V2(id:"a")

優選地,作為補充,V2實例也可能沒有邊緣存在,因此它們在全局范圍內應該是唯一的。 如果最后一部分是不可能的,那么第一部分還是有幫助的。

是否可以通過數據庫配置/索引(在邊緣或頂點上)來實現,還是必須在應用程序中強制執行?

UPDATE

配置/索引的意思是,如果您嘗試添加邊緣,就可以避免(例外)(就像使用唯一索引強制兩個頂點之間僅存在一條邊緣時一樣)。

您可以使用

update e set out=(select from v1 where id="a"), in=(select from v2 where id="a") upsert where out=(select from v1 where id="a") and in=(select from v2 where id="a")

希望能幫助到你。

我只看到兩種方法來做到這一點:

  1. 將V2 id屬性放在邊緣並稱為v2id ,因此您可以針對out + v2id創建唯一索引
  2. 在類E的onBeforeCreate() )上創建一個鈎子(觸發)並進行檢查

暫無
暫無

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

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