[Ответить в тред] Ответить в тред

26/03/16 - Конкурс: Помоги гомункулу обрести семью!
15/10/15 - Набор в модераторы 15.10 по 17.10
27/09/15 - Двач API — Инструкция к применению



[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 5 | 2 | 4
Назад Вниз Каталог Обновить

Как спроектировать базу? РСУБД. Аноним 08/03/16 Втр 09:24:58  680080  
14574182990020.jpg (366Кб, 860x550)
Есть веб-сервер — на нём должны храниться данные игроков (никнейм, инвентарь, кол-во монет и тому подобное). Каждый игрок связан с реальным аккаунтом в социальной сети, то есть это браузерная игра в социальной сети.

Когда из социальной сети приходит api-запрос, я получаю ID пользователя — для Вконтакта это int, для Facebook это bigint (хотя сейчас уже рекомендуют строки), для андроида это строка. Так вот, как мне лучше сопоставлять пользователя из социальной сети, а в будущем пользователя андроид, с игроком в базе данных?

Можно добавить промежуточную таблицу Accounts и связать её с таблицей Players:
Accounts
{
[int|bigint|varchar] UserId, // id из социальной сети
int PlayerId // primary key
}
Players
{
int PlayerId, // primary key
int Coins,
varchar Nickname
}


Каждый раз, когда будет приходить запрос из игры на сервер, я по ID пользователя буду запрашивать Account и буду join'нить Player, который с ним связан. А далее буду работать с остальными таблица уже при помощи PlayerId.
Аноним 08/03/16 Втр 10:03:03  680094
14574205835130.jpg (78Кб, 484x700)
>>680080 (OP)
Нормализация данных нужна не всегда. Алсо, пикрелейтед.
Аноним 08/03/16 Втр 10:12:39  680102
>>680080 (OP)
> Accounts
PlayerId - foreign key, а не primary
Добавь AccountType (facebook, vk, android) и сделай primary key на пару UserId, AccountType.
Аноним 08/03/16 Втр 10:50:25  680122
>>680102
А это норм, если primary key будет строкой? Просто до этого я всегда работал с int.
Аноним 08/03/16 Втр 11:04:52  680125
>>680122
Это похуй, лишь бы для типа было определено отношение эквивалентности, и неплохо бы отношение порядка для индексов.
Аноним 08/03/16 Втр 11:57:38  680153
>>680080 (OP)
Если у одного игрока может быть только один аккаунт в каждой из сетей то в отдельную таблицу выносить не обязательно.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 5 | 2 | 4
Назад Вверх Каталог Обновить

Топ тредов