노드 ID와 부모 노드 ID라는 두 개의 열이 포함 된 표가 있습니다. 이 테이블은 그래프를 나타냅니다. 나는 그것이 트리를 표현하기를 원하기 때문에 그래프의 사이클을 형성 할 행들의 삽입을 불가능하게 할 필요가있다.인접 그래프 목록에서 내재 된 그래프의주기를 제외하도록 어떻게 제한합니까?
답변
하면 당신은 당신이 한 번에 저장 프로 시저 하나의 행을 통해 삽입 액세스를 허용하여 해결 할 수있는주기 http://sqlfiddle.com/#!12/ea0cd/7
을 만들 대량 행을 삽입 할 수 있기 때문에, 작동하지 않습니다 다음과 같습니다.
는 자기가ParentId
를 참조있는 테이블을 만듭니다
Create Table Tree (
Id int not null primary key,
ParentId int foreign key references Tree(Id) -- might need to add constraint afterwards
);
테이블에 대한 업데이트 만 삽입과 삭제를 허용하지 마십시오
. 업데이트하지 않고는주기를 만들 수 없습니다.당신의 트리 노드가 다른 데이터가있는 경우,이에 대한 별도의 옆으로 보이는 테이블을 만드는 :
Create Table Node (
Id int not null primary key,
data1 varchar(10),
constraint FK_Tree Foreign Key (Id) References Tree (Id)
);
좋은 생각, 당신은 할 수 사용 권한보다는 트리거를 사용하여 id & ParentID에 대한 업데이트를 방지하고 다른 데이터에 대한 lookaside 테이블이 필요하지 않게하십시오. – dbenhur
"업데이트 없이는 사이클을 만들 수 없습니다". INSERT ROW (1,2) INSERT ROW (2,3) INSERT ROW (3,1) –
@ErwinSmout'INSERT ROW (1,2)'는 FK를 위반합니다. –
- 1. 인접 목록 구현 그래프
- 2. 인접 행렬에서 그래프 그리기
- 3. STL vector vs list : 그래프 인접 목록에서 가장 효율적입니까?
- 4. 로더의 이미지에 내재 된 속성
- 5. 내재 된 코드가 부족합니다.
- 6. 필터링 된 그래프를 부스트의 일반 그래프 (인접 목록)로 변환
- 7. 인접 행렬로 표시된 그래프 크기 조정
- 8. 그래프 구현 및 인접 행렬의 초기화
- 9. 페이 스북 그래프 검색 결과를 상태 업데이트로 어떻게 제한합니까?
- 10. JQuery 복제 된 Div 수를 어떻게 제한합니까?
- 11. 가중치가없는 그래프의 인접 목록에서 최단 경로
- 12. 인접 매트릭스/에지 목록에서 클러스터 생성 R
- 13. JPQ 출력을 어떻게 제한합니까?
- 14. 인접 목록 그래프 구현 c (모든 라이브러리)
- 15. 제한된 파이썬의 목록 내재 된 배정?
- 16. JFileChooser를 디렉토리로 어떻게 제한합니까?
- 17. SVN 폴더를 어떻게 제한합니까?
- 18. UITextView에서 문자를 어떻게 제한합니까?
- 19. AIR 배포를 어떻게 제한합니까?
- 20. 이벤트 등록자 수를 어떻게 제한합니까?
- 21. 전체 화면 나가기 webview에 내재 된
- 22. 프레임 셋에 내재 된 나쁜 영향은 무엇입니까?
- 23. C# 내재 된 이미지가있는 외부 DLL을로드하십시오.
- 24. 연결된 노드 목록에서 그래프 그리기
- 25. matplotlib 그래프에서 테두리 크기를 어떻게 제한합니까?
- 26. Sytem.Windows.Form의 높이를 정확히 어떻게 제한합니까?
- 27. 친구 목록에서 php + facebook 그래프 검색
- 28. MongoDB를 : 내재 가치
- 29. Doctrine2 내재 및 과부하
- 30. C에서 소켓 속도를 어떻게 제한합니까?
[당신이 시도 무엇?] (http://whathaveyoutried.com)는 –