text: CREATE DATABASE db_intranet character set UTF8  collate utf8_general_ci;
  
  
  CREATE TABLE PERFIL (
      ID_PERFIL INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      PERFIL VARCHAR(40) UNIQUE NOT NULL,
      DATA_CADASTRO DATETIME NOT NULL,
      DATA_MODIFICACAO DATETIME,
      STATUS BOOLEAN DEFAULT 1 
  );
  
  
  CREATE TABLE ENDERECO (
      ID_ENDERECO INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      RUA VARCHAR(250) NOT NULL,
      BAIRRO VARCHAR(120) NOT NULL,
      CIDADE VARCHAR(120) NOT NULL,
      ESTADO CHAR(2) NOT NULL,
      CEP varchar(20) UNIQUE NOT NULL,
      DATA_CADASTRO DATETIME NOT NULL,
      DATA_MODIFICACAO DATETIME    
  );
  
  CREATE TABLE INSTITUTO (
      ID_INSTITUTO INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      ID_ENDERECO INT NOT NULL,
      CNPJ VARCHAR(20) UNIQUE NOT NULL,
      NOME_INSTITUTO VARCHAR(100) NOT NULL,
      TELEFONE VARCHAR(20) NOT NULL,
      TIPO_ENSINO VARCHAR(50) NOT NULL,
      DATA_CADASTRO DATETIME NOT NULL,
      DATA_MODIFICACAO DATETIME,
      STATUS BOOLEAN DEFAULT 1,
      CONSTRAINT FK_ENDERECO_INSTITUTO FOREIGN KEY (ID_ENDERECO)
      REFERENCES ENDERECO (ID_ENDERECO)
      ON DELETE RESTRICT
      ON UPDATE CASCADE
  );
  
  CREATE TABLE USUARIO (
      ID_USUARIO INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      ID_ENDERECO INT,
      ID_INSTITUITO INT,
      ID_PERFIL INT,
      NOME VARCHAR(100) NOT NULL,
      LOGIN VARCHAR(50) UNIQUE NOT NULL,
      EMAIL VARCHAR(100) UNIQUE NOT NULL,
      SENHA VARCHAR(255) NOT NULL,
      IMAGEM VARCHAR(60),
      NACIONALIDADE VARCHAR(100),
      HABILIDADE VARCHAR(400),
      DATA_CADASTRO DATETIME NOT NULL,
      DATA_MODIFICACAO DATETIME,
      STATUS BOOLEAN DEFAULT 1,
      
      CONSTRAINT FK_ENDERECO_USUARIO FOREIGN KEY (ID_ENDERECO) 
      REFERENCES ENDERECO(ID_ENDERECO)
      ON DELETE SET NULL
      ON UPDATE CASCADE,
      
      CONSTRAINT FK_INSTITUITO_USUARIO FOREIGN KEY (ID_INSTITUTO)
      REFERENCES INSTITUTO(ID_INSTITUTO) 
      ON DELETE SET NULL
      ON UPDATE CASCADE,
      
      CONSTRAINT FK_PERFIL_USUARIO FOREIGN KEY (ID_PERFIL)
      REFERENCES PERFIL(ID_PERFIL)
      ON DELETE SET NULL
      ON UPDATE CASCADE
      
  );
  
  
  
  CREATE TABLE MENSAGEM (
      ID_MENSAGEM INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      USUARIO_ORIGEM VARCHAR(100) NOT NULL,
      USUARIO_DESTINO VARCHAR (100) NOT NULL,
      TITULO VARCHAR(100) NOT NULL,
      DESCRICAO BLOB NOT NULL,
      DATA_ENVIO DATETIME NOT NULL,
      DATA_MODIFICACAO DATETIME,
      STATUS BOOLEAN NOT NULL DEFAULT 1, -- 1 Ativo / 2 Inativo
      IS_FAVORITE BOOLEAN NOT NULL DEFAULT 1,  -- 1 Não Favorito / 2 Favorito
      IS_READ BOOLEAN NOT NULL DEFAULT 1,  -- 1 Não Lido / 2 Lido
      
      CONSTRAINT FK_USUARIO_ORIGEM_MENSAGEM FOREIGN KEY (USUARIO_ORIGEM)
      REFERENCES USUARIO (EMAIL)
      ON DELETE CASCADE   
      ON UPDATE CASCADE,
  
      CONSTRAINT FK_USUARIO_DESTINO_MENSAGEM FOREIGN KEY (USUARIO_DESTINO)
      REFERENCES USUARIO (EMAIL)
      ON DELETE CASCADE
      ON UPDATE CASCADE
  );
  
  
  CREATE TABLE HABILIDADE (
      ID_HABILIDADE INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      HABILIDADE VARCHAR(25) UNIQUE NOT NULL,
      DATA_CADASTRO DATETIME NOT NULL
  );
  
  