선택적 1 : 1 특성을 자체 별도 모델로 분리하는 것이 장단점입니다.레일스 ActiveRecord 및 DB 정규화
예를 들어, 난 그냥이 같은 레일 코드가 발생했습니다
class Dogs << ActiveRecord::Base
# :id (pk), :breed, :weight, :height, :tail_length
end
class DogSpotsInfo << ActiveRecord::Base
# :dog_id (pk), :spot_color, :avg_spot_size, :num_spots
end
을하지만 내가 (자리 필드가 필요 null로 떠나는)을했을 방법입니다
class Dogs << ActiveRecord::Base
# :id, :breed, :weight, :height, :tail_length, :spot_color, :avg_spot_size, :num_spots
end
상기 DB 수준, 나는 유일한 차이점은 선택적 속성을 포함하는 쿼리가 다른 조인이 필요하다고 생각합니까?
이전 접근 방식에 대한 다른 단점이 있습니까? 어떤 프로가 있습니까?
편집 : 개의 20 % 반점, 어쩌면 하나는 이전의 접근 방식은 빠른 순차적 스캔하지만 그건 만약 내가 그것에 대해 100 % 확실하지 않다, 그리고 프로 한 말을 나는 거대한 개 테이블에 생각
유일한 프로 그것은 조숙 한 최적화처럼 보인다.
제가 생각할 수있는 또 다른 직업은 모델을 더 작고 깨끗하게 유지하는 것입니다. 그러나 이것이 목표라면 아마도 DB 구조에 영향을주지 않고 has_spots :spot
과 같은 것을 할 수 있을까요? 가장 좋은 방법은 무엇입니까?
개인적으로 저는 ActiveRecord의 has_one 연관 유형에 대한 팬이 아닙니다. 필드의 하위 집합에 제약 조건 (예 : 호환되지 않는/허용되지 않는 열 값 조합)이있는 경우에만 의미가 있습니다. 사람들이 데이터베이스에 넓은 테이블을 두려워해서는 안됩니다. – Toshio