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

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

...