Структура базы данных системы журналирования: как мне добиться наилучшей оптимизации и нормализации?
Я создаю систему ведения журнала с использованием MySQL и SQLite с целью максимальной оптимизации. Это привело к чудовищности структуры таблицы, которая нарушает первую нормальную форму из-за повторяющихся групп. Вот что я имею в виду под этим:
Формат журнала в этой системе выглядит примерно так:
{1} used tool {2} on a {3} created by {4}
каждый {X}
заменяется соответствующей информацией для создания информативного журнала на клиенте. Это позволяет переводить журналы на разные языки. Моя первоначальная идея состояла в том, чтобы разбить первую нормальную форму и использовать повторяющиеся группы для хранения этих замен.
Вот пример обработанного и замененного журнала, который будет показан клиенту:
Jeff used tool remover on an entity created by Steven
Информация, которая заменила заполнители, хранится в replacement_X_...
столбцы, которые показаны на скриншоте выше.
Преимущество: Насколько мне известно, это должно быть быстрее, чем использование отдельной таблицы для хранения замен, которые потребуют объединений или даже нескольких SELECT.
Преимущество: эта структура удобна для поиска
Преимущество: эта структура позволяет быстро вставлять, которых много!
Недостаток: существует максимальное количество замен, которое возможно, в моем случае выше, шесть, а не переменное количество
Недостаток: ломает первую нормальную форму, использует повторяющиеся группы и, как правило, просто очень уродлив и труден для выполнения и обработки запросов для
Оправдано ли нарушение первой нормальной формы в этом случае? Или есть лучший способ добиться этого, который не снизит производительность, а также подходит как для MySQL, так и для SQLite?