Я в настоящее время нахожусь в процессе нормализации базы данных для моей компании, и один шаблон, который я часто вижу в этой базе данных, использует таблицу поиска домена для значения, но также разрешает «Другое» и сохраняет результаты в отдельный столбец.
Мой вопрос заключается в том, существует ли, возможно, более чистый способ представить это? Для контекста я следую нормальным формам до 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 ║
╚═════╩═══════════════╝
Это вполне может быть наилучшим возможным решением (хотя я бы, вероятно, отделил расположение и тип устройства в разных таблицах), хотя я хотел бы взглянуть на это более опытно, это первый раз, когда я приступил к полной реструктуризации сверху вниз, и мне не терпится получить ее с самого начала .
Спасибо!