• I think I'd add another table in there. Instead of having a direct link between ProductPropertyType and ProductPropertyValue, I would define the values, the properties, and then have a table that maps between them. Then, only the ProductPropertyValue that are in the mapping table for each ProductPropertyType will be available to the Product of that ProductPropertyType. That should completely satisfy the business requirement.

    Denormalization just isn't a mechanism I would normally use for data integrity. It's kind of the opposite really.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning