I am designing a DB for storing which user has which bundles/products.
Simple enough, I first created 3 tables, USER, BUNDLE and PRODUCT. Then create another 2 tables USER_BUNDLE and BUNDLE_PRODUCT to map many-to-many relationship. But the twist is users can also enable/disable each product. So I remove USER_BUNDLE and create USER_BUNDLE_PRODUCT instead which consists for USER_ID, BUNDLE_ID, PRODUCT_ID and PRODUCT_STATUS.
The problem with this is the data in USER_BUNDLE_PRODUCT can be incomplete. Suppose bundle A is defined as having product 1,2,3 in BUNDLE_PRODUCT, someone can still add only product 1,2 and miss 3 in USER_BUNDLE_PRODUCT.
Is there anyway to design the schema to enforce that there couldn't be any miss product from the user?