이번에 더 배울 것
Neo4j의 변환 안내는 기본 대응을 이렇게 정리합니다. 엔터티 표는 레이블, 행은 노드, 열은 노드 속성이 됩니다. 다른 표를 가리키는 외래 키는 관계로 바꾸고, 두 표를 잇는 조인 표도 관계로 바꾸며 그 표의 나머지 열은 관계 속성이 됩니다. 업무에 의미 있는 키(email, doi)는 남겨 유일성 제약을 걸고, 일련번호 같은 기술용 키는 지울 수 있습니다.
예를 들어 person(id, email, name, lab_id), lab(id, name, city), paper(id, doi, title, year), authorship(person_id, paper_id, author_order)가 있다면 :Person·:Lab·:Paper 레이블과 (:Person)-[:WORKS_AT]->(:Lab), (:Person)-[:AUTHORED {order}]->(:Paper)가 됩니다. person.lab_id 외래 키는 사라지고 관계가 그 자리를 대신합니다. email1, email2처럼 번호 붙은 열은 목록 속성의 후보라는 점도 안내서에 있습니다.
기계적으로 옮기면 안 되는 경우가 있습니다. 조인 표가 셋 이상의 표를 가리키거나 다른 표에서 참조되면 관계가 아니라 중간 노드(DAY 42)가 맞습니다. 사람 표에 들어 있지만 실제로는 사람–연구실 관계의 사실인 열(합류일)은 관계 속성으로 옮깁니다. 상태 코드 같은 조회 표는 화면 표시용이면 속성으로, 공유되고 거쳐 가는 값이면 노드로 둡니다. 결국 판단 기준은 그래프가 답할 질문입니다.
작은 예제로 따라가기
person 6행은 :Person 노드 6개가 되고, email·name 열은 속성이 됩니다. id는 이관 검증이 끝나면 지워도 됩니다.
authorship 7행은 AUTHORED 관계 7개가 되고, author_order는 관계 속성 order가 됩니다.
person 표에 있던 joined_on 열은 사람의 성질이 아니라 근무 관계의 사실이므로 [:WORKS_AT {since}]로 옮깁니다.
조인 표의 운명
각 표가 그래프에서 관계가 될지, 노드가 될지, 속성이 될지 먼저 예상하세요.
외래 키 두 개와 그 쌍에 대한 열 하나뿐이라 관계 하나로 충분합니다.
학습을 시작하면 새 문제를 직접 풀고 확인 퀴즈를 마친 뒤 선택한 본과정 회차로 돌아갑니다.