Есть веб-сервер — на нём должны храниться данные игроков (никнейм, инвентарь, кол-во монет и тому подобное). Каждый игрок связан с реальным аккаунтом в социальной сети, то есть это браузерная игра в социальной сети.Когда из социальной сети приходит api-запрос, я получаю ID пользователя — для Вконтакта это int, для Facebook это bigint (хотя сейчас уже рекомендуют строки), для андроида это строка. Так вот, как мне лучше сопоставлять пользователя из социальной сети, а в будущем пользователя андроид, с игроком в базе данных?Можно добавить промежуточную таблицу Accounts и связать её с таблицей Players:Accounts{[int|bigint|varchar] UserId, // id из социальной сетиint PlayerId // primary key}Players{int PlayerId, // primary keyint Coins,varchar Nickname}Каждый раз, когда будет приходить запрос из игры на сервер, я по ID пользователя буду запрашивать Account и буду join'нить Player, который с ним связан. А далее буду работать с остальными таблица уже при помощи PlayerId.
>>680080 (OP)Нормализация данных нужна не всегда. Алсо, пикрелейтед.
>>680080 (OP)> AccountsPlayerId - foreign key, а не primaryДобавь AccountType (facebook, vk, android) и сделай primary key на пару UserId, AccountType.
>>680102А это норм, если primary key будет строкой? Просто до этого я всегда работал с int.
>>680122Это похуй, лишь бы для типа было определено отношение эквивалентности, и неплохо бы отношение порядка для индексов.
>>680080 (OP)Если у одного игрока может быть только один аккаунт в каждой из сетей то в отдельную таблицу выносить не обязательно.