2009/3/16 Ramana Kumar <[email protected]>

> Hi Fabio
> I looked up the NHibernate in Action and did a quick google search.  I
> might be missing somthing obvious here....
>
> If I use a list of components, the properties of the component (Par and
> Handicap) would end up in the child table.  Which is what I am trying to
> avoid.
> Ramana
>


I don't quite see why you are trying so hard to avoid that. Seems to me you
are actively trying to do it the "wrong" way, and because of that only
making things more difficult. Now I'm not familiar with what kind of queries
you would like to run, but if you would for example like to select all
courses with at least three holes with par 5, in option 1 this is a simple
"join, group by ... having ..." query, but in option 2 it seems to me you
have much more work to do. You would have to spell out each par-column and
then count them in some way. Can't think of how right now.

Maybe this example won't happen in real life, but my point is that option 1
is more flexible and feels more right, and appears easier to implement.

I've seen systems implemented according to option 2 before. Not pretty...
E.g. a "control unit" can control at most four objects, so let's have
UNIT(ID, OBJ1, OBJ2, OBJ3, OBJ4) and now we have to write all queries like
WHERE OBJ1=x OR  OBJ2=x OR OBJ3=x OR OBJ4=x. Imagine what that would be with
18 OBJ... :)  Btw... that system has been rewritten now.

Regards,
Oskar



> On Mon, Mar 16, 2009 at 2:33 PM, Fabio Maulo <[email protected]> wrote:
>
>>  list of <component>
>>
>> 2009/3/16 Ramana Kumar <[email protected]>
>>
>>  Hi
>>> I have a mapping question and I could use some help
>>>
>>> In my GolfHandicapManager system, I have a domain object called Course.
>>> I want to have Par and Handicap assigned to each hole of the course (i.e
>>> hole 1 is Par 4 and Handicap 7, Hole 2 is Par 5 and Handicap 14 etc).  I
>>> have the following options that I can think of.  All typed from memory...
>>>
>>> Option 1 - Use List or Primitive-Arrays
>>> ==============================
>>> <list name="ParAndHandicaps" lazy="false" table="PAR_AND_HANDICAP"
>>>      <key column="COURSE_ID"/>
>>>     <index column="HOLE_NUM"/>
>>> </list>
>>>
>>> Table definition
>>> ============
>>> COURSE (ROW_ID, NAME)
>>> PAR_AND_HANDICAP (ROW_ID, COURSE_ID, HOLE_NUM, PAR, HANDICAP)
>>>
>>> Pros - Mapping is pretty straight forward
>>> Cons - too normalized:-)  I would ideally like to have the pars and
>>> handicap on the same table as course.  Makes it easier to understand the
>>> table etc.
>>>
>>> Option 2 - Create additional properties in Course
>>> ====================================
>>> Table Definition
>>> COURSE (ROW_ID, NAME, HOLE1_PAR, HOLE1_HANDICAP .... HOLE18_PAR,
>>> HOLE18_HANDICAP)
>>>
>>> Pros - All the information about the couse is in the same table
>>> Cons - Just does not feel correct :-), index operation is not possible.
>>>
>>> Since I know that there are exactly 18 holes in a course (I know that I
>>> have to sub-class a 9 hole couse too...), is there a way to map all the
>>> elements of the List on the parent table itself?
>>>
>>> Any thought on how to map it correctly?
>>> Thanks
>>> Ramana
>>>
>>>
>>>
>>>
>>
>>
>> --
>> Fabio Maulo
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to