데이터베이스 계층 구조-다른 노드 표현

appex

관계형 데이터베이스 내에서 계층 구조를 모델링하는 데 대한 피드백 / 지침을 찾고 있습니다. 내 요구 사항에 따르면 트리 구조가 필요하며, 여기서 트리 내의 모든 노드는 다른 유형의 데이터를 나타낼 수 있습니다. 예를 들면 :

  • 조직
    • 부서 1
      • 직원 1
      • 직원 2
      • 사무 기기 1
      • 사무 기기 2
    • 부서 1
      • 1 팀
    • 사무 기기 3

위의 예에서 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 열이 있음). 유형 열은 어떤 유형 노드 (예 : 조직, 직원 등)가 표시되는지를 나타내는 조회입니다.

두 가지 접근 방식 모두 장단점을 봅니다.

추가 정보 :

  • 이 테이블의 유지 관리 가능성을 염두에두고 싶습니다. 추가, 삭제, 변경 등이있을 것입니다.
  • 이 데이터를 사용자 인터페이스에 표시해야합니다. 그러면 노드 유형과 이름을 나타내는 아이콘 만 표시 될 것입니다.
  • 다른 데이터 요청에 대해 트리 전체에 일부 집계를 수행해야합니다.
  • 이 구조는 MySQL 데이터베이스에 의해 지원됩니다.

비슷한 시나리오를 경험 한 사람이 있습니까? 이 접근법에 대한 정보와 지침을 꽤 많이 검색했지만 정보를 찾을 수 없었습니다. 나는 내가 찾고있는 것에 대해 내가 사용하지 못하는 특정 용어가 있다는 느낌이 든다.

커뮤니티의 도움에 미리 감사드립니다.

월터 미티

"중첩 된 집합"을 살펴볼 수 있습니다. 이것은 두 개의 제한으로 정렬 된 집합의 하위 집합을 나타내는 모델입니다.이를 "왼쪽"및 "오른쪽"이라고 부를 수 있습니다. 이 모델에서 (6,7)은 (5,10) 내부에 "중첩"되어 있기 때문에 (5,10)의 하위 집합입니다. 계층 구조에 대해 별도의 테이블을 갖는 디자인과 함께 중첩 된 집합을 사용하면 계층 구조 테이블에 leftID, rightID, ObjectID (FK) 및 수준의 4 개 열이 생성됩니다.

여기클릭하여 볼 수있는 Wikipedia에 중첩 된 집합 모델에 대한 좋은 설명이 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

계층 구조 데이터베이스 테이블에서 노드 이동

분류에서Dev

JPA (고정 깊이)로 계층 적 데이터 구조 구현

분류에서Dev

데이터베이스 (ngFor)에서 드롭 다운 구현

분류에서Dev

계층 구조를위한 Meteor 데이터베이스 설계

분류에서Dev

계층 구조의 데이터 표현을위한 자바 8 트리 구조에 POJO로 변환

분류에서Dev

테이블의 다중 계층 구조에 대한 루트 노드 및 모든 하위 노드를 가져 오는 방법

분류에서Dev

Spark 데이터 프레임 또는 SQL에서 선호 계층 구조가있는 다중 레코드 선택

분류에서Dev

관계형 데이터베이스 : 하나의 트리 구조를 다른 트리 구조로 통합

분류에서Dev

노드 유형에 대한 다른 구조체로 C에서 AST 표현

분류에서Dev

MySQL은 계층 적 일대 다 데이터 구조의 조상 추적

분류에서Dev

콘텐츠 다운 스트림을 기반으로 계층 구조의 각 노드에서 재귀 적으로 크기를 계산하는 MySQL 8.0 쿼리

분류에서Dev

iOS : 명령 오버레이 구현 용 : 다른 분기를 배치하기 전에 뷰 계층 구조의 한 분기를 배치해야합니다.

분류에서Dev

셰이프 클래스의 올바른 계층 구조

분류에서Dev

다중 부모 다형성 계층이있는 C ++ VTable 구현

분류에서Dev

앱 계층을 새 하드웨어의 새 데이터베이스로 다시 지정

분류에서Dev

계층 적 테이블 구조에서 계층 적 순서 행 빌드

분류에서Dev

오라클 데이터베이스에서 다 대다 관계를 구현하는 방법이 맞습니까?

분류에서Dev

MySQL은 데이터를 완전히 다른 데이터베이스 구조로 마이그레이션하고 관계를 그대로 유지합니다.

분류에서Dev

