Donald,
I've done this before - it wasn't nice. The best solution I came up with
was to store the kits in the item table as though they were items. So
the structure is: (Lets call a 'Product' an Item or a Kit depending on
the 'prod_type')

PRODUCT                 KIT CONTENTS            PRODUCT (as item)
prod_id<----------------->kit_id
prod_type {Item | Kit}    prod_id<------------->prod_id

The product table also store the kit/item description.

This structure allows n levels of kit building, and (obviously) allows a
single query to retrieve a 1 level kit breakdown. 

You question about a single query to access this tree structure is a bit
of a classic (and I'd be interested in other peoples answers) but in
reality I found that it was sufficient to report to 1 level to kit
breakdown only (since printing a tree structure on a report is messy).
So my report said, for example: 
KIT1 contains 
        ITEM1
        ITEM2
        KIT2

KIT2 contains
        ITEM3

The issue came when trying to decide if we had 3 of KIT1 in stock. I
couldn't find a single query (that allowed n levels) so I wrote a
function that iterated the tree. 

Andy.


Donald Tyler wrote:
> 
> I have a question that I hope I can explain well enough:
> 
> I am trying to figure out a data structure for an inventory system. The
> system contains:
> 
>         Items
>         Kits    (Made from a collection of Items and/or other Kits)
> 
> Now my question is:
> 
> Is there any way to structure this in a database so that I could run a
> single query to get the contents of a kit, even though it contains other
> kits?
> 
> My problems occur when I try to create the tables as so:
> 
> ITEMS:          KIT_CONTENTS            KITS
>                         KIT_ID<---------------->KIT_ID
> ITEM_ID<--------->ITEM_ID                       Description
> Description
> Price
> Etc
> 
> The only way I could think of to allow a kit to be contained within a kit:
> 
> Add another field to KIT_CONTENTS called Sub_Kit
> 
> Which seems like a dumb way of doing it, because first of all, most kits
> don't have sub kits, so that would be a wasted field in most cases.
> Secondly, as far as I know the application logic would have to do multiple
> queries's to get the sub_kits.
> 
> I really hope there is a simple and more logical way to do this, preferably
> allowing me to run a SINGLE query that will show a kit with all its sub
> kits. Otherwise I would need to have repeated queries from the application
> logic, and I really want to avoid that.
> 
> Please help, thanks.
> 
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to