25-05-2014, 01:58 PM
Salut,
Supprimer et recréer une unité n'est pas la modifier. Une modification devrait s'effectuer sur une ligne existante en conservant son ID.
S'il est nécessaire de supprimer une unité pour la modifier, c'est qu'il y a une erreur de conception quelque part. L'intégrité des données devrait normalement être respectée.
Personnellement, j'utiliserais le système suivant :
Table joueurs
id, nom, etc.
Table unites_modeles
id, nom, caracteristique1, caracteristique2, etc.
Table armees
id, joueur_id, nom, etc.
Table unites
id, armee_id, unite_modele_id, caracteristique1, caracteristique2, etc.
De cette manière, l'appartenance à un joueur passe par l'appartenance à une armée et la table de "jointure" unites permet de stocker les caractéristiques de chaque instance d'unite_modele (car ces caractéristiques évolueront au cours de la partie : gain d'xp, perte de moral, points de vie, etc.).
C'est une proposition à l'arrache mais on pourrait même envisager d'ajouter une table liée à l'unité pour y joindre des personnages spéciaux (capitaine, médecin de campagne, héros, etc.), déplaçables d'une unité à l'autre et permettant de modifier les caractéristiques de l'unité.
Je pense que la multiplication du nombre de tables n'est pas gênante lorsqu'elle est associée à un bon système de cache permettant un accès rapide à l'objet PHP.
++
Supprimer et recréer une unité n'est pas la modifier. Une modification devrait s'effectuer sur une ligne existante en conservant son ID.
S'il est nécessaire de supprimer une unité pour la modifier, c'est qu'il y a une erreur de conception quelque part. L'intégrité des données devrait normalement être respectée.
Personnellement, j'utiliserais le système suivant :
Table joueurs
id, nom, etc.
Table unites_modeles
id, nom, caracteristique1, caracteristique2, etc.
Table armees
id, joueur_id, nom, etc.
Table unites
id, armee_id, unite_modele_id, caracteristique1, caracteristique2, etc.
De cette manière, l'appartenance à un joueur passe par l'appartenance à une armée et la table de "jointure" unites permet de stocker les caractéristiques de chaque instance d'unite_modele (car ces caractéristiques évolueront au cours de la partie : gain d'xp, perte de moral, points de vie, etc.).
C'est une proposition à l'arrache mais on pourrait même envisager d'ajouter une table liée à l'unité pour y joindre des personnages spéciaux (capitaine, médecin de campagne, héros, etc.), déplaçables d'une unité à l'autre et permettant de modifier les caractéristiques de l'unité.
Je pense que la multiplication du nombre de tables n'est pas gênante lorsqu'elle est associée à un bon système de cache permettant un accès rapide à l'objet PHP.
++