MySQL은 데이터를 완전히 다른 데이터베이스 구조로 마이그레이션하고 관계를 그대로 유지합니다.

분류에서Dev

Sitecore : 다른 데이터베이스의 참조 항목 (소스 필드)

분류에서Dev

Sitecore : 다른 데이터베이스의 참조 항목 (소스 필드)

분류에서Dev

클래스 계층 구조에서 파이썬 데코레이터를 다루는 방법?

분류에서Dev

두 개의 다른 테이블을 결합하는 계층 구조 SQL 서버

분류에서Dev

다른 HTML 드롭 다운 선택에 데이터베이스 값 표시

분류에서Dev

데이터베이스의 계층 적 데이터를 표시합니까?

분류에서Dev

단일 및 이중 목록 노드에 대한 템플릿 계층 구조를 구성하는 방법 C ++

분류에서Dev

Adobe Edge Animate CC 파일 구조 계층-에셋 및 이미지를 다른 폴더 위치에서로드하는 방법 (2014.1.1 릴리스)

분류에서Dev

지도 필터 람다 식에 대해 서로 다른 클래스 계층 구조의 루트에서 두 개의 필드를 사용하여

분류에서Dev

데이터베이스 설계에서 이진 관계 대 비 이진 구현

Related 관련 기사

  1. 1

    계층 구조 데이터베이스 테이블에서 노드 이동

  2. 2

    JPA (고정 깊이)로 계층 적 데이터 구조 구현

  3. 3

    데이터베이스 (ngFor)에서 드롭 다운 구현

  4. 4

    계층 구조를위한 Meteor 데이터베이스 설계

  5. 5

    계층 구조의 데이터 표현을위한 자바 8 트리 구조에 POJO로 변환

  6. 6

    테이블의 다중 계층 구조에 대한 루트 노드 및 모든 하위 노드를 가져 오는 방법

  7. 7

    Spark 데이터 프레임 또는 SQL에서 선호 계층 구조가있는 다중 레코드 선택

  8. 8

    관계형 데이터베이스 : 하나의 트리 구조를 다른 트리 구조로 통합

  9. 9

    노드 유형에 대한 다른 구조체로 C에서 AST 표현

  10. 10

    MySQL은 계층 적 일대 다 데이터 구조의 조상 추적

  11. 11

    콘텐츠 다운 스트림을 기반으로 계층 구조의 각 노드에서 재귀 적으로 크기를 계산하는 MySQL 8.0 쿼리

  12. 12

    iOS : 명령 오버레이 구현 용 : 다른 분기를 배치하기 전에 뷰 계층 구조의 한 분기를 배치해야합니다.

  13. 13

    셰이프 클래스의 올바른 계층 구조

  14. 14

    다중 부모 다형성 계층이있는 C ++ VTable 구현

  15. 15

    앱 계층을 새 하드웨어의 새 데이터베이스로 다시 지정

  16. 16

    계층 적 테이블 구조에서 계층 적 순서 행 빌드

  17. 17

    오라클 데이터베이스에서 다 대다 관계를 구현하는 방법이 맞습니까?

  18. 18

    MySQL은 데이터를 완전히 다른 데이터베이스 구조로 마이그레이션하고 관계를 그대로 유지합니다.

  19. 19

    MySQL은 데이터를 완전히 다른 데이터베이스 구조로 마이그레이션하고 관계를 그대로 유지합니다.

  20. 20

    Sitecore : 다른 데이터베이스의 참조 항목 (소스 필드)

  21. 21

    Sitecore : 다른 데이터베이스의 참조 항목 (소스 필드)

  22. 22

    클래스 계층 구조에서 파이썬 데코레이터를 다루는 방법?

  23. 23

    두 개의 다른 테이블을 결합하는 계층 구조 SQL 서버

  24. 24

    다른 HTML 드롭 다운 선택에 데이터베이스 값 표시

  25. 25

    데이터베이스의 계층 적 데이터를 표시합니까?

  26. 26

    단일 및 이중 목록 노드에 대한 템플릿 계층 구조를 구성하는 방법 C ++

  27. 27

    Adobe Edge Animate CC 파일 구조 계층-에셋 및 이미지를 다른 폴더 위치에서로드하는 방법 (2014.1.1 릴리스)

  28. 28

    지도 필터 람다 식에 대해 서로 다른 클래스 계층 구조의 루트에서 두 개의 필드를 사용하여

  29. 29

    데이터베이스 설계에서 이진 관계 대 비 이진 구현

뜨겁다태그

보관