I've been asked how to re-design a legacy system by a relative for a company that builds custom chairs. On their website you can customize your chair in about 30 permutations : chair type, material, if wood what kind, color, height, leg type, etc..
They have been working for years with a system that creates a ~40 character encoded string that represents the chair and use that string as the product code (like a long SKU). It will look like M01MA24C04L02... For Model #01, Material #24 Color #04, leg type #02, etc...
This string is used also in client's application and a bit everywhere to represent a chair. You can enter the string on their web app and it will re-create you the chair configuration.
The problem now is that they want to refactor this because they are about to add more options and more will come in the future. We are talking about 40-50 permutations and obviously the encoded string will just get bigger and inconsistent in length with old data. Personnel and stores type this "product code" when they want to see what the what the client ordered with all the configurations and it's getting too long for them to type.
I've been asked how I would go about a problem like that but I'm still recently graduated in computer engineering and don't have much architecture experience yet. I was looking at EAV model but I'm uncertain.
For now I just suggested that they stop using that string as a SKU because it breaks every stores whenever they do a migration of what that code represents, and I suggested that instead of giving the encoded string to the client when they make the order to give them a confirmation number that maps to this code. But they would still like to have a "product code" that represents the product and that is likely to change in the future.
I googled around but I have no experience with stuff like that. I'm not looking for a full solution just an idea of where to look for problems like that mainly for my self interest.