2012-06-14 4 views
1

난 내 레일 응용 프로그램에 대한 데이터베이스를 구성하는 방법에 제로 다운 수 없습니다. 여기에서 발견 한 질문과 Google에서 제한된 클래스 상속 문제를 논의합니다. 수업 수가 아주 많으면 어떨까요? schema.org hierarchy에 식별 된 모든 유형에 대해 유형별로 하나의 클래스를 갖고 싶다면 클래스를 어떻게 구성해야합니까?Rails에서 다중 레벨 상속 모델을 어떻게 구성해야합니까?

CITIER이라고하는이 보석처럼 클래스 테이블 상속에 대한 지원을 찾았지만 단일 테이블 상속을 구현하는 것이 더 간단하고 잘 지원되는 것 같습니다.

STI로 고정해야합니까, 아니면 MTI를 사용해야합니까?

+0

여러 테이블 상속에서이 흥미로운 게시물을 발견했습니다. mediumexposure.com/multiple-table-inheritance-active-record – rohitmishra

답변

0

IMHO, STI는 클래스가 캡슐화 할 두 객체가 거의 모든 관련 속성을 공유하는 곳에서 의미가 있습니다. 따라서 신문에서 편집자 클래스가 상속되는 Employee 클래스 (클래스 편집기 < Employee)를 갖는 것이 합리적 일 수 있습니다. 왜냐하면 편집자가 직원의 유형이 매우 다를 수 있기 때문입니다. 하나의 모델을 다른 모델의 하위 클래스로 간주하는 것이 합리적이라 할지라도 모델링 대상 오브젝트가 너무 많아서 STI 문제가 발생할 수 있습니다. 단일 테이블이 너무 드문 드문 채워질 수 있습니다. 이 경우 객체를 모델링하기 위해 "has"와 "belongs to"를 사용하는 것이 더 효율적이라는 것을 알았습니다. YMMV.

+0

또한 STI에 모든 객체를 두는 것이 많은 null로 이어질 것이라고 생각합니다. 모든 객체가 다른 모든 객체의 부모 객체 인 객체 객체와 연결되어 있어야합니다. 다형성 연관을 사용해야합니까? 또는 "has"를 사용하여 다른 객체와 thing 객체를 연결해야합니까? – rohitmishra

관련 문제