Как лучше всего нормализовать БД, когда в доменной таблице есть опция «Другое» для произвольного текста? - PullRequest
0 голосов
/ 26 февраля 2020

Я в настоящее время нахожусь в процессе нормализации базы данных для моей компании, и один шаблон, который я часто вижу в этой базе данных, использует таблицу поиска домена для значения, но также разрешает «Другое» и сохраняет результаты в отдельный столбец.

Мой вопрос заключается в том, существует ли, возможно, более чистый способ представить это? Для контекста я следую нормальным формам до 5NF и формам ключей домена. Более серьезная проблема, с которой я сталкиваюсь, заключается в том, что в некоторых таблицах этот шаблон повторяется несколько раз, поэтому у нас есть таблица, подобная следующей:

╔══════════════╦══════════════════╦═════════════════════╦═══════════════════╦══════════════════════╗
║ appliance_id ║ location_type_id ║ other_location_type ║ appliance_type_id ║ other_appliance_type ║
╠══════════════╬══════════════════╬═════════════════════╬═══════════════════╬══════════════════════╣
║          123 ║                1 ║ {null}              ║                13 ║ Freestanding Boiler  ║
║          124 ║               13 ║ Annex               ║                 1 ║ {null}               ║
╚══════════════╩══════════════════╩═════════════════════╩═══════════════════╩══════════════════════╝

Где, например, location_type_id & appliance_type_id из 13 - «Другое» в соответствующих таблицах поиска.

Так, например, таблица типов местоположения выглядит примерно так:

╔═════╦═══════════════╗
║ id  ║ location_type ║
╠═════╬═══════════════╣
║ 1   ║ Living Room   ║
║ 2   ║ Kitchen       ║
║ ... ║ ...           ║
║ 13  ║ Other         ║
╚═════╩═══════════════╝

Это вполне может быть наилучшим возможным решением (хотя я бы, вероятно, отделил расположение и тип устройства в разных таблицах), хотя я хотел бы взглянуть на это более опытно, это первый раз, когда я приступил к полной реструктуризации сверху вниз, и мне не терпится получить ее с самого начала .

Спасибо!

1 Ответ

0 голосов
/ 27 февраля 2020

После обсуждения мы сделаем то, что предложили, и проведем сканирование текста и используем его для заполнения наших поисков, а затем в дальнейшем мы попытаемся отговорить использование полей с произвольным текстом для поиска, сохраняя значения в настоящее время в отдельной таблице, поэтому мы не загромождаем наши основные таблицы.

...