Cícero Ednilson

Blog sobre Desenvolvimento de Softwares

Home » Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 2: Criando os objetos do banco de dados.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 2: Criando os objetos do banco de dados.

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×

Nessa parte do nosso tutorial vamos criar os objetos de banco de dados que vamos usar na nossa aplicação.

Páginas do tutorial.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 1: Introdução.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 2: Criando os objetos do banco de dados.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 3: Montando o projeto com Spring Boot.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 4: Configurando o Spring Security.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 5: Criando Layout com Thymeleaf.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 6: Criando o cadastro de usuário.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 7: Criando a consulta de usuário.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 8: Excluindo um usuário cadastrado.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 9: Editando um usuário cadastrado.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 10: Testando os acessos do sistema.

Criando uma aplicação Web com Spring Boot, Thymeleaf, Material Designer Lite e Oracle – Parte 11: Executando a aplicação sem o Tomcat Embedded.

Criando os objetos do Banco de Dados.

A primeira tabela que vamos criar vai ser a de grupos, essa tabela vai guardar os grupos de usuários do nosso sistema, esses grupos vão ter determinadas permissões de acesso ao sistema, vamos ver isso mais a frente no nosso tutorial, para criar a nossa tabela vamos executar o script abaixo.

Atenção: O usuário do banco que estou usando aqui é o cicero, mas você pode usar um da sua preferência.

1
2
3
4
5
6
7
8
/*CRIANDO A TABELA DE GRUPOS*/
CREATE TABLE cicero.tb_grupo
(
 
  id_grupo     INT           PRIMARY KEY NOT NULL,
  ds_nome      VARCHAR(50)   NOT NULL,
  ds_descricao VARCHAR(200)  NOT NULL
);

Agora vamos criar a tabela de permissões, é essa tabela que vai armazenar as permissões de acesso ao nosso sistema.

1
2
3
4
5
6
7
/*CRIANDO A TABELA DE PERMISSÕES*/
CREATE TABLE cicero.tb_permissao
(
   id_permissao INT PRIMARY KEY NOT NULL,
   ds_permissao VARCHAR(50)    NOT NULL,
   ds_descricao VARCHAR(200)   NOT NULL   
);

Agora vamos criar a tabela de usuários, essa tabela vamos usar para a realização do CRUD e também para realizar a autenticação do usuário durante o acesso ao sistema.

1
2
3
4
5
6
7
8
9
/*CRIANDO A TABELA DE USUÁRIOS*/
CREATE TABLE cicero.tb_usuario
(
  id_usuario INT PRIMARY KEY NOT NULL,
  ds_nome    VARCHAR(60)      NOT NULL,
  ds_login   VARCHAR(60)      NOT NULL,
  ds_senha   VARCHAR(400)     NOT NULL,
  fl_ativo   NUMBER(1)        NOT NULL
);

Agora vamos criar a tabela que vai vincular o usuário aos grupos de acesso ao sistema.

1
2
3
4
5
6
7
8
9
/*CRIANDO A TABELA DE USUÁRIO X GRUPO*/
CREATE TABLE cicero.tb_usuario_x_grupo
(
  id_usuario INT NOT NULL,  
  id_grupo   INT NOT NULL,
  CONSTRAINT PK_USU_GRUP   PRIMARY KEY(id_usuario,id_grupo),
  FOREIGN KEY(id_usuario) REFERENCES tb_usuario(id_usuario), 
  FOREIGN KEY(id_grupo)  REFERENCES tb_grupo(id_grupo)
);

Agora vamos criar a tabela que vai ter as determinadas permissões de um grupo.

1
2
3
4
5
6
7
8
9
/*CRIANDO A TABELA DE PERMISSÃO X GRUPO*/
CREATE TABLE cicero.tb_permissao_x_grupo
(
  id_permissao INT NOT NULL,  
  id_grupo     INT NOT NULL,
  CONSTRAINT PK_PER_GRUP   PRIMARY KEY(id_permissao,id_grupo),
  CONSTRAINT FK_PERM_1 FOREIGN KEY(id_permissao) REFERENCES tb_permissao(id_permissao), 
  CONSTRAINT FK_GRUP_1 FOREIGN KEY(id_grupo)  REFERENCES tb_grupo(id_grupo)
);

Agora vamos criar a Sequence que vamos usar no insert da tabela tb_grupo.

1
2
3
4
5
6
/*SEQUENCE DA TABELA tb_grupo*/
CREATE SEQUENCE seq_id_grupo
MINVALUE 1                    /* VALOR MINIMO */
MAXVALUE 9999999999           /* VALOR MÁXIMO */
START WITH 1                  /* VALOR INICIAL */
INCREMENT BY 1;               /* INCREMENTA DE 1 EM 1 */

Agora vamos criar a Sequence que vamos usar no insert da tabela tb_permissao.

1
2
3
4
5
CREATE SEQUENCE seq_id_permissao
MINVALUE 1                    /* VALOR MINIMO */
MAXVALUE 9999999999           /* VALOR MÁXIMO */
START WITH 1                  /* VALOR INICIAL */
INCREMENT BY 1;               /* INCREMENTA DE 1 EM 1 */

Agora vamos criar a Sequence que vamos usar no insert da tabela tb_usuario.

