我现在有3张桌子,
Users (Id, PositionId)
MonsterInstances (Id, PositionId)
TreasureInstances (Id, PositionId)和1个位置表。
Positions (Id, Coordinate, TypeId)在我的3个表中,PositionId是我的Position表的外键。
我想使用一个单独的position表,如上所示,来标准化我所有的位置数据。我面临的问题是,我必须确定一个类型,以便当我的查询执行时,它知道要查询哪个表。
例如:
SP -- GetObjectByPosition (positionId)
IF TypeId = 1
SELECT * FROM Users JOIN... WHERE PositionId = positionId
ELSE IF TypeId = 2
SELECT * FROM MonsterInstances JOIN...对我来说,这似乎是一个糟糕的设计。我能做的唯一的办法就是有3张分开的桌子。
UserPositions
MonsterInstancePositions
TreasureInstancePositions然而,我并不总是对提取用户、怪物或宝藏数据感兴趣。有时我只需要位置Id和位置--这意味着对于三个表,我必须进行联合。
有没有更好的方法来做这件事?
发布于 2011-05-05 23:37:13
Users、MonsterInstances、TreasureInstances可以重写为包含一个类型列的单个"ObjectInstances“表。然后,将分别针对这3个表执行的查询将针对引用新OjbectTypes表的ObjectInstances和typeID执行。讲得通?
https://stackoverflow.com/questions/5900405
复制相似问题