I'm trying to model product and seller information. The seller can be either an individual, or a company, or a company with branches (and the product is being sold by a particular branch). Each product will only have one associated seller (which could be an individual, a company with no branches, or a branch of a particular company).
I feel like I should have a table for individuals and another table for companies (with a parent-child relationship, perhaps to itself, so it can represent the company-branch relationship). The products table could then have an individual_id (the PK of the individuals table) and a company_id (the PK of the companies table). The products table will just populate either the individual_id or the company_id column.
The above feels messy, though.
I feel I could just use two tables: products and sellers. The sellers table can represent an individual, a company, or a companies branches (meaning the sellers table would need that parent-child relationship even though it wouldn't apply to individuals -- just like it doesn't apply to some companies). Individuals and companies have different columns, though -- but I guess just leave non-applicable columns blank).
Is the above model good? Any possible downsides?
Also, when designing a database -- is it a good idea to put related data in a single table? For example, the companies need to store address information. Do I put that in a company_addresses table (means a JOIN). Or do I just represent them as columns in the companies/sellers table (assume each company has one address only -- but having multiple addresses could still be put in a single row, like postal_address_line_1, physical_address_line_1, etc.).