Just about to bring an application online and the client threw in a last minute 
"by the way".  I'm welcoming any suggestions on how to structure this.  Hope 
that the email will format good enough to explain my points!

There are generic Products, so let's say Widget is one of them, with a 
ProductID of 100.   Underneath that was (originally) a table that identifies 
all the Suppliers of that Product.  So we could have 3 suppliers of Widgets, 
for SupplierIDs 201, 305 and 504.
ProductID         SupplierID
100               201
100               305
100               504

Here's the new wrinkle.  In most of the cases, Suppliers are stand-alone 
entities, one location, one set of contacts.  Now they want to incorporate 
multinational suppliers.   So let's say that 201 and 305 are stand-alone 
entities, but 504 is BigCo Ltd, with 3 locations around the world.   We still 
need to know for reporting purposes everything that the parent BigCo supplies 
us, but the Product really needs to be associated directly with one of the 3 
locations of BigCo Ltd.

So I figured that a decent structure would be to have a table called 
SupplierGroups, with BigCo Ltd being one of the groups, with a GroupID of 1.   
I will then add a GroupID column to my master Suppliers table; so for BigCo's 
subs I would have 3 rows as follows in my Suppliers table:
SupplierID        GroupID      Supplier Name
504                1           BigCo US
505                1           BigCo China
506                1           BigCo Russia

My Widget above is associated directly with SupplierID 504 BigCo US.   For 
reporting purposes, I can easily get to the parent company BigCo by using the 
GroupID column of the associated group if there is one.

So -- so far do you think that sounds okay?   I did, until they threw in yet 
another wrinkle after I presented this.  And this one I can't figure out how to 
handle best.  With me so far?   Appreciate it....

Now, each individual Supplier can have multiple distributors.  So BigCo US has 
just one address, one set of contacts, but could have multiple distributors of 
their products.  There won't be many of them, but it will happen.  They might 
or might not care about statistics per distributor, but I do need to yet again 
associate the Widget with BigCo US, but for a particular distributor.   I guess 
the "easiest" thing is to create more suppliers but it won't help me figure out 
what BigCo US supplies us so I'm thinking this structure would be no good:
SupplierID        GroupID      Supplier Name
504                1           BigCo US - Distributor A
503                1           BigCo US - Distributor B
505                1           BigCo China
506                1           BigCo Russia
                            
Or do I create another table called Distributors, link it to a SupplierID.   
SupplierID        DistributorID      Supplier Name
504                1                 BigCo US - Distributor A
504                2                 BigCo US - Distributor B

Do I then link the Widget down to the very lowest level -- a DistributorID 
rather than a SupplierID?   The problem is, few of the suppliers will have 
multiple distributors, so I would have to create a "dummy" distributor for 
every supplier, right?

Or do I expand my Product/Supplier table to include both a SupplierID and a 
DistributorID if there is one?   Structure looks simple but the code to 
maintain these levels might not be.  Here, the Widget has SupplierID 504, but 
through 2 different distributors:
ProductID         SupplierID     DistributorID
100               201            -0-
100               305            -0-
100               504            1
100               504            2

Does anyone already done anything like this?  Feel free to contact me off-list.

Thanks everyone!

Karen



Reply via email to