관계형 데이터베이스 내에서 계층 구조를 모델링하는 데 대한 피드백 / 지침을 찾고 있습니다. 내 요구 사항에 따르면 트리 구조가 필요하며, 여기서 트리 내의 모든 노드는 다른 유형의 데이터를 나타낼 수 있습니다. 예를 들면 :
위의 예에서 Organization, Department, Employee, Office Equipment 및 Team은 모두 데이터베이스 내에서 서로 다른 테이블이 될 수 있으며 서로 다른 속성이 연관 될 수 있습니다. 또한 사무 장비와 같은 것들이 반드시 부서에 연결될 필요는 없으며 팀 또는 조직과 연결될 수 있습니다.
이 모델링과 관련된 두 가지 아이디어가 있습니다.
첫 번째 아이디어는 아래와 같은 계층 구조 테이블을 갖는 것입니다.
계층
hierarchy_id (INT, NOT NULL)
parent_hierarchy_id (INT, NOT NULL)
organization_id (INT, NULL)
department_id (INT, NULL)
team_id (INT, NULL)
office_equipment (INT, NULL)
위의 표에서 각 열은 해당 테이블에 대한 외래 키 참조가있는 nullable 필드입니다. 아이디어는 모든 행에서 하나의 열만 채워지는 것입니다.
두 번째 아이디어는 아래와 같은 단일 테이블을 갖는 것입니다.
계층
hierarchy_id (INT, NOT NULL)
parent_hierarchy_id (INT, NOT NULL)
유형 (INT, NOT NULL)
이 경우 위의 테이블은 계층 구조를 관리하고 각 "노드 테이블"에는 계층 테이블에 대한 외래 키 참조를 갖는 hierarchy_id가 있습니다 (예 : 조직에 hierachy_id 열이 있음). 유형 열은 어떤 유형 노드 (예 : 조직, 직원 등)가 표시되는지를 나타내는 조회입니다.
두 가지 접근 방식 모두 장단점을 봅니다.
추가 정보 :
비슷한 시나리오를 경험 한 사람이 있습니까? 이 접근법에 대한 정보와 지침을 꽤 많이 검색했지만 정보를 찾을 수 없었습니다. 나는 내가 찾고있는 것에 대해 내가 사용하지 못하는 특정 용어가 있다는 느낌이 든다.
커뮤니티의 도움에 미리 감사드립니다.
"중첩 된 집합"을 살펴볼 수 있습니다. 이것은 두 개의 제한으로 정렬 된 집합의 하위 집합을 나타내는 모델입니다.이를 "왼쪽"및 "오른쪽"이라고 부를 수 있습니다. 이 모델에서 (6,7)은 (5,10) 내부에 "중첩"되어 있기 때문에 (5,10)의 하위 집합입니다. 계층 구조에 대해 별도의 테이블을 갖는 디자인과 함께 중첩 된 집합을 사용하면 계층 구조 테이블에 leftID, rightID, ObjectID (FK) 및 수준의 4 개 열이 생성됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다