Външни ключове
наложи интегритет на препратка
. Тези ограничения гарантират, че ред в таблица order_details
с поле order_id
препраща към orders
таблицата никога няма да има order_id
стойност, която не съществува в orders
маса.
Не се изисква външни ключове да имат работеща релационна база данни (всъщност хранилище по подразбиране на MySQL двигателят не поддържа FKs), но те определено са от съществено значение, за да се избегнат прекъснати връзки и осиротяващи редове (т.е. референтна цялост). Възможността за налагане на референтна цялост на ниво база данни е необходима за C в ACID да стои.
Що се отнася до вашите притеснения относно производителността, като цяло има разходи за производителност, но вероятно ще бъдат незначителни. Предлагам да поставите всичките си ограничения за външния ключ и да експериментирате без тях само ако имате реални проблеми с производителността, които не можете да разрешите по друг начин.