Звучит так, что сначала вам нужно изучить несколько основ базы данных, поэтому, пожалуйста, потратьте некоторое время, чтобы убедиться, что вы понимаете Нормализация базы данных и индексы .
ОднакоВ принципе, вам, вероятно, понадобится таблица «Players» (идентификатор игрока, имя и т. д.), таблица «roster» (идентификатор реестра, имя, возможно, owner_id) и player_roster_map (player_id, roster_id), который связывает их.Возможно, вам понадобится уникальное ограничение для составного значения player_id и roster_id, и у вас должно быть ограничение внешнего ключа для player_id и roster_id в этой таблице сопоставления.
(я предполагаю, что игроки не являютсядействительно уникален для каждого списка; вы все равно можете моделировать аналогично, если есть атрибуты, которые переопределяются лицом, которому они принадлежат, но я предполагаю, исходя из моего понимания вашего описания модели.)
Ваш движок базы данныхвероятно, будет индексировать все, что вы пометили в качестве первичного ключа по умолчанию, и может индексировать все, что вы пометили как внешний ключ, но это зависит от базы данных, и я не особо разбираюсь в MySql;вам нужно будет провести некоторое исследование.
Правильные индексы помогут вам при выполнении запросов, как правило, с небольшими затратами с точки зрения производительности вставки.Если в результате вы получаете большое количество идентичных значений или большое количество запросов, в которых используется только небольшой диапазон значений (например, временные диапазоны), вам, возможно, в конечном итоге также понадобится разобраться в разделении.Секционирование позволяет вам получить преимущества от работы с довольно большим количеством записей без проблем моделирования, которые могут возникнуть при денормализации.Однако не делайте этого преждевременно;вы, вероятно, обнаружите, что правильного дизайна базы данных будет достаточно с размером набора данных, который вы подразумеваете.