This right?

Product
-------------------
ProductID

Page
-------------------
ProductID (FK to product)
PageNumber

Text
-------------------
ProductID (FK to product)
PageNumber (FK to Page:PageNumber)

Why not map this as:

Product
-------------------
ProductID (PK)

Page
-------------------
PageID (PK)
ProductID (FK to product)
PageNumber

Text
-------------------
PageID(PK, FK to Page)

And everyone is happy, and it is a helleva lot easier to map in Transfer.

Mark






On Thu, Dec 18, 2008 at 10:04 AM, Ken Cummins <[email protected]> wrote:
>
> Ah!  There can be any number of text elements per page, depending on
> the format of that particular page.  And the user can change the
> format of the page on the fly.  Therefore, you need to know which text
> element of which page of the product.  And the pages do not have a
> monolithic PK, as you can have any number of pages per product.
>
> Here's a very fast (and likely ugly) attempt at an ER diagram...
>
> Product | ProductID  <------<<  Page | ProductID* | PageNumber <------
> << Text | ProductID** | PageNumber** | TextElementNumber
>
> * FK from page to product (o2m for Product.getPageArray())
> ** FK from text element to page (o2m for Page.getTextArray())
>
> There is also a o2m from Product to Text with a condition of
> Text.PageNumber = 0 (I'd rather set up a page 0, but I have to deal
> with a manager...)
>
> Ken
>
> On Dec 17, 4:54 pm, "Mark Mandel" <[email protected]> wrote:
>> Sorry.. still not getting it.
>>
>> Why not just have a FK -> PK relationship between Page and Text?
>> That's not hard coded.
>>
>> It seems that there would only be one Text element per page? or am I
>> misunderstanding? I don't know what the ER diagram is.
>>
>> Mark
>>
>>
>>
>> On Thu, Dec 18, 2008 at 8:46 AM, Ken Cummins <[email protected]> 
>> wrote:
>>
>> > Because each page could have a different layout, and the number of
>> > text blocks could differ.  So I need to track which text block on
>> > which page for which product.  If it helps you visualize the issue,
>> > there will also be image components on each page...
>>
>> > These are user-designed products, so they are highly dynamic.  Hard-
>> > coding a solution isn't going to work...  :P
>>
>> > Ken
>>
>> > On Dec 17, 3:41 pm, "Mark Mandel" <[email protected]> wrote:
>> >> I'm trying to work my way through your mapping....
>>
>> >> Why not just link the page directly to a specific text? How come you
>> >> need all the messing about with products and page numbers?
>>
>> >> Mark
>>
>> >> On Thu, Dec 18, 2008 at 3:23 AM, Ken Cummins <[email protected]> 
>> >> wrote:
>>
>> >> > Gah!  Yet again, I post before my coffee activates...
>>
>> >> > The link for the example object *should* be:
>>
>> >> > <link column="productkey" to="Products.Text" />
>>
>> >> > The idea is that the text objects are part of a o2m relationship with
>> >> > the product, but that also reference the pageno.  Now, I'd like to
>> >> > have a o2m relationship from product to page, then another o2m
>> >> > relationship from page to text. This will be extended to other objects
>> >> > as well.
>>
>> >> > Would I be better off scrapping the direct o2m product to text, and
>> >> > adding a function into the decorator? Or can I get transfer to handle
>> >> > the complex data modelling?
>>
>> >> > Ken
>>
>> >> > On Dec 17, 10:02 am, Ken Cummins <[email protected]> wrote:
>> >> >> I'm looking (still) at a table with a compositeid that I want to be
>> >> >> the parent of a onetomany relationship. I am considering using one
>> >> >> portion of the compositekey as the o2m key, and adding a condition to
>> >> >> filter it to the second part of the key.
>>
>> >> >> My question (and this is without a lengthy bout of of my usual test/
>> >> >> alter/test/alter/test/try to remember where I was/alter several things/
>> >> >> test/wish I had backed things up/drink more coffee cycle) is if I can
>> >> >> reference the current object in my where clause.  i.e.:
>>
>> >> >> <object name="page" table="productpages" decorator="BaseDecorator">
>> >> >>         <compositeid>
>> >> >>                 <parentonetomany class="Products.Product" />
>> >> >>                 <property name="pageno" />
>> >> >>         </compositeid>
>> >> >>         <property name="stylekey" type="numeric" />
>> >> >>         <onetomany name="text" lazy="true">
>> >> >>                 <link column="productkey" to="Products.Product" />
>> >> >>                 <collection type="array">
>> >> >>                         <condition where="pageno = {pageno}"/>
>> >> >>                         <order property="textno" />
>> >> >>                 </collection>
>> >> >>         </onetomany>
>> >> >> </object>
>>
>> >> >> This also brings up the problem of using the key for a o2m child as
>> >> >> part of the o2m parent relationship...  Grrr...
>>
>> >> >> Ken
>>
>> >> --
>> >> E: [email protected]
>> >> W:www.compoundtheory.com
>>
>> --
>> E: [email protected]
>> W:www.compoundtheory.com
> >
>



-- 
E: [email protected]
W: www.compoundtheory.com

--~--~---------~--~----~------------~-------~--~----~
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer

You received this message because you are subscribed to the Google Groups 
"transfer-dev" 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/transfer-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to