Както беше споменато в коментарите, първо трябва да махнете всички таблици с FK ограничения към други таблици, след това можете да махнете таблиците, към които са свързани.
Пример:
User
id: 1
name: Mike
Address
id: 1
user_id: 1 (FK constraint to User.id table.column)
address_1: 555 Main Street
Тази настройка е връзка 1:1 (повече за нормализирането на данните ), където един потребителски ред може да препраща към един адресен ред и тъй като адресният ред зависи от съществуването на потребителския ред, ако се опитате да премахнете потребителския ред, ще видите грешките, които споменахте.
Но ако първо пуснете таблицата с адреси, всичко работи както се очаква, тъй като таблицата с потребители не е FK към никоя друга таблица.
Осигуряване на препратка интегритет в рамките на вашата схема гарантира, че няма да се окажете с осиротели редове, които ще проникнат в цялото ви приложение, управлявано от данни.
Можете също да издадете следните команди:
SET foreign_key_checks = 0;
# Do Stuff
SET foreign_key_checks = 1;
Но силно бих посъветвал това да не се прави, тъй като бихте могли да нарушите референтната цялост на вашите данни и да се окажете в истинска бъркотия. Виждал съм някой да прави това в корпоративна среда и му отне седмици, за да го почисти. Ако обаче правите това СТРОГО за целите на тестването; като писане на единични тестове или просто учене и не искате да изпускате таблиците всеки път, можете да направите това:
# Because we remove the foreign key check, we can truncate in any order
SET foreign_key_checks = 0;
TRUNCATE TABLE user;
TRUNCATE TABLE address;
SET foreign_key_checks = 1;
Правилното проектиране на схема, използващо ограничения на външния ключ, е по пътя на изграждането на добра основа за всяко приложение, управлявано от данни. Ще ви отнеме време, за да разберете кога да използвате и как да конструирате ограничения на външния ключ, но с течение на времето ще започнете да разбирате. Добър начин да започнете е да изтеглите проект с отворен код като magento , wordpress , или vbulletin и разгледайте техните схеми. Можете дори да интроспектирате тези схеми, като използвате MySQL workbench и вижте техните диаграми за взаимоотношения на обекта (ERDs), които визуално ще демонстрират връзки между таблици.