Структура базы данных системы журналирования: как мне добиться наилучшей оптимизации и нормализации?

Я создаю систему ведения журнала с использованием 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?

0 ответов

Другие вопросы по тегам