2012-08-28 3 views
0

그래서 약간 복잡한 데이터 모델을 가지고 있으며이를 모델링하는 방법을 찾으려고합니다.DB 스키마 및 레일스 연결

나는 Client입니다. 그 Client belongs_to a Firm.

- Firm Size (0.2, 0.4, 0.6, etc.) 
- Firm Type (Big, Small, Medium) 
- Priority Level (1, 2, 3, 4, 5 - from low to high) 

User has_many Clients :

Firm

같은 특성을 갖습니다.

일예 :

는 사용자가 각 기업의 특성을 편집 할 수 필요가 Firm Size (예 : 0.95)에 새 크기를 추가하십시오.

그래서 나는 Firm 모델을 가질 생각이었습니다. 그런 다음 각 속성에 대한 모델을 개별적으로 갖습니다. 그래서 사용자가 회사 크기 등에 새로운 레코드를 추가 할 수 있습니다.

나는 다소 혼란 스러우며, 각각에 대한 항목을 만들지 않을 것입니다. Firm foreign_ids와 모든? 어떻게 데이터를 조작 할 수 있습니까?

예. 한 기업의 경우, 기록은 다음과 같습니다 나는 회사의 크기를 찾으려 할 때

:name => "Firm A", :firm_size_id => 1, :firm_type_id => 2, :priority_level_id => 1 

그런 다음, 나는이 같은 쿼리를 실행해야합니다 : FirmSize를 들어

Firm.find(1).firm_size.size 

을, 'size'속성의 이름은 무엇입니까? 내가 그렇게한다면이 조금 어색하게 보이는

FirmSize.find(1).size

을? :처럼, 그때는 레일 위의 같은 전화를 할 것입니다. 또는 속성 이름을 name으로 지정 하시겠습니까? FirmSize.find(1).name -하지만 그게 전부인지는 모르겠다. 이 경우 회사의 규모입니다.

동일은 'FirmType'와 '여기서 PriorityLevel'등을 적용

나는 이러한 특성에 어떤 계산을하고 싶어하면 나는 좀 이상한 체조를 할 필요가 없습니다 그리고 다른 관심사가 같은이며, :

product = Firm.find(1).firmsize.size * Firm.find(2).firmsize.size 

약간 어색한 것처럼 보입니다 ... 아니면 정상입니까?

내가 접근하는 방식을 명확히하는 데 도움이 될 것입니다.

감사합니다.

답변

0

왜 회사의 크기, 유형 및 우선 순위 수준에 대해 별도의 모델을 만들고 싶습니까?
어떤 정보에 대해서도 속성/별도 모델이있는 목적을 이해해야합니다.

질문을 보면서 XML 하위 요소 &과 비슷한 개념이 내 마음에 들었습니다.이 오프 주제,하지만 내가 믿는하지만이 모든 일에 더 많은 선명도를 얻어야한다 : 질문에 돌아 오는

, 난 당신이로 Firm을 만들기로 계속 말하고 싶지만 모델로, size, type etc.을 속성으로 사용합니다. 이를 구현에 적용한 다음 다시 질문을 살펴보십시오.

내가 그렇게 말하는 이유는 주된 이유는 내가 FirmType, FirmSize & FirmPriorityLevel having more than a fixed set of values &
귀하의 비즈니스 로직이 큰 방법으로 Firmtype 또는 FirmSize의 중심되지 않습니다 볼 수 없다는 것입니다.

후자의 경우에는 전략을 다시 생각해보십시오.
P.S. 나는 당신이 뭔가 잘못하고 있다고 말하지 않고 그냥 최선을 다하고 있는지 확인하십시오.

+0

나는 당신이 다음과 같이 동의한다 : 나는 최선의 방법으로 그것을하고있다. 그래서 여기에 내가 더 명확하게 말하면서 물었습니다. 필자가 분리해야하는 이유는 FirmSize, FirmType, FirmPriorityLevel이 고정 값이 아니기 때문입니다. 사용자는 새로운 유형과 우선 순위 수준뿐 아니라 새로운 '크기'를 쉽게 만들 수 있어야합니다. 또한 두 가지 값을 갖는 방법이 있어야합니다. 즉, A FirmSize는 '빅'일 수 있지만 '값'은 0.6이며, 작은 것은 0.2입니다. 그러나 사용자가 프런트 엔드를 선택할 때 '큰'또는 '작은'을 선택하기 만하면됩니다. 다른 속성에도 동일하게 적용됩니다. 생각 하시겠습니까? – marcamillion

+0

설명하는 시나리오는 TYPICAL입니다. 이걸로 너를 괴롭히는거야. 다양한 크기와 유형 및 사용자가 만드는 이러한 모든 소란을 잊어 버려. 그냥 내가 권고 한 방식대로 코딩하십시오. –

+0

당신이 제공 한 맥락을 바탕으로, 나는 내가 말한 것이 옳다고 믿습니다. 아직도 성가 시게하는 것이 있다면, 시나리오를 언급하면 ​​우리가 그 것을 토론 할 수 있습니다. –