Я работаю над старым веб-приложением, которое моя компания использует для создания опросов. Я посмотрел на схему базы данных через командную строку mysql и подумал, что таблицы выглядят довольно солидно. Хотя я не гуру БД, я хорошо разбираюсь в теории (пройдя несколько курсов по разработке базы данных в моей программе разработки программного обеспечения).
При этом я выгрузил операторы создания в файл SQL и импортировал их в MySQL Workbench и увидел, что они не используют никаких "реальных" внешних ключей. Они будут хранить первичный ключ другой таблицы, как если бы вы использовали FK, но не объявляли его как единое целое.
Так что, видя, как устроена их БД так, как я бы через то, что я знаю (за исключением проблемы с ФК), я задаюсь вопросом, может быть, есть причина этого. Это случай ленивого программирования или вы можете получить некоторое повышение производительности, выполнив всю проверку ошибок программно?
В случае, если вам нужен пример, у них в основном есть опросы, а в опросе есть серия вопросов. Вопрос является частью опроса, поэтому он содержит PK в столбце. Это довольно много, но они используют его повсюду.
Буду признателен за любую информацию :) (Я понимаю, что на этот вопрос может не быть правильного / неправильного ответа, но я ищу больше информации о том, почему они так поступили, поскольку эта система была довольно надежной с тех пор, как мы начал использовать его, поэтому я поверил, что эти парни знали, что они делают)