Я проектирую браузерную рпг на php+mysqli. И в одной из тем на данном форуме меня натолкнули на мысль, что в игре нужно вести контроль дропа. Сейчас у меня есть таблица с названием дропа(t1), таблица для рюкзака(t2), таблица для хранилища(t3), таблица персонажа (что одето на персе)(t4) и таблица рынка (для продажи)(t5). При таком составе таблиц, если есть какой-то дроп у персонажа, то трудно отследить его передвижение, т.к. записи завязаны только на id из таблицы с названиями дропа (t1). Пример: Код (Text): t1 t2 id name id id_t1 1 Шляпа 1 3 2 Кольцо 3 Кеды 4 Рукавицы К примеру персонажу выпадет кольцо с моба, то тогда появляется еще одна запись в t2. Код (Text): t2 id id_t1 1 3 2 2 Далее данное кольцо наш персонаж захотел продать и тогда кольцо удаляется из t2 и записывается в t5. Позже какой-то другой персонаж покупает кольцо нашего персонажа и тогда кольцо удаляется из t5 и появляется в t2 (соответственно во всех таблицах используются id персонажей). Я планирую объединить таблицы t2-t5 в одну (пусть будет t6). Тогда прошлая манипуляция с кольцом будет выглядеть примерно так: Код (Text): t1 t6 id name id id_t1 id_char backpack warehouse market char 1 Шляпа 1 3 5 0 0 0 1 2 Кольцо 3 Кеды 4 Рукавицы Персонажу выпадет кольцо с моба, то тогда появляется еще одна запись в t6. Код (Text): t6 id id_t1 id_char backpack warehouse market char 1 3 5 0 0 0 1 2 2 5 1 0 0 0 Далее данное кольцо захотел продать и тогда все изменения проходят только в t6. Код (Text): t6 id id_t1 backpack warehouse market char 1 3 0 0 0 1 2 2 0 0 1 0 Позже какой-то другой персонаж покупает кольцо нашего персонажа и тогда опять все изменения проходят только в t6. Код (Text): t6 id id_t1 id_char backpack warehouse market char 1 3 5 0 0 0 1 2 2 6 1 0 0 0 У меня возникает вопрос оставить как есть (т.е. 4 таблицы) или сделать 1 общую таблицу? Если сделаю 1 общую таблицу, то сильно ли повлияют данные изменения на скорость работы с 1 общей таблицей?
ну если отличие только в состоянии то создай поле состояния и юзай одну таблицу бенчмарк твоё всё. как сделаешь так и будет. провафлишь индесы - будет медленно работать. создашь параноидально много индексов - будет медленно работать.
Я бы сделал одну таблицу за место: для рюкзака, для хранилища, для что одето на персе, для продажи это на первый взгляд.. а так нужно видеть картину в целом, ну например что бы отслеживать путешествие вещей от игрока к игроку..
связь вещь-игрок не очевидна? разница только в месте. рюкзак, надето, в пуле (особый случай где владелец - система). можно по таблице на каждого игрока и на каждую вещь. не ну а чо.