Я намерен ограничить объем запросов только базовыми данными и данными, которые были сгенерированы при прохождении игры конкретным игроком. Я полагаю, что это достаточно распространенная ситуация, когда уже существуют стандартные парадигмы, которые более эффективны, требуют меньше памяти и т. Д. c. к тому, что мог придумать мой собственный новичок в базе данных. Есть ли?
Моим первым решением было бы добавить столбец идентификации экземпляра игры к каждой таблице в моей базе данных. Большинство моих операторов Select включают в себя множество объединений таблиц, и я бы сделал многоконтролируемое ON для достижения этого ограничения области. Т.е.
JOIN Table_B
ON Table_B.field1 = TableA.field2 AND Table_B.gameID IN (xxx ,root_x)
В качестве альтернативы я мог бы использовать существующую таблицу, которая может связать каждый объект данных с другими объектами данных или атрибутами. Я мог бы создать ссылку «экземпляр игры» для каждого объекта обратно на отдельную запись для прогона, но так как некоторые запросы взаимодействуют с дюжиной или более объектами, я беспокоюсь, что это принесет больше вреда времени обработки, чем пользы.
В глубине моих размышлений об этой проблеме я думаю, имеет ли смысл создавать базу данных для каждого экземпляра игры. Запросы будут повторяться для базового набора данных, найденных в базе данных root, и для сгенерированных данных для созданной экземпляром базы данных.
Я использую Java и MySQL.