Why do you need this table structure. My problem with financing is that you have to pass data to the property value every time you want to use it. This is bad, in my opinion, also storing numbers, because the text is crazy, given that all of its binaries are anyway. For example, how will you have the required fields? Or fields that should have restrictions based on other fields? For example, a start and end date?
Why not just have properties as fields and not some relationships of many?
have 1 flat table. When your business rules begin to show that properties should be grouped, you can consider moving them to other tables and have several ratios of 1: 0-1 with the user table. But this is not normalization, and it will slightly worsen performance due to the additional connection (however, the documenting nature of the table names will greatly help any developers)
In one case, I regularly see that databqase performance is fully castrated, having a common
Identifier, property type, property name, property value table.
It is really lazy, but extremely flexible, but it completely kills performance. In fact, at a new job, where performance is poor, I really ask if they have a table with this structure - it invariably becomes the center point of the database and runs slowly. The whole point of a relational database is that relationships are determined in advance. This is just a method that aims to accelerate development with huge costs for application speed. It also greatly affects business logic at the application level to behave - which is not at all protective. In the end, you will find that you want to use properties in a key way, which leads to all kinds of casting, which further degrades performance.
If the data is 1: 1 related to the object, then it should be a field in the same table. If your table falls into more than 30 fields, then think about moving them to another table, but do not call it normalization, because it is not. This is a method that helps development teams group together at the expense of productivity in an attempt to help understand.
I do not know if mysql has an equivalent, but sqlserver 2008 has sparse columns - null values do not take up space. Encrypted datatypes columns
I'm not saying that the EAV approach is always wrong, but I think using a relational database for this approach is probably not the best choice.