Bonnes idées.
J'ajoute ma part de commentaires:
la table SOLDAT_JOUEUR (= SOLDAT_VILLE dans tes exemples) n'a pas besoin d'identifiant. Elle doit être composée d'un identifiant double : id_soldat + id_ville (pourquoi rajouter le id_joueur? il y a redondance avec la table ville dans laquelle l'id_joueur est présent).
Il n'est pas nécessaire de modifier le champ id_ville dans la table puisque, à partir du moment où il est en déplacement (2) en retour (-2), en attaque (3), en retour d'attaque (-3)..., il n'est pas en ville!
Si tu veux garder un historique ordonné de tous les déplacements, alors la table SOLDAT_DÉPLACEMENT nécessite son id. Dans le cas contraire, il est également inutile.
J'ajoute ma part de commentaires:
la table SOLDAT_JOUEUR (= SOLDAT_VILLE dans tes exemples) n'a pas besoin d'identifiant. Elle doit être composée d'un identifiant double : id_soldat + id_ville (pourquoi rajouter le id_joueur? il y a redondance avec la table ville dans laquelle l'id_joueur est présent).
Il n'est pas nécessaire de modifier le champ id_ville dans la table puisque, à partir du moment où il est en déplacement (2) en retour (-2), en attaque (3), en retour d'attaque (-3)..., il n'est pas en ville!
Si tu veux garder un historique ordonné de tous les déplacements, alors la table SOLDAT_DÉPLACEMENT nécessite son id. Dans le cas contraire, il est également inutile.