Вы можете попробовать следующую схему:
![enter image description here](https://i.stack.imgur.com/1wmnR.jpg)
Таблицы PLAYER
, CARD
и DECK
, мы надеемся, достаточно ясны.
LOCATION_TYPE
- список типов мест, которые могут применяться.Это может включать такие вещи, как «в руке игрока», «перед игроком», «лицом вниз в колоде» и «стопка сброса».Вы можете использовать физическую таблицу для LOCATION_TYPE
или enum.Преимущество таблицы в том, что вы можете включить некоторые бизнес-правила, например, требует ли тип местоположения PLAYER
FK в CARD_LOCATION
и является ли карта видимой или невидимой (лицевой стороной вверх / вниз).
*Таким образом, 1017 * - это пересечение, указывающее, где находится каждая карта в любой момент времени.Ваше свойство навигации Player.Cards будет работать так же, как и свойство навигации Card.Location.Важно отметить, что FK от CARD_LOCATION
до PLAYER
является необязательным .