문제

하나의 특수 노드를 포함하는 지시 된 그래프를 모델링하는 방법에 대한 의견을 찾고 있습니다.

특수 노드 :

  1. 가장자리를 이끌어 낼 수 없습니다.
  2. 제거 할 수 없습니다.

현재 디자인 :

테이블 : 노드, 가장자리. 가장자리에는 두 개의 열이 포함되어 있습니다. From_node_id 및 to_node_id는 각각 노드 테이블에서 레코드를 참조합니다.

스페셜 노드를 노드 테이블에서 첫 번째 레코드로 저장하는 대신 레코드를 전혀 보관하지 않기로 결정했습니다. 가장자리 테이블에서 NULL은 중앙 노드를 참조하여 From_node_id 열에서 특별한 의미를 갖습니다.

이 디자인을 사용하는 동기는 중앙 노드 레코드를 삭제/수정으로부터 보호하거나 가장자리 테이블의 TO_NODE_ID 열에서 참조되는 것에 대해 걱정할 필요가 없다는 것입니다. 이것은 또한 에지가 동일한 노드에서 나오는 것을 자동으로 방지합니다. _node_id 및 to_node_id를 복합 기본 키를 만들 수없는 등이 디자인에 대한 단점이 있다는 것을 알고 있습니다.

현재 중앙 노드를 실제 레코드로 만들고 관련 데이터베이스 메소드에서 해당 노드에 대한 검사를 작성하는 데 기대고 있습니다. 이 디자인에 대한 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

이 경우 NULL을 사용하는 것에 대한 몇 가지 주장이 있습니다.

  1. 노드에 실제 데이터가 포함 된 경우 애플리케이션의 중앙 노드에 대한 데이터를 하드 코드해야합니다.
  2. 중앙 노드를 변경할 수 있으면 문제가 발생합니다.
  3. NULL의 일반적인 의미는 가치가 없거나 값이 알려지지 않았다는 것입니다. 이 때문에 제안 된 디자인에 접근하는 다른 사람은 직관적이지 않은 것을 찾을 수 있습니다.

다시 말해 중앙 노드의 데이터베이스에 행이있는 것을 선호합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top