Comportamiento extraño de clave foránea en tablas vacías en SQLite 3

Tengo SQLite 3 con la siguiente configuración (simplificada):

create table Location(LocationId integer not null,
                      LocationCode text not null, 
                      primary key(LocationId),
                      unique(LocationCode));

La tabla anterior está siendo referenciada por el Departamento:

create table Department(DepartmentId integer not null,
                        LocationId integer not null,
                        DepartmentCode text not null,
                        primary key(LocationId, DepartmentCode),
                        foreign key(LocationId) references Location(LocationId));

La tabla anterior está siendo referenciada por Niño:

create table Event(EventId integer not null,
                   LocationId integer not null,
                   unique(LocationId, EventDate),
                   primary key(eventId),
                   foreign key(LocationId) references Location(LocationId));

La tabla anterior hace referencia a la ubicación de la tabla:

create table Parent(ParentId integer not null,
                    EmailAddress text not null,
                    primary key(ParentId),
                    unique(EmailAddress));

La tabla anterior está siendo referenciada por la tabla Niño:

create table Child(ChildId integer not null,
                   ParentId integer not null,
                   ChildCode text not null,
                   DepartmentId integer not null,
                   primary key(ChildId, ParentId),
                   foreign key(ParentId) references Parent(ParentId),
                   foreign key(DepartmentId) references Department(DepartmentId));

La tabla hijo es la que estoy tratando de eliminar.

En este punto, toda la base de datos está vacía y tiene "pragma foreign_keys = ON".

Al probar un script para borrar la base de datos, encontré un error al eliminar de la tabla vacíaChild Tener una clave externa para la tabla (también vacía)Parent.

Cuando emito el comandodelete from child (mientras que ya está vacío), SQLite3 regresa con el mensaje de error "falta de coincidencia de claves externas".

Esta es la parte vital del script de eliminación:

delete from Child;
delete from Parent;
delete from Event;
delete from Department;
delete from Location;

Vi algunas publicaciones aquí sobre la desactivación temporal del soporte de clave externa, pero eso no tiene sentido para mí. Eso hace que todo el proceso de implementación de una relación de clave externa sea innecesario.

Respuestas a la pregunta(1)

Su respuesta a la pregunta