다음과 같은 경우가 있습니다. 중첩 된 집합 모델을 사용하여 계층 적 데이터를 저장하고 있습니다. 이 모델은 특정 클라이언트에게만 특정 하위 범주를 사용할 수있는 옵션을 추가하려는 경우를 제외하고는 거의 동일합니다. 테이블을 편집하는 것은 데이터베이스에 새 테이블을 다시 보내는 VB.NET 응용 프로그램에서 외부 적으로 수행됩니다.클라이언트 전용 노드가있는 중첩 세트 모델
나는 이것을 달성하기위한 두 가지 다른 옵션을 생각해 보았습니다. 첫 번째는 클라이언트 ID를 연결하는 새 client_id 필드를 추가하는 것입니다. 그런 다음 쿼리를 수행하여 문자열에서 특정 숫자를 찾습니다. # 1은 모든 사용자를 가리키는 반면, 다른 숫자는 특정 클라이언트를 나타냅니다.
+-------------+----------------------+-----+-----+---------+
| category_id | name | lft | rgt |client_id|
+-------------+----------------------+-----+-----+----------
| 1 | MAINCAT1 | 1 | 20 | 1|
| 2 | subcat1 | 2 | 9 | 2;4|
| 3 | subcat2 | 3 | 4 | 3|
| 4 | subcat3 | 5 | 6 | 1|
| 5 | subcat4 | 7 | 8 | 2;3|
| 6 | MAINCAT2 | 10 | 19 | 1|
| 7 | subcat1 | 11 | 14 | 1|
| 8 | subcat2 | 12 | 13 | 1|
| 9 | subcat3 | 15 | 16 | 3;4|
| 10 | subcat4 | 17 | 18 | 3;4|
+-------------+----------------------+-----+-----+---------+
두 번째 옵션은 모든 클라이언트에 대해 새 필드를 추가하고 일종의 표식 (예 : 1/0)을 사용하여 범주를 활성화/비활성화합니다.
+-------------+----------------------+-----+-----+---------+---------+
| category_id | name | lft | rgt |client_2 |client_3
+-------------+----------------------+-----+-----+---------+---------+
| 1 | MAINCAT1 | 1 | 20 | 1| 1|
| 2 | subcat1 | 2 | 9 | 0| 1|
| 3 | subcat2 | 3 | 4 | 0| 1|
| 4 | subcat3 | 5 | 6 | 1| 0|
| 5 | subcat4 | 7 | 8 | 1| 0|
| 6 | MAINCAT2 | 10 | 19 | 1| 1|
| 7 | subcat1 | 11 | 14 | 0| 1|
| 8 | subcat2 | 12 | 13 | 0| 1|
| 9 | subcat3 | 15 | 16 | 1| 0|
| 10 | subcat4 | 17 | 18 | 0| 1|
+-------------+----------------------+-----+-----+---------+---------+
필드 추가/제거가 필요하지 않으므로 첫 번째 옵션을 선호합니다. 나는 쿼리를 수행하는 것이 더 느릴 것이라고 생각하지만 테이블을 매우 길게 만들지는 않을 것입니다. 어떤 방법이 더 적절하다고 생각합니까?
함께 가지 마십시오. lft, rgt 인접 목록으로 이동하십시오. CSV는 우습다. 두 번째 직업 경력자 것입니다. – Drew
저는 이미 lft, rgt를 사용하고 있습니다. –
맨 덩어리, 마지막 열에있는 csv와 함께 가지 마십시오. – Drew