But I also knew, and forgot, Hoare's dictum that premature optimization is the root of all evil in programming
Надо ответить себе на несколько вопросов:
- Имеет ли такую нужду(как оптимизация) база данных место быть. У вас есть уже такой трафик?Если да, тогда и правда стоит подумать об этом
- Надо думать и о доменной(бизнес модели), если в бизнесе такое понятие как contacts или он был придуман вами. Когнитивная нагрузка будет возрастать если например в вашем бизнесе это называют потенциальный заказчик(например). Заходя в структуру базы, без документации, не будет очевидно копирование из таблицы contacts to users.
- Таблица contacts - это денормализация данных, частая практика для экономии операции чтения, насколько здесь оправдано - не ясно, так как задача вырвана из общего контекста(любое условие или перспектива будущего могут на него повлиять). Если вам надо просто различать состояние user, то вы можете сделать пометку в этой таблице. Если у вас есть дополнительная работа с candidate user(заключение договоров, ведение переговор с сохранением данных об этом и так далее) то есть процесс не мгновенный из одного состояние в другое, то наверное надо хранить в другой таблице.
Не знаю в каком у вас состоянии находиться проект, на мой взгляд заострять внимание на производительности базы не приоритетный шаг в самом начале.✌️