CREATE TABLE IF NOT EXISTS regioes_pessoa (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    empresa_id BIGINT UNSIGNED NOT NULL,
    codigo VARCHAR(20) NOT NULL,
    descricao VARCHAR(160) NOT NULL,
    ativo TINYINT(1) NOT NULL DEFAULT 1,
    criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    excluido_em TIMESTAMP NULL,
    CONSTRAINT fk_regioes_pessoa_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id),
    UNIQUE KEY uq_regioes_pessoa_empresa_codigo (empresa_id, codigo),
    INDEX idx_regioes_pessoa_empresa_ativo (empresa_id, ativo)
);

CREATE TABLE IF NOT EXISTS areas_pessoa (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    empresa_id BIGINT UNSIGNED NOT NULL,
    codigo VARCHAR(20) NOT NULL,
    regiao_id BIGINT UNSIGNED NOT NULL,
    descricao VARCHAR(160) NOT NULL,
    ativo TINYINT(1) NOT NULL DEFAULT 1,
    criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    excluido_em TIMESTAMP NULL,
    CONSTRAINT fk_areas_pessoa_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id),
    CONSTRAINT fk_areas_pessoa_regiao FOREIGN KEY (regiao_id) REFERENCES regioes_pessoa(id),
    UNIQUE KEY uq_areas_pessoa_empresa_codigo (empresa_id, codigo),
    INDEX idx_areas_pessoa_empresa_regiao (empresa_id, regiao_id, ativo)
);
