Vous souhaitez encapsuler des données de telle sorte que chaque table contienne uniquement des informations directement liées à ce dont vous avez besoin. Créez des tables de liaison pour fournir des relations entre différents ensembles de données (dans ce cas, les utilisateurs et les objets).
je créerais les tableaux suivants:
utilisateur - les informations de base de l'utilisateur: login, mot de passe, ID utilisateur, tout ce que vous avez besoin.
Objet - l'objet à évaluer: son nom/ID et ses attributs.
Fonctionnalité - une table décrivant un type de fonction, avec un nom/identifiant de fonction quelconque. Cela peut commencer avec vos trois types principaux, mais vous pouvez toujours développer/modifier ceci. Vous pouvez également personnaliser les fonctionnalités que chaque objet aura à sa disposition.
ObjectFeature - une table de liaison pour l'objet et la fonction. Contient la clé primaire de chaque table, créant une relation plusieurs-à-plusieurs entre les deux.
UserRating - une autre table de liaison, entre ObjectFeature et l'utilisateur. Contient les clés primaires de ces deux tables, ainsi que la note attribuée. D'un point de vue relationnel, c'est une meilleure façon d'organiser les données que ce que vous avez présenté. Grâce à sa conception, il indique clairement comment chaque ensemble de données est connecté et rend l'évolutivité (par exemple en ajoutant des caractéristiques supplémentaires à évaluer, ayant différents objets ayant des caractéristiques différentes à évaluer) beaucoup plus propre.
il n'était pas clair mais les caractéristiques sont partagées par tous les objets, je viens de mettre à jour la question, merci quand même pour la réponse complète –