drop table CIDADE cascade constraints;

drop table CLIENTE cascade constraints;

drop table CLIENTEENDERECO cascade constraints;

drop table PROPRIEDADE cascade constraints;

drop table PROPRIEDADETIPO cascade constraints;

drop table TIPOCLIENTE cascade constraints;

/*==============================================================*/
/* Table: CIDADE                                                */
/*==============================================================*/
create table CIDADE  (
   CID_ID               NUMBER(15)                      not null,
   UF_ID                NUMBER(15)                      not null,
   CID_DESCRICAO        VARCHAR2(250)                   not null
);

comment on column CIDADE.CID_ID is
'Identifica a cidade';

comment on column CIDADE.UF_ID is
'Identifica a Unidade da Federacao';

comment on column CIDADE.CID_DESCRICAO is
'Descricao da Cidade';

alter table CIDADE
   add constraint PK_CID primary key (CID_ID);

/*==============================================================*/
/* Table: CLIENTE                                               */
/*==============================================================*/
create table CLIENTE  (
   CLI_ID               NUMBER(15)                      not null,
   TCLI_ID              NUMBER(15),
   CLI_NOME             VARCHAR2(250),
   CLI_NUMCPFCNPJ       NVARCHAR2(20),
   CLI_EMAIL            VARCHAR2(250)
);

alter table CLIENTE
   add constraint PK_CLI primary key (CLI_ID);

/*==============================================================*/
/* Table: CLIENTEENDERECO                                       */
/*==============================================================*/
create table CLIENTEENDERECO  (
   CEND_ID              NUMBER(15)                      not null,
   CLI_ID               NUMBER(15),
   CID_ID               NUMBER(15),
   CEND_CEP             VARCHAR2(20),
   CEND_BAIRRO          VARCHAR2(250),
   CEND_LOGRADOURO      VARCHAR2(250),
   CEND_NUMERO          VARCHAR2(20)
);

comment on column CLIENTEENDERECO.CID_ID is
'Identifica a cidade';

alter table CLIENTEENDERECO
   add constraint PK_CEND primary key (CEND_ID);

/*==============================================================*/
/* Table: PROPRIEDADE                                           */
/*==============================================================*/
create table PROPRIEDADE  (
   PROP_ID              NUMBER(15)                      not null,
   CLI_ID               NUMBER(15),
   PTIP_ID              NUMBER(15),
   PROP_DESCRICAO       VARCHAR2(250),
   PROP_NUMANDAR        VARCHAR2(20),
   PROP_NUMPROPRIEDADE  VARCHAR2(20)
);

alter table PROPRIEDADE
   add constraint PK_PROP primary key (PROP_ID);

/*==============================================================*/
/* Table: PROPRIEDADETIPO                                       */
/*==============================================================*/
create table PROPRIEDADETIPO  (
   PTIP_ID              NUMBER(15)                      not null,
   PTIP_DESCRICAO       VARCHAR2(250)
);

alter table PROPRIEDADETIPO
   add constraint PK_PTIP primary key (PTIP_ID);

/*==============================================================*/
/* Table: TIPOCLIENTE                                           */
/*==============================================================*/
create table TIPOCLIENTE  (
   TCLI_ID              NUMBER(15)                      not null,
   TCLI_DESCRICAO       VARCHAR2(250)
);

alter table TIPOCLIENTE
   add constraint PK_TCLI primary key (TCLI_ID);

alter table CIDADE
   add constraint CID_UF foreign key (UF_ID)
      references UNIDADEFEDERACAO (UF_ID);

alter table CLIENTE
   add constraint CLI_TCLI foreign key (TCLI_ID)
      references TIPOCLIENTE (TCLI_ID);

alter table CLIENTEENDERECO
   add constraint CEND_CID foreign key (CID_ID)
      references CIDADE (CID_ID);

alter table CLIENTEENDERECO
   add constraint CEND_CLI foreign key (CLI_ID)
      references CLIENTE (CLI_ID);

alter table PROPRIEDADE
   add constraint PROP_CLI foreign key (CLI_ID)
      references CLIENTE (CLI_ID);

alter table PROPRIEDADE
   add constraint PROP_PTIP foreign key (PTIP_ID)
      references PROPRIEDADETIPO (PTIP_ID);
