2017-12-21 18 views
0

그래프 데이터베이스에서 조회/참조 테이블을 모델링/표시하는 방법은 무엇입니까?
하나의 특별한 경우 : 마스터 변환 테이블 (많은 코어 테이블에 대한 조회 데이터 포함).
코어 테이블에 병합해야합니까? RDBMS representation그래프 데이터베이스의 조회/참조 테이블

+1

좀 더 구체적인 예를 들려 줄 수 있습니까? 그래프 데이터베이스에는 테이블 개념이 없다는 점을 명심하십시오. – InverseFalcon

+0

현재 RDBMS 표현의 이미지를 게시물에 추가했습니다.
해결 방법 중 하나는 각 노드에 대해 코드 변환 (: "Core 탭 2"({col2 : 'NY', col2_description : 'New York'}))을 포함하는 다른 속성을 만드는 것입니다.
다른 해결책은 코드의 설명을 별도의 테이블에 보관하고 필요할 때마다 변환하는 기능을 사용하는 것입니다. –

답변

0

노드만으로 모델링 할 수 있습니다.

CREATE (:Translation{code:'SLD', description:'some lengthy description'}) 
CREATE (:Translation{code:'NY', description:'New York'}) 
CREATE (:Translation{code:'USA', description:'United States'}) 
CREATE (:Address{address:'123 Street St', state:'NY', country:'USA'}) 

와 같은 아마 사용 뭔가 : 뭔가처럼 말했다

MATCH (p:Person)-[:LIVES_AT]->(a:Address) 
WHERE id(p) = 101 
OPTIONAL MATCH (state:Translation{code:a.state}) 
OPTIONAL MATCH (country:Translation{code:a.country}) 
RETURN a.address as address, state.description as state, country.description as country 

, 나는 그래프 데이터베이스가이 다소 쓸모가 필요하게 생각합니다. 이 값을 사용하는 이유는 같은 값이 반복적으로 사용되기 때문에 공간을 절약하는 것이므로 RDBMS에서는 더 긴 설명을 한 곳에 보관하는 것이 좋습니다. 당신이 자신의 노드에 값을 추출하고 다음과 같이 그것에 관계를 만들어야합니다 제안 보인다 그래프와

:

CREATE (ny:State{code:'NY', name:'New York'}) 
CREATE (usa:Country{code:'USA', name:'United States}) 
CREATE (a:Address{address:'123 Street St'}) 
CREATE (a)-[:IN_STATE]->(ny) // or a more generic :IN if desired 
CREATE (a)-[:IN_COUNTRY]->(usa) // or a more generic :IN if desired 

쿼리는 다음이 될 것입니다 :

MATCH (p:Person)-[:LIVES_AT]->(a:Address) 
OPTIONAL MATCH (a)-[:IN_STATE]->(state) 
OPTIONAL MATCH (a)-[:IN_COUNTRY]->(country) 
RETURN a.address as address, state.name as state, country.name as country 

당신은 매우 유사하게 보일 것입니다. 긴 나라 이름은 여전히 ​​한 곳에서만 저장됩니다. 실제 차이점은 특정 레이블이있는 노드와 더 구체적인 특정 속성 키를 사용하는 작업과 특정 노드가 특정 속성 필드가 될 수 있다는 것을 어떻게 든 알거나 추측하지 않고 이러한 노드와의 관계를 데이터 모델의 일부로 사용하는 데 따른 컨텍스트입니다. 다른 노드에서 검색합니다 (예 : 브라우저에서 CALL db.schema()을 시도하십시오).

상태 (코드) 및 : 국가 (코드)에 인덱스를 추가하면 코드로 주소를 쉽게 찾을 수 있습니다.

+0

고마워요! 이것은 특히 귀하의 예에서와 같은 경우에 해당됩니다. 참고 : 별도의 노드를 만들면 "코어"레코드에 이러한 값이없는 경우에도 코드/설명을 저장할 수 있습니다 (RDBMS 및 그래프 데이터베이스 모두에서 작동). –