반응형

/*
-- Title : [Cyphr] Create relationship 구문
-- Tag : cypher neo4j 네오포제이 create relationship create 관계 생성
*/


■ 샘플 데이터베이스


■ 두 노드간의 관계 생성

:use book

// 관계 생성
MATCH
  (b:tBook),
  (p:tPublisher)
WHERE b.bk_id = 'kr12' AND p.pub_id = 2
CREATE (b)-[r:PUBby]->(p)
RETURN type(r);

Started streaming 1 records in less than 1 ms and completed after 1 ms.

// 관계 조회 (Graph-1 참조)
match(b:tBook{bk_id:'kr12'}) --> (p:tPublisher) 
return b,p;

match(b:tBook{bk_id:'kr12'}) -->(p:tPublisher) 
return b.bk_id, p.pub_nm;

│"b.bk_id"│"p.pub_nm"│
│"kr12"   │"LG전자"  │

// 관련 관계 모두 삭제
MATCH (n {bk_id:'kr12'}) -[r:PUBby] -> () delete r;

Deleted 1 relationship, completed after 2 ms.

Graph-1

 


■ 동일 레이블 노드간의 관계 생성

:use book

// 동일 레이블 노드간의 관계 생성
match(b1:tBook), (b2:tBook)
where b1.bk_id = 'kr12' and b2.bk_id = 'kr14'
create (b1) - [r:bakREF] -> (b2)
return type(r)

Created 1 relationship, started streaming 1 records after 6 ms and completed after 12 ms.

// 관계 조회 (Graph-2 참조)
match(b:tBook{bk_id:'kr12'}) --> (b2:tBook)
return b,b2

Graph-2


■ 속성이 있는 관계 생성

:use book

// 속성이 있는 관계 생성
MATCH
  (b:tBook),
  (i:tISBN)
WHERE b.bk_id = 'kr12' AND i.isbn_id = 'E01E'
CREATE (b)-[r:bakREF {name: b.bk_id + '<->' + i.isbn_id}]->(i)
RETURN type(r), r.name 

│"type(r)"│"r.name"     │
│"bakREF" │"kr12<->E01E"│

// 관계 확인 (Graph-3 참조)
match(b:tBook{bk_id:'kr12'}) --> (i)
return b,i

match(b:tBook{bk_id:'kr12'}) --> (i:tISBN)
return b,i

// 관계 속성 확인
match(b:tBook{bk_id:'kr12'}) -[r]-> (i:tISBN)
return b.bk_nm, i.isbn_nm, r.name

│"b.bk_nm"          │"i.isbn_nm"  │"r.name"     │
│"에어로졸 제공 시스템"│"기계공학"     │"kr12<->E01E"│

Graph-3


■ 3의 노드와 3개의 관계 동시 생성

:use book

//노드 및 관계 동시 생성
CREATE p = (:tBook {bk_id:'kr113',bk_nm:'노드 및 관계 동시 추가'})-[:SUPPLY_to]->
(:Neo4j)<-[:SUPPLY_to]-(:tPublisher {pub_nm : '(주)몽블랑'})
RETURN p

Added 3 labels, created 3 nodes, set 3 properties, created 2 relationships, 
started streaming 1 records after 3 ms and completed after 4 ms.

//노드 및 관계 조회 (Graph-4 참조)
match(b:tBook{bk_id:'kr113'}) --> (n) <-- (y) return b,n,y

Graph-4

 


■ 테이블 외래키(FK, Foreign Key)를 활용한 관계 생성

:use book2

// FK를 활용한 관계 생성(JOIN 형식)
match (b:ttBook),(p:ttPublisher) 
where b.fk_pub_id = p.pub_id 
create (b)-[r:PUBL_by]->(p) return type(r);

Created 11 relationships, started streaming 11 records after 6 ms and completed after 23 ms.

// 관계 조회 (Graph-3 참조)
match(n) - [r] -> (m) return n,m


※ Resources
//neo4j.com/docs/cypher-manual/current/clauses/create/#create-relationships
db-hyunjin.tistory.com/49

 

반응형

+ Recent posts