Salut,
je penche pour la 2eme option :p
La première n'est pas simple à maintenir: quand une caractéristique devra être rajoutée, il faudra une nouvelle colonne qui ne fera pas forcément sens pour toutes les items (qui devraient donc définir cette colonne à "null"). Cela va vite devenir ingérable.
Je te conseille clairement l'option "1 table par type d'objet", qui correspondrait un peu à "1 table par classe (et une ligne par instance de cette classe)". Ce sera plus simple à gérer.
Rien ne t'empêche ensuite d'ajouter une colonne dans la table "objetActif" par exemple, qui permet de faire une composition avec la table "objetInactif". Ainsi, une ligne de "objetActif" est toujours liée à une ligne "objetInactif" qui décrit la partie inactif de l'item.
Ce sera bien plus clair quand le temps te feras ajouter des tas de types d'objets, même s'il est assez rebutant de créer des tas de tables dans une BDD.
Ce qui sera à mon avis gênant par la suite, c'est que la structure de la table (les colonnes "actives", aka celles dont les données sont pertinentes) va dépendre d'une valeur de la ligne (le type d'objet). On sort des 3 premières formes normales...
Et que dire d'une erreur qui ferait passer le type d'un objet de "Bout de métal trouvé par terre" à "Arme magique"? C'est théoriquement possible, puisqu'il suffirait de changer la valeur de la colonne "TypeObjet", mais est-ce pertinent ou même logique?
je penche pour la 2eme option :p
La première n'est pas simple à maintenir: quand une caractéristique devra être rajoutée, il faudra une nouvelle colonne qui ne fera pas forcément sens pour toutes les items (qui devraient donc définir cette colonne à "null"). Cela va vite devenir ingérable.
Je te conseille clairement l'option "1 table par type d'objet", qui correspondrait un peu à "1 table par classe (et une ligne par instance de cette classe)". Ce sera plus simple à gérer.
Rien ne t'empêche ensuite d'ajouter une colonne dans la table "objetActif" par exemple, qui permet de faire une composition avec la table "objetInactif". Ainsi, une ligne de "objetActif" est toujours liée à une ligne "objetInactif" qui décrit la partie inactif de l'item.
Ce sera bien plus clair quand le temps te feras ajouter des tas de types d'objets, même s'il est assez rebutant de créer des tas de tables dans une BDD.
Ce qui sera à mon avis gênant par la suite, c'est que la structure de la table (les colonnes "actives", aka celles dont les données sont pertinentes) va dépendre d'une valeur de la ligne (le type d'objet). On sort des 3 premières formes normales...
Et que dire d'une erreur qui ferait passer le type d'un objet de "Bout de métal trouvé par terre" à "Arme magique"? C'est théoriquement possible, puisqu'il suffirait de changer la valeur de la colonne "TypeObjet", mais est-ce pertinent ou même logique?