Я создаю систему ведения журнала с использованием 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.
Преимущество: Эта структура удобна для функции поиска
Преимущество: Эта структура допускает быстрые ВСТАВКИ, , которых много!
Недостаток: Существует максимально возможное количество замен, в моем случае выше, шесть, а не переменная сумма
Недостаток: Bполучает первую нормальную форму, использует повторяющиеся группы и, как правило, просто очень уродлив и труден для создания и обработки запросов для
Оправдано ли нарушение первой нормальной формы в этом случае?Или есть лучший способ сделать это, который не снизит производительность, а также подходит как для MySQL, так и для SQLite?