2010-08-10 3 views
0

내 응용 프로그램에서 일종의 "가상 폴더"를 사용하므로 데이터베이스에 트리 구조를 저장해야합니다.자동 참조 외래 키가있는 트리 구조의 루트

  • id_folder (INT, 기본 키)
  • id_parent (INT, 참조 id_folder)
  • 폴더 _ (문자열)

: 데이터를 들고 테이블은 3 열이 있습니다, 매우 간단합니다 내 질문은 : 루트를 구현하는 가장 좋은 방법은 무엇입니까?

  1. id_parent를 null로 설정할 수 있습니다. 루트는 id_parent = null 또는
  2. 인 폴더가됩니다.
  3. 폴더를 고유 한 상위 폴더 (예 : id_folder = id_parent)로 만듭니다.

고맙습니다.

답변

0

나는 옵션 1.

에 대한 주장 할 것이다.

옵션 1 :

SELECT * --don't kill me for using *, it's just for an example 
FROM Folders 
WHERE id_parent = @folderId 

옵션 2 :

SELECT * --don't kill me for using *, it's just for an example 
FROM Folders 
WHERE id_parent = @folderId AND id_parent <> id_folder 
+0

당신의 응답을 주셔서 감사합니다 – manolowar

0

정말 추가 요구 사항이 있는지 여부에 달려 있습니다. 논리적 인 의미로 NULL을 좋아하지만 다른 요구 사항은 다른 것을 요구할 수 있습니다. 당신은 다음의 id_folder 및 id_parent가 일치하지 않음을 확인하기 위해 혼란 검사를해야 하위 폴더를 표시하기위한 논리를 옵션 2를 선택하면

관련 문제