Hi ksouthworth,
I am assuming that we are talking about the same company having different shops. Maybe like a smaller version of Amazon that may have different products on Amazon.co.uk to Amazon.com.
With my domain hat on I guess I ask the question:
- Do I care about what other shops sell when customers are browsing the catalog?
If no then its not a concern of your domain.
With my programmer hat on I ask the following question:
- How can display products specific to my shop that are stored in shared tables with other shops?
If we are just talking about the presentation of the product catalog I would create views for Nhibernate and add the store id in some kind of config file so that it could add as a parameter for all calls for the products.
When it comes to the managment of products then I would have a full blown domain and yes then products do care about what shop they are sold in, or better put, shops care about what products they sell.
I would probably have another table in there as well
[STOREFRONT]
Id int PK,
Name nvarchar(500)
[STOREFRONT_PRODUCTS]
StorefrontId int FK,
ProductId int
[Products]
Id int PK
Name etc..
However if you are talking about creating a product that allows companies without a shop to create an online instance using your software as a service then this is a bit different and your domain concerns are different - what are you trying to do?
Scott