J'ai actuellement 3 tables,Design base de données relationnelle MySQL
Users (Id, PositionId)
MonsterInstances (Id, PositionId)
TreasureInstances (Id, PositionId)
et 1 table de position. PositionId, dans mes 3 tables, est une clé étrangère dans ma table de positionnement.
Je souhaite utiliser une seule table Positions, comme indiqué ci-dessus, pour normaliser toutes mes données de position. Le problème que je suis confronté est que je dois identifier un type de sorte que lorsque ma requête s'exécute, il sait quelle table à interroger.
par exemple.
SP -- GetObjectByPosition (positionId)
IF TypeId = 1
SELECT * FROM Users JOIN... WHERE PositionId = positionId
ELSE IF TypeId = 2
SELECT * FROM MonsterInstances JOIN...
Cela me semble être un mauvais design. La seule façon de contourner ce que je peux comprendre serait d'avoir 3 tables séparées.
UserPositions
MonsterInstancePositions
TreasureInstancePositions
Cependant, je ne suis pas toujours intéressé par l'extraction de données utilisateur, monstre ou trésor. Parfois, je ne veux que l'ID de position et l'emplacement - ce qui signifierait avec trois tables, je devrais faire un syndicat.
Y a-t-il une meilleure façon de procéder?
Oui, cela a du sens. –