2016-09-28 6 views
0

ich versuche, ein eindeutiges Attribut auf einem Knoten mit einer Beziehung zu erstellen. Das Problem ist, dass das einzigartige Attribut nur für das Label "B" einzigartig ist und ich es auch für das Label "A" einzigartig haben muss. Ist es möglich, eine eindeutige Einschränkung für viele Labels zu haben?Erstellen Sie einen eindeutigen Knoten und eine eindeutige Beziehung

MATCH (user:A { userId: '57e3c97c6a430242328878ec' }) 
CREATE UNIQUE (user)-[:KNOWS]-(telephone:B{telephone: '+447735150512'}) 
RETURN telephone 

Antwort

2

Wie in der Eigenschaft sollte nun auf Knoten von Etiketten A und B (möglicherweise mehr?)

Es gibt keine Unterstützung für dieses Recht eindeutig sein, aber es eine Abhilfe ist, obwohl es einige erfordert Unterhalt auf Ihrer Seite.

Knoten können mehrere Beschriftungen haben. Wenn Sie also eine Beschriftung erstellen, die zusätzlich auf Knoten mehrerer anderer Beschriftungen angewendet wird (ein Superlabel C, das auf Knoten mit Beschriftung A und B angewendet wird), können Sie für diese Eigenschaft eine eindeutige Integritätsbedingung für C erstellen. Sie müssen sicherstellen, dass alle A- und B-Knoten zusätzlich mit C gekennzeichnet sind. Wenn dies jedoch der Fall ist, können Sie keinen neuen A- oder B-Knoten (zusätzlich mit C bezeichnet) mit einer Eigenschaft erstellen, die dies ist wird bereits auf einem anderen C-Knoten verwendet. Der Nachteil dieses Ansatzes ist, dass wenn Sie einen A- oder B-Knoten erstellen, aber vergessen, ihn auch mit C zu beschriften, die eindeutige Einschränkung nicht erzwungen wird, da dies nur bei C-Knoten geschieht.

+0

Danke, Beispiele für die Lösung sind hier https://github.com/neo4j/neo4j/issues/7814 – TheNickyYo

Verwandte Themen