0

사용 사례에 대해 Concrete Table Inheritance을 사용하려고 생각하고 있고 식별 할 수없는 관계와 식별 할 수없는 관계를 사용해야하는지, 그리고 정확하게 테이블을 구성하는 방법을 결정하는 데 도움이 필요합니다.하위 엔티티가 다른 데이터를 포함 할 수있는 구체적인 테이블 관계를 모델링하는 방법, 데이터가 동일한 제네릭 유형에 속하는 경우?

내 사용 사례

이 다른 product_options를 제외하고, 다른 제품과 동일 큰 형태이며, 즉 나는 형태는 많은 것들에 대한 대부분 동일한 HTML 양식 개체가 정확한 product_type에 따라 다릅니다. 저장/검색을 위해 양식 데이터를 테이블에 저장하려고합니다. 콘크리트 테이블 구현을 사용하고 싶다고 생각합니다. 그렇다면 피드백이 필요합니다. 여기

내가 생각하고 무엇을 : 나는 "A"타입의 제품에 대한 정보를 검색하려면, 내가

  1. 읽기 selection_for,

    enter image description here

    말을 검색 product_type

  2. product_type을 기반으로 적절한 옵션 표를 읽었습니다.
이것은 복잡한 조금 것 같다

...

은 또한 배후 데이터베이스를 구동하기 위해 교리 ORM을 사용하고, 그래서 같은 데이터 조작은 ORM API를 통해 구현하기 어려운 것으로 증명할 수있다, 그러나 나는 싶었 먼저이 옵션을 고려하십시오.

질문 :

  • 내 설계 작업은-은 같은 것인가? 그것을 개선 할 수 있습니까? 콘크리트 테이블 디자인을 올바르게 구현 했습니까?
  • 제품 옵션 테이블에 대해 식별하거나 식별 할 수없는 관계를 사용합니까?

나는 또한과 같이 대안 다이어그램을 수행 할 수 있습니다 그 외래 키 중 하나가 NULL이 아닌 경우

enter image description here

, 그때 나는 키 것을 읽고 다음을 검색하기 위해 적절한 테이블을 읽을 데이터.

질문 :

첫 번째에 비해 두 번째 방법에 대한 장점이나 단점이 있습니까?

답변

0

Doctrine이 밝혀졌습니다. ORM이 이것을 처리했습니다.3 개 가지 방법 :

슈퍼 클래스 매핑

내 경우에는 3 개 테이블을 작성, 각 공유 한 모두와 콘크리트 필드/열

단일 테이블 상속

는에 모든 옵션을 넣습니다 단일 테이블 (하나의 테이블, 다른 테이블이 사용되지 않음). discriminator 필드를 사용하여 올바른 옵션을 가져옵니다.

클래스 테이블 상속

일명 JOINED 유형입니다. 필자의 경우 4 개의 테이블을 생성한다. 옵션 테이블에는 관련 옵션 만 포함되며 주 테이블에는 모든 공유 필드와 discriminator 필드가 포함됩니다.

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html

나는 내가 찾던 바로 것 같아요. 이것은 SQL 작업을 내 손에서 수행합니다.

이제 어떤 것을 사용할 지 결정하십시오 ....

관련 문제