Я бы сказал, что Color выглядит так, как будто это может быть один стол, который могут использовать и волосы, и глаза.Насколько важно для вашей честности обеспечить тот факт, что ни у кого не должно быть блондинов или голубых волос?
Некоторые люди придерживаются идеи единой таблицы поиска, которая будет иметь идентификатор, группу изначение и, возможно, описание для каждой строки.Идентификатор и группа должны быть первичными ключами, поэтому у вас будет id = 1 и group = 1 для волос в качестве цвета волос BLONDE, id = 1 и group = 2 для глаз в качестве цвета глаз HAZEL и т. Д.
Другие посчитали бы это плохим денормализованным дизайном.
Объединения замедлят вас только тогда, когда число для конкретного запроса станет большим.
Мой совет - нормализоватьдизайн, пока у вас нет данных, чтобы предположить, что он работает плохо.Когда это произойдет, профилируйте свое приложение, чтобы выяснить, в чем проблема, и соответствующим образом реорганизовать или денормализовать.
Я бы сказал, что индексирование окажет большее влияние на производительность, чем эти JOIN.Вы можете быть виновны в преждевременной оптимизации без данных для ее поддержки.