1
2
3
4
5
6
/*SEQUENCE DA TABELA tb_usuario*/
CREATE SEQUENCE seq_id_usuario
MINVALUE 1                    /* VALOR MINIMO */
MAXVALUE 9999999999           /* VALOR MÁXIMO */
START WITH 1                  /* VALOR INICIAL */
INCREMENT BY 1;               /* INCREMENTA DE 1 EM 1 */

Agora vamos executar o script abaixo para criar os grupos da nossa aplicação, durante o desenvolvimento vamos deixar que o Grupo de Administradores tenha acesso total ao sistema, o grupo Usuários Comum apenas a função de consulta e o grupo Backoffice com a função de realizar cadastros.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INSERT INTO cicero.tb_grupo(id_grupo,
                             ds_nome,
                             ds_descricao) 
                      VALUES(seq_id_grupo.NEXTVAL,
                              'ADMINISTRADORES', 
                              'Adminitrador');
 
INSERT INTO cicero.tb_grupo(id_grupo,
                             ds_nome,
                             ds_descricao) 
                      VALUES(seq_id_grupo.NEXTVAL,
                              'USUARIOS', 
                              'Usuários Comum');
 
INSERT INTO cicero.tb_grupo(id_grupo,
                             ds_nome,
                             ds_descricao) 
                      VALUES(seq_id_grupo.NEXTVAL,
                              'BACKOFFICE', 
                              'Backoffice - Cadastros');

Agora vamos executar o script abaixo para criar o primeiro usuário do sistema, a senha está criptografada por um objeto do Spring que vamos ver mais a frente, a senha que estamos inserindo é 123456.

1
2
3
4
5
6
7
8
9
10
INSERT INTO cicero.tb_usuario (id_usuario,
                                ds_nome,
                                ds_login,
                                ds_senha,
                                fl_ativo)
                        VALUES(seq_id_usuario.NEXTVAL,
                                'Cícero Ednilson',
                                'cicero',
'$2a$10$YYe9VtFGZoWvrNSZNV/AeuVSTOMQLxcGia4IQEl/yVaxrfAnPDcuO',
                                 1);

Agora vamos inserir as permissões do nosso sistema.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INSERT INTO cicero.tb_permissao(id_permissao,
                                  ds_permissao,
                                  ds_descricao)
                           VALUES(seq_id_permissao.NEXTVAL,
                                   'ROLE_CADASTROUSUARIO',
                                   'CADASTRO DE NOVOS USUÁRIOS');
 
INSERT INTO cicero.tb_permissao(id_permissao,
                                  ds_permissao,
                                  ds_descricao)
                           VALUES(seq_id_permissao.NEXTVAL,
                                   'ROLE_CONSULTAUSUARIO',
                                   'CONSULTA DE USUÁRIOS');                                   
 
INSERT INTO cicero.tb_permissao(id_permissao,
                                  ds_permissao,
                                  ds_descricao)
                           VALUES(seq_id_permissao.NEXTVAL,
                                   'ROLE_ADMIN',
                                   'ADMINISTRAÇÂO COMPLETA');

Agora vamos vincular o nosso usuário ao grupo de Administradores, certifique-se que os ID’s que você está inserindo estão corretos.

1
INSERT INTO cicero.tb_usuario_x_grupo(id_usuario,id_grupo)VALUES(1,1);

Agora vamos cadastrar as permissões para os nossos grupos conforme o script abaixo.

1
2
3
4
5
6
7
8
/*ROLE_CADASTROUSUARIO x BACKOFFICE*/
INSERT INTO cicero.tb_permissao_x_grupo(id_permissao,id_grupo)VALUES(1,3); 
 
/*ROLE_CONSULTAUSUARIO x USUARIOS*/
INSERT INTO cicero.tb_permissao_x_grupo(id_permissao,id_grupo)VALUES(2,2);
 
/*ROLE_ADMIN x ADMINISTRADORES*/
INSERT INTO cicero.tb_permissao_x_grupo(id_permissao,id_grupo)VALUES(3,1);

Podemos executar o select abaixo para ver se as permissões estão corretas.

1
2
3
4
5
6
7
8
9
10
SELECT
  TB_PERMISSAO_X_GRUPO.ID_PERMISSAO,
  TB_PERMISSAO.DS_PERMISSAO,
  TB_PERMISSAO.DS_DESCRICAO,
  TB_PERMISSAO_X_GRUPO.ID_GRUPO,
  TB_GRUPO.DS_NOME
FROM
  TB_PERMISSAO_X_GRUPO TB_PERMISSAO_X_GRUPO
INNER JOIN  TB_GRUPO TB_GRUPO ON  TB_GRUPO.ID_GRUPO = TB_PERMISSAO_X_GRUPO.ID_GRUPO 
INNER JOIN  TB_PERMISSAO TB_PERMISSAO ON TB_PERMISSAO.ID_PERMISSAO  = TB_PERMISSAO_X_GRUPO.ID_PERMISSAO;

O resultado deve ser igual a imagem abaixo.

Bom já estamos com o nosso banco de dados criado, na próxima parte do nosso tutorial vamos montar a estrutura do nosso projeto.

Pegue os scripts completo aqui.

Comentários

Name of author

Name: ciceroednilson@gmail.com

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×