J'essaye de concevoir un schéma où les colonnes d'une table ne sont pas fixées. Ex: J'ai une table Employé où les colonnes de la table ne sont pas fixes et varient (les attributs de l'employé ne sont pas fixes et varient). L'ajout fréquent d'un nouvel attribut/colonne est une exigence.comment concevoir un schéma où les colonnes d'une table ne sont pas fixes
colonnes nullables dans la table des employés lui-même-à-dire pas de normalisation
Au lieu d'ajouter des colonnes nullable, séparer les colonnes dans leurs tables individuelles ex: si l'adresse est une colonne à ajouter puis créer Adresse table [EmployeeId, AddressValue].
Créez des tables ExtensionColumnName [EmployeeId, ColumnName] et ExtensionColumnValue [EmployeeId, ColumnValue]. ExtensionColumnName aurait ColumnName comme "Address" et ExtensionColumnValue aurait ColumnValue comme valeur d'adresse.
table des employés
EMPLOYEEID
Nomtable ExtensionColumnName
ColumnNameId
EMPLOYEEID
NomColonnetable ExtensionColumnValue
EMPLOYEEID
ColumnNameId
Col umnValue
Il y a un inconvénient dans les deux premières manières, car le schéma change avec chaque nouvel attribut. Notez que l'ajout d'un nouvel attribut est fréquent et une exigence.
Je ne suis pas sûr si c'est le bon ou le mauvais design. Si quelqu'un avait une décision similaire à faire, s'il vous plaît donner un aperçu sur des choses comme des clés étrangères/intégrité des données, l'indexation, la performance, des rapports, etc.
OMG Poneys, je suis venu avec le schéma par la suite. Je suis intéressé par les problèmes avec un tel schéma. Par exemple: si la colonne VALUE dans EMPLOYEE_ATTRIBUTES est un ID (clé primaire d'une autre table), cela devient un problème. Cela peut être résolu avec une méta-table distincte indiquant que cet attribut est un nom de table de recherche et de correspondance. Cela impliquerait une dynamique SQL ou de réflexion et je perds la sécurité de type. – hIpPy