찾다

 >  Q&A  >  본문

MySQL - 복잡한 계층적 관계 - 다중 M:N?

d3.js 트리/덴드로그램에 대한 계층적 JSON을 빌드하기 위해 PHP와 함께 사용하는 MySQL 쿼리가 있습니다.

스키마와 기존 쿼리를 보려면 바이올린을 사용하세요.

program_outcome 데이터O와 유닛 데이터U, development_level 데이터 사이에 다대다 관계인 추가 데이터 관계 D를 추가하는 방법을 고민 중입니다.

아래 사진과 같이 D 3가지 종류만 있습니다.

나에게 필요한 개념도:

U은 각 O 중 하나의 D에만 관련됩니다(명확성을 위해 하나의 O 분기만 표시됩니다).

그래서 U는 D의 후손이자 O의 손자여야 합니다. 다른 O 지점의 경우 동일한 UD 유형이 같거나 다를 수 있습니다.

바이올린에서 볼 수 있듯이 OU 사이의 관계는 현재 조회/관계 테이블 program_outcome_unit_lookup을 통해 구현됩니다.

또한 조회 테이블을 변경할 수 있으므로 program_outcome_unit_lookup 테이블 대신 두 개의 조회 테이블을 사용할 수 있습니다.

O -> D

->

이를 달성하는 방법에 대한 아이디어가 있습니까? 쿼리 이후의 PHP(데이터베이스 바이올린에 없음...)는 다음과 같지만 솔루션과 관련이 없을 수 있으며 이는 본질적으로 데이터베이스 문제입니다. 으아아아

업데이트

두 가지 분기로 확장된 개념 다이어그램 보기:

P粉354948724P粉354948724242일 전466

모든 응답(1)나는 대답할 것이다

  • P粉427877676

    P粉4278776762024-03-30 12:45:05

    귀하의 모델은 모든 (고유) 튜플 (O, U) 都被分配了一个强制值 D인 것 같습니다.

    다음에 열을 추가하여 이 모델을 구현할 수 있습니다. program_outcome_unit_lookup 表添加 D 으아아아

    또한 기본 키가 될 수 있지만 어느 쪽이든 고유해야 합니다(현재 이 제약 조건을 적용하고 있지 않습니다). (program_outcome_fk, unit_fk)

    이제 모든

    협회”.U 都可以是任意多个 O 的成员,但根据要求,“每个 U 将仅与每个 D

    예: 업데이트된 그래프의 store

    는 고유 제약 조건을 위반하기 때문입니다. U1O1-D2-U1O2-D1-U1),您可以将值 ((1,2,1),(2,1, 1))。根据要求,您还不能添加例如O2-D2-U1

    또한

    D 添加一个新表。如果不是每个 O 都允许使用每个 D (例如,如果不允许 O2 分支使用 D1),则还需要一个表 (O, D)를 제공해야 합니다. 그렇지 않으면 필요하지 않습니다.

    회신하다
    0
  • 취소회신하다