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 -~----------~----~----~----~------~----~------~--~---
