이것은 실제로 최근 인터뷰에서 나에게 묻는 질문이었고 나는 깔끔하게 볼링되었습니다. 이 파일 시스템 모델에서 노드 (파일 또는 디렉토리)의 절대 경로를 찾는 방법
질문
파일 시스템 표현하는 데이터베이스 설계했다 -- 루트 디렉토리에 많은 파일이를/디렉토리는 그 안에 존재한다.
- 디렉토리 안에는 여러 개의 디렉토리/파일이있을 수 있습니다.
요구 사항
- 는 파일을 주어진 동일한 디렉토리에있는 모든 파일을 찾을 수 있습니다.
- 주어진 파일/디렉토리에서 루트에서 경로를 찾으십시오.
조건 는 - 모델에 대한 하나 개의 데이터베이스 테이블이 있어야한다. 인터뷰 질문에 필수 조건은 아니지만 좋은 점이 있습니다.
위의 트리 구조의 유용한 속성 즉 - -
나는 다음 그림과 같이 트리를 만들고 그것을 번호 몰랐는 훨씬 더 최적화한다
- 두 개의 하위 트리를 고려하면 서브 트리 A (dir2 및 그 하위)와 서브 트리 B (dir3 및 그 하위)의 경우, 서브 트리 A의 모든 노드 수는 Next_Subtree_First_Node보다 작습니다 (이 경우 dir3).
_______________________________________________________________________ Sequence_Number Name type ----------------------------------------------------------------------- 0 Parent Directory Dir 1 dir1 Dir 2 file1 File 3 file2 File 4 file3 File 5 dir2 Dir ... ________________________________________________________________________
참고 - -
그런 다음 우리는이 같은 데이터베이스 구조에 정보를 저장하는 경우 위의 구조는 내가 토론 중에 기억하는 것입니다. 이것은 문제를 해결하기위한 최선의 구조가 아닐 수도 있습니다. 약간의 변경이 필요한지 알려주십시오.
첫 번째 질의는 다음과 같이 될 것입니다 -
이 같은 디렉토리에있는 모든 파일을 찾기
Select Name From File_System
where Sequence_Number Between Next_Subtree_First_Node
and Previous_Subtree_Last_Node
and type = "File";
내 질문
- 위의 쿼리가 반환에 필요한 모든 파일,하지만 Next_Subtree_First_Node 및 Previous_Subtree_Last_Node를 어떻게 미리 알 수 있습니까?
예. file4의 경우
Next_Subtree_First_Node = 7 및 Previous_Subtree_Last_Node = 4.
- 절대 경로 찾기 쿼리의 논리가 무엇인지 확실하지 않습니다. 아이디어를 좀주세요.
예. 주어진 파일 7의 결과는 -
상위 디렉토리/dir3/dir4/file7이어야합니다.
죄송합니다. 시스템을 모델링하는 테이블이 하나만 있어야한다는 점을 잊어 버렸습니다. 그러나 어쨌든, 나는 당신의 대답도 고려할 것입니다. 어느 쪽이 더 나은지 보자. –
먼저 모든 테이블을 정의한 다음 쿼리 또는 논리를 사용하여 질문에 답변 할 수 있습니다. –