У меня есть таблица пользователей, в которой в качестве первичного ключа используется user_id, и она используется в других таблицах от 40 до 50 (приблизительно). Необходимо ли определять столбец user_id как внешний ключ в каждой таблице, где используется user_id?
Это зависит. RI/FK были введены в Oracle в v7, поэтому базы данных наиболее определенно существовали без них, а некоторые все еще существуют. Но обычно их определяют и включают, поскольку вы в основном получаете эту проверку "бесплатно".
Могут быть случаи, когда вы предпочитаете не использовать их. Я работал над одной системой с низкой задержкой, где скорость была всем, и порядок, в котором родительские/дочерние данные были отправлены в базу данных из уровня управления приложениями, не мог быть гарантирован. В этом случае мы обнаружили, что быстрее построить правила целостности на уровне управления приложениями. Как я уже сказал, случай специалиста, редко встречающийся в других местах, заставит пуристов плюнуть кровью, но он работал очень хорошо и успешно работает уже более 10 лет.
Тем не менее, я еще раз подчеркиваю, что FK/RI в целом хороши, и я бы перевернул ваш вопрос, чтобы сказать: "Когда мне следует подумать об отсутствии FK?".
По моему опыту, вы чаще всего будете находить это отсутствующим из-за лени со стороны разработчиков.
and the order in which parent/child data was posted to the database from the application management layer could not be guaranteed.
... это звучит как настоящая проблема, которую нужно решить, или, по крайней мере, симптом какой-то другой проблемы.
Это не обязательно, но вы хотите сохранить целостность данных, это необходимо. Многие базы данных, используйте его, чтобы найти данные быстрее. Это хорошая практика.