We need to store generic information (every entry has this information) and client-specific information (each client has its own information). The generic information is straightforward in SQL, but I don't know how to tackle the specific information as there are a different number of columns and different column IDs.
Bad idea #1:
Create a new table for each client for its specific data, then do a join when wanting to use that data. This is a bad approach as it adds a lot of overhead for maintaining the database.
Bad idea #2:
Create a new table and have 3 columns: client ID, Key, Value. Each row in this table contains some specific key (column ID) and value for a client. This is bad because the data types can't be known (everything will be varchar) and this is still very hard to maintain.
Other ideas:
MySQL supports NoSQL (version 8 and beyond). Can you combine data from a NoSQL DB and a SQL DB?
PostgreSQL adds "object-oriented concepts". Will PostgreSQL store client-specific data alongside generic data?
Example:
Table for generic data:
shapes {Name,number_of_sides,area}
Specific attributes:
Square {height, rotation}
Rectangle {height, width, rotation}
Elipse {focal_a, focal_b}
All of the shapes have a name, number of sides, and an area, but depending on the object, there are additional properties like height, width, rotation, etc.