Имея FKs немного походит на наличие управляемой памяти - сама система никогда не позволит вам сделать «оборванных указатель», независимо от того, насколько серьезно вы заблуждаетесь в реализации вашего приложения ,
Внешние ключи необходимы для обеспечения целостности данных. К ним относятся:
- декларативные: Это делает их «очевидные» и более самодокументируемые, чем императивный код погребенным в глубинах реализации приложения.
- Robust: Просто один багги приложения может привести к повреждению данных, поэтому важно иметь центральный механизм для обеспечения целостности данных, не может быть обойден приложениями.
- Масштабируемость: В среде с одновременно, внедрение FKs правильно требует соответствующего управления параллелизмом (например, блокировки), который обычно может быть сделано гораздо более эффективно в СУБД, чем это было бы возможно на уровне приложений.
В целом, это не так важно во встроенных базах данных, таких как SQLite, как в «больших» клиент-серверных базах данных, где несколько клиентских приложений регулярно обращаются к одной и той же базе данных. Однако нет недостатка в использовании FK во встроенной среде, поэтому вы должны делать это, когда вы не слишком ограничены историческими причинами.
Я всегда учился в университете, но это не то, что я вижу на предприятиях ... – periback2
Да, я знаю. как сказал Гилберт Ле Блан, некоторые из них поступают из унаследованных систем, и некоторые из них поступают от разработчиков, оставляющих их, потому что они ленивы или во время разработки они были слишком строгими или громоздкими, а затем никогда не приближались к их внедрению – jfin3204