У меня проблемы с выяснением, как именно установить хорошие границы для того, когда и где использовать таблицы поиска в базе данных. Большинство источников, на которые я смотрел, говорят, что у меня никогда не может быть слишком много, но в какой-то момент кажется, что база данных будет разбита на так много частей, что, хотя она может быть эффективной, она больше не будет управляемой. Вот пример того, с чем я работаю:
Допустим, у меня есть таблица с именем Employees:
ID LName FName Gender Position
1 Doe John Male Manager
2 Doe Jane Female Sales
3 Smith John Male Sales
Представьте на мгновение, что данные более сложные и содержат сотни строк. Самая очевидная вещь, которую я вижу, которую можно переместить в таблицу поиска, - это Position. Я мог бы создать таблицу с именем Positions и вставить внешние ключи из таблицы Positions в таблицу Employees в столбце Position.
ID Position
1 Manager
2 Sales
Но как далеко я могу продолжать разбивать информацию на меньшие таблицы поиска, прежде чем она станет неуправляемой? Я мог бы создать таблицу Гендер и иметь 1 соответствует мужскому и 2 соответствуют женскому в отдельной таблице поиска. Я мог бы даже поместить LNames и FNames в таблицы. Все записи «Джон» заменяются внешним ключом 1, который указывает на таблицу FName, в которой говорится, что идентификатор 1 соответствует Джону. Если вы зайдете в эту кроличью нору слишком далеко, как показано ниже, ваша таблица сотрудников будет превращена в беспорядок внешних ключей:
ID LName FName Gender Position
1 1 1 1 1
2 1 2 2 2
3 2 1 1 2
Хотя это может или не может быть более эффективным для обработки сервером, это, конечно, нечитаемо для обычного человека, который может пытаться поддерживать его, и усложняет для разработчика приложения, пытающегося получить к нему доступ. Итак, мой реальный вопрос: как далеко это слишком далеко? Есть ли «лучшие практики» для такого рода вещей или хороший набор руководящих принципов? Я не могу найти какую-либо информацию в Интернете, которая бы действительно привела к хорошему, полезному набору рекомендаций для этой конкретной проблемы, с которой я столкнулся. Дизайн базы данных для меня старая шляпа, но ХОРОШИЙ дизайн базы данных очень новый, поэтому слишком технические ответы могут быть у меня над головой. Любая помощь будет оценена!