Да.Ограничения внешнего ключа обеспечивают ссылочную целостность - ключевой принцип обеспечения надежности и высокого качества ваших данных.В противном случае ваша таблица people_address может ссылаться на значение people_id, которое не существует в таблице people и будет сиротой.Ограничение внешнего ключа предотвратит это.
Итак, просто сделайте это.На самом деле нет веской причины не делать этого.
Определите внешние ключи, такие как приведенные ниже, в таблице people_email:
ALTER TABLE people_email ДОБАВЬТЕ КОНСТРАКТНЫЙ ИНОСТРАННЫЙ КЛЮЧ (people_id) ССЫЛКИ на людей (id) НА УДАЛИТЬ КАСКАД;
Это будет означать, что вы не можете ввести запись в people_email, где people_id в этой таблице не существует в people.Кроме того, если вы удаляете родительскую строку в people, строки, ссылающиеся на нее в people_email с помощью, автоматически удаляются.
Я лично предпочитаю вручную удалять все строки из дочерних таблиц и не использовать каскадное удаление.Это немного лишняя работа по разработке приложений, но она заставляет меня чувствовать себя в большей безопасности, а также позволяет мне контролировать блокировку и обеспечивать максимальную эффективность запросов.