2011-03-01 3 views
1

저는 PHP 프로젝트를 루비 레일로 변환하고 있습니다. 이전 프로젝트는 mysql을 데이터베이스로 사용했고 레일스 프로젝트는 동일한 작업을 수행했습니다.모델링 디자인 질문 (Ruby On Rails)

프로젝트에는 코스가 가질 수있는 "단계"개념이 있습니다. 단계에는 5 가지 유형 중 하나가 있습니다. (퀴즈, 비디오, 텍스트 등) 분명히 각 단계에 필요한 데이터 유형이 다릅니다.

이전에 모델링 한 방식은 모든 테이블을 동일한 테이블에 저장하고 해당 테이블의 직렬화 된 PHP 개체를 보유하는 필드를 갖는 것입니다. 나는 이것이 몇 가지 이유로 좋지 않다고 생각한다 ... 직렬화 된 데이터에 대해 실제로 질의 할 수 있고, 데이터를 추가하거나 객체의 구조를 매우 어렵게 만든다.

개체 대신 데이터베이스에서이 데이터를 모델링하는 것이 더 합리적일까요?

답변

1

일반적으로 예. - 같은 테이블에 저장된 공통 조상으로부터 상속 여러 모델

  1. 단일 테이블 상속 : 레일이를 모델링하는 두 가지 방법이있다. 단계가 실제로 서로 유사하다면 좋습니다. 여기에서 부모 모델에 has_many을 호출합니다.

  2. 다형성 협회 - 협회 매크로는 하나 개의 연결에서 다른 모델 (각각이 자신의 테이블을 가질 수)가 할 수있는 옵션 :polymorphic 있습니다. 네 발걸음이 거의 같지 않으면 나는 그걸 갈거야.

+0

답장을 보내 주셔서 감사합니다. –

+0

이 내용이 더 깊어졌고 나는 그것이 어떻게 다형성인지를 보지 못했습니다. http://stackoverflow.com/questions/5156948/rails-am-i-modeling-this-correctly –