26

symfony 프로젝트에서 Doctrine 1.2를 사용하고 있습니다. 및 스키마에서 콘크리트 및 열 집계 상속 유형을 혼합하는 것을 고려하고 있습니다. 열 집계를 사용하면 부모 테이블에서 쿼리하여 얻을 수 있습니다. 부모와 자식 레코드 모두를 제공하는 반면, 구체적인 상속을 통해 더 깨끗한 스키마를 얻을 수 있습니다. 또한 믹스도 같은 상속 체인에 포함됩니다. 스키마 파일을 어떻게 작성합니까? 다음과 같이?동일한 스키마의 서로 다른 상속 유형

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: concrete 
D: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 


E: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   2 

어떤 위험 /주의 사항이 있습니다

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 

아니면이 같은

?

+0

모습, C 일어난다 다른 누구도 공유 할 경험이 없습니다. 어떻게 이런 일이 일어 났는지 알고 싶습니다. 초기 생각은 잘 작동하지 않는다는 것입니다. – benlumley

+0

@benlumley 글쎄, 우리는 그것을 시험해 보았고, 우리는 시험을하고 있으며, 지금은 꽤 잘 작동하는 것처럼 보인다. 그래도 문제가 발생하면 게시물을 편집하고 덧글을 추가하겠습니다. 우리는 스키마의 두 번째 버전을 사용해 보았습니다. – greg0ire

+0

@ greg0ire : 구체적인 상속이 관련된 경우 BEWARE 관계 :-) 당신은 기본 테이블에 정의하지 마십시오. 결코 혼합되어서 어느 정도까지 당신이 겪게되는 어떤 이슈를 듣기에 너무 흥미롭지는 않습니다. – prodigitalson

답변

1

은 당신이 원형 상속을 피하기 또는 다이아몬드 모양의 상속은 당신이 잘 될 것이며, 다음과 같이 분명히 보이는 (이

원형 상속을 사용할 수

클래스 A는 B 을 확장 클래스 B는 A를 확장한다

또는

,515,

CLASS A는 C

CLASS B는

CLASS의 C는 다이아몬드 모양의 상속에 대해 좀 더 원형 인

연장 EXTENDS 연장된다. 조건은 다음 유형

는 클래스 A

CLASS B는

CLASS의 C는

CLASS의 D는 B 연장 EXTENDS EXTENDS 일어날 때

+0

당신은 교리에서 다중 상속이 가능하다는 말을하고 있습니까? 이후 그것은 PHP와 함께, 나는 그것을 의심 ... 어휘에 대한 +1 – greg0ire

+0

나는 이러한 제한이없는 한 오래 말하려고합니다. 우리는 상속을 안전하게 할 수 있습니다. – footy

관련 문제