Jak wspomniano w komentarzach, musisz najpierw usunąć wszystkie tabele z ograniczeniami FK do innych tabel, a następnie upuścić tabele, z którymi są połączone.
Przykład:
User
id: 1
name: Mike
Address
id: 1
user_id: 1 (FK constraint to User.id table.column)
address_1: 555 Main Street
Ta konfiguracja to relacja 1:1 (więcej o normalizacji danych ), gdzie jeden wiersz użytkownika może odwoływać się do jednego wiersza adresu, a ponieważ wiersz adresu jest zależny od istnienia wiersza użytkownika, jeśli spróbujesz usunąć wiersz użytkownika, zobaczysz wymienione błędy.
Ale jeśli najpierw upuścisz tabelę Address, wszystko działa zgodnie z oczekiwaniami, ponieważ tabela User nie jest FK do żadnej innej tabeli.
Zapewnienie integralności referencyjnej w schemacie zapewnia, że nie otrzymasz osieroconych wierszy, które będą przenikać przez całą aplikację opartą na danych.
Możesz również wydać następujące polecenia:
SET foreign_key_checks = 0;
# Do Stuff
SET foreign_key_checks = 1;
Ale zdecydowanie odradzałbym to, ponieważ możesz złamać referencyjną integralność swoich danych i skończyć w prawdziwym bałaganie. Widziałem, jak ktoś robi to w środowisku korporacyjnym i posprzątanie tego zajęło mu kilka tygodni. Jeśli jednak robisz to WYŁĄCZNIE do celów testowych; na przykład pisanie testów jednostkowych lub po prostu uczenie się, a nie chcesz za każdym razem porzucać tabel, możesz to zrobić:
# 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;
Właściwy projekt schematu z wykorzystaniem ograniczeń kluczy obcych prowadzi do zbudowania dobrej podstawy dla dowolnej aplikacji opartej na danych. Zajmie trochę czasu, aby się zorientować, kiedy używać i jak konstruować ograniczenia klucza obcego, ale z czasem zaczniesz rozumieć. Dobrym sposobem na rozpoczęcie jest pobranie projektu open source, takiego jak magento , wordpress lub vbulletin i spójrz na ich schematy. Możesz nawet przeprowadzić introspekcję tych schematów za pomocą MySQL workbench i zobacz ich Diagramy relacji encji (ERD), które wizualnie zademonstrują powiązania między tabelami.