0
我現在有3個表,關係數據庫設計用MySQL,
Users (Id, PositionId)
MonsterInstances (Id, PositionId)
TreasureInstances (Id, PositionId)
和1位表。
Positions (Id, Coordinate, TypeId)
PositionId,在我的3個表中,是我的位置表中的外鍵。
我想用一個單一的位置表,如上圖所示,正常化所有我的位置數據。我面臨的問題是我必須確定一種類型,以便在執行查詢時知道要查詢哪個表。
例如
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 15:40:24