@ Bosnic:
У вас есть таблица CLIENT, которая имеет отношение 1: 1 с таблицей SALES_OFFICE, потому что, например, логика вашей системы говорит об этом.
То, что говорит логика вашего приложения, и то, что говорит ваша модель данных, - это две разные вещи. Нет ничего плохого в том, чтобы навязать эти отношения с помощью кода вашей бизнес-логики, но ему нет места в модели данных.
Действительно ли вы включили бы данные SALES_OFFICE в таблицу CLIENT?
Если у каждого КЛИЕНТА есть уникальный SALES_OFFICE, а у каждого SALES_OFFICE есть уникальный, уникальный КЛИЕНТ - тогда да, они должны быть в одной таблице. Нам просто нужно лучшее имя. ;)
А если другим таблицам нужно связать их самостоятельно с SALES_OFFICE?
Нет причин для этого. Свяжите ваши другие таблицы с CLIENT, поскольку у CLIENT есть уникальный SALES_OFFICE.
А как насчет лучших практик и шаблонов нормализации базы данных?
Это является нормализацией.
Честно говоря, SALES_OFFICE и CLIENT, очевидно, не являются отношениями 1: 1 - это 1: N. Надеемся, что ваш SALES_OFFICE существует для обслуживания более 1 клиента и будет продолжать существовать (по крайней мере некоторое время) без каких-либо клиентов.
Более реалистичным примером являются SALES_OFFICE и ZIP_CODE. SALES_OFFICE должен иметь ровно 1 ZIP_CODE, и 2 SALES_OFFICE - даже если они имеют эквивалентный ZIP_CODE - не должны совместно использовать экземпляр ZIP_CODE (поэтому изменение ZIP_CODE, равное 1, не влияет на другое). Разве вы не согласны с тем, что ZIP_CODE принадлежит как столбец в SALES_OFFICE?