I've been diving into DDD and got both the blue and the red books and now I'm trying to apply it for the first time. I'm struggling to get my head around Aggregates and Value Objects in the specific bounded context that I'm working in and want to see what the opinions out there are.
The bounded context I'm working in is a product catalog. It will contain different types of products, manage their prices and list/delist them for sale etc. Product is 100% an aggregate - I'm sure of that but one of the properties it needs to have is a product category. Initially, I thought category would be a value object. I'm not concerned with the properties of category changing - if a category description changes, then it's a different category - so that sounded very much like a value object.
However, if a user was creating a new product or changing its category, I would want them to pick from a list of categories that they could also separately maintain. I don't need complex business logic there - just CRUD on a list of category objects.
Is category still a value object or am I actually dealing with something else? If it is a value object, how do I persist and maintain that list of categories simply with respect to DDD? Am I actually dealing with here what VV describes as standard types and in fact what I need is two BCs - one where categories are created & maintained as entities and the catalog BC where they are merely consumed? My only doubt here is that category means the same thing in both of those contexts.
As you can see there are many thoughts I'm wrestling with and I'm looking for some clarity. My question is really should category be a value object or an entity or both!! And depending on the answer to that, what is the most correct way of persisting it according to DDD?