It sounds a little confusing but I think you are looking for a conditional value list. The confusing part of your question is how dingy is connected to category B. Why is dingy a filed name? A better explanation would help.
Anyway with conditional value lists you should only need two tables for your example. I think you can search on conditional value lists or maybe post a sample file of what you are trying to do exactly along with how you have it now.