CREATE TABLE cidades (
    id              bigint NOT NULL,
    estado_id       bigint NOT NULL,
    nome            VARCHAR2(255) NOT NULL,
    abreviacao      VARCHAR2(100),
    controle_cep    SMALLINT NOT NULL,
    cep             INTEGER,
    tipo_localidade SMALLINT NOT NULL,
    dne_cod         INTEGER,
    ibge_cod        INTEGER,
    receita_cod     INTEGER,
    sinpas_cod      INTEGER,
    cidade_pai_id   bigint
);

ALTER TABLE cidades
    ADD CHECK ( controle_cep IN ( 1, 2, 3 ) );

ALTER TABLE cidades ADD CHECK ( tipo_localidade IN ( 1 ) );

COMMENT ON COLUMN cidades.id IS
    'Id. da Cidade';

COMMENT ON COLUMN cidades.estado_id IS
    'Id do estado da Cidade';

COMMENT ON COLUMN cidades.nome IS
    'Nome da Cidade	';

COMMENT ON COLUMN cidades.abreviacao IS
    'Nome abreviado da cidade';

COMMENT ON COLUMN cidades.controle_cep IS
    'Identifica como é feito o controle de CEP
1-Po Logradouro
2-Por Cidade
3-Não Controla (Quando cidade de fora do Brasil)
';

COMMENT ON COLUMN cidades.cep IS
    'Cep da cidade quando o controle de cep é por cidade';

COMMENT ON COLUMN cidades.tipo_localidade IS
    'Tipo de Localidade
1-Cidade';

COMMENT ON COLUMN cidades.dne_cod IS
    'Código da cidade da base do DNE(Diretório Nacional de Endereços)';

COMMENT ON COLUMN cidades.ibge_cod IS
    'Código da cidade da base do IBGE( Instituto Brasileiro de Geografia e Estatística)';

COMMENT ON COLUMN cidades.receita_cod IS
    'Código da cidade da base da Receita Federal';

COMMENT ON COLUMN cidades.sinpas_cod IS
    'Código da cidade da base do Sinpas(Sistema Nacional de Previdência e Assistência Social )';

COMMENT ON COLUMN cidades.cidade_pai_id IS
    'Id da cidade pai para os tipos de localidades diferente de cidades Ex: povoados';