Ви написали в коментарі вище:
книга "Основи систем баз даних" [...] говорить [...], що рекомендується використовувати таблицю перетину, якщо в стовпці із зовнішнім ключем багато значень NULL (наприклад: якщо 98% працівників не керуйте відділом)
Коли в стовпці із зовнішнім ключем багато значень NULL, вашим програмам доведеться мати справу з цим здебільшого порожнім стовпцем для кожного запису, який вони обробляють. Стовпець, ймовірно, буде займати деяке місце на диску, навіть якщо в 98% всіх випадків його порожнє, запит на взаємозв'язок означає запит на той стовпець, який дає вам більше мережевого трафіку, і якщо ви використовуєте ORM, який генерує вам класи з ваших таблиць, ваших програм також буде потрібно більше місця на стороні клієнта, ніж потрібно. Використання таблиці перетину дозволяє уникнути цього, потрібні будуть лише записи посилань, коли еквівалентний зовнішній ключ не був би NULL інакше.
На противагу цьому, якщо у вас є не декілька значень NULL, скажімо, що 50% або більше відносин не є NULL, використання таблиці перетину дає протилежний ефект - більше дискового простору, більша складність, що призводить до збільшення мережевого трафіку тощо.
Тож використання таблиці перетину - це лише форма оптимізації, яка є розумною лише для конкретного випадку, і особливо сьогодні, коли дисковий простір та пам'ять стали дешевшими, набагато рідше потрібними. Зауважте, що "Основи систем баз даних" спочатку писалися більше 20 років тому (я знайшов посилання на друге видання з 1994 р.), І я здогадуюсь, що рекомендація вже була там. До 1994 року оптимізація простору була, ймовірно, набагато важливішою, ніж сьогодні, оскільки масове зберігання все ще було дорожчим, а комп’ютери та мережі були набагато повільнішими, ніж сьогодні.
Як додаткове зауваження до прискіпливого коментаря: вищезазначене твердження просто намагається передбачити, що автор «Основ систем баз даних» мав на увазі у своїй рекомендації, я думаю, що він робив грубе загальне твердження, справедливе для більшості систем. У деяких базах даних є й інші можливі оптимізації, такі як "розріджені стовпці", які роблять використання таблиці перетину ще більш застарілим.
Тому не сприймайте цю рекомендацію неправильно. Книга не говорить про те, щоб віддавати перевагу перехрестям таблиць для {0,1}:n
взаємин взагалі, або - як ви писали - що це "правильний шлях". Використовуйте такі оптимізації, які ускладнять ваші програми лише тоді, коли вони вам справді потрібні.