better_nested_set - 귀속 대신 구조 설계
2629 단어 귀속데이터베이스 디자인
root
|_ Child 1
|_ Child 1.1
|_ Child 1.2
|_ Child 2
|_ Child 2.1
|_ Child 2.2
다음과 같은 구조로 작성할 수도 있습니다.
___________________________________________________________________
| Root |
| ____________________________ ____________________________ |
| | Child 1 | | Child 2 | |
| | __________ _________ | | __________ _________ | |
| | | C 1.1 | | C 1.2 | | | | C 2.1 | | C 2.2 | | |
1 2 3_________4 5________6 7 8 9_________10 11_______12 13 14
| |___________________________| |___________________________| |
|___________________________________________________________________|
숫자는 좌우 경계를 대표하고 데이터베이스에 있는 표의 구조는 다음과 같다.
id | parent_id | lft | rgt | data
1 | | 1 | 14 | root
2 | 1 | 2 | 7 | Child 1
3 | 2 | 3 | 4 | Child 1.1
4 | 2 | 5 | 6 | Child 1.2
5 | 1 | 8 | 13 | Child 2
6 | 5 | 9 | 10 | Child 2.1
7 | 5 | 11 | 12 | Child 2.2
부결점parent의 모든 아이를 선택하십시오:
SELECT * FROM table_name WHERE lft > parent.lft AND lft < parent.rgt
결점 차일드 1의 모든 하위 결점을 선택하는 경우:
SELECT * FROM table_name WHERE lft > 2 AND lft < 7
결과는 다음과 같습니다.
id | parent_id | lft | rgt | data
3 | 2 | 3 | 4 | Child 1.1
4 | 2 | 5 | 6 | Child 1.2
하나의 결점을 가진 아이의 수를 계산하다.
(right - left - 1)/2
node 결점과 모든 부모 결점을 선택합니다.
SELECT * FROM table_name WHERE node.lft BETWEEN lft AND rgt
결점 Child 1.2와 모든 상위 결점을 선택한 경우:
SELECT * FROM tabla_name WHERE 5 BETWEEN lft AND rgt
결과는 다음과 같습니다.
id | parent_id | lft | rgt | data
1 | | 1 | 14 | root
2 | 1 | 2 | 7 | Child 1
4 | 2 | 5 | 6 | Child 1.2
이렇게 하면 귀속 조회보다 훨씬 빠르다.
주의:left와right는 데이터의 보존자입니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
better_nested_set - 귀속 대신 구조 설계다음과 같은 나무가 있습니다. 다음과 같은 구조로 작성할 수도 있습니다. 숫자는 좌우 경계를 대표하고 데이터베이스에 있는 표의 구조는 다음과 같다. 부결점parent의 모든 아이를 선택하십시오: 결점 차일드 1의 모...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.