Na Área de Trampo criamos uma tabela DICIONARIO na Base de Dados
Estrutura da Tabela DICIONARIO :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
CREATE TABLE `dicionario` ( `id` int NOT NULL AUTO_INCREMENT, `orgao` varchar(150) NOT NULL, `tabela` varchar(150) NOT NULL, `campo` varchar(150) NOT NULL, `descricao` varchar(300) NOT NULL, `tipo` varchar(45) NOT NULL, `formato` varchar(150) DEFAULT NULL, `ordenacao` varchar(45) DEFAULT NULL, `valor_negocio` int DEFAULT '0', `risco` int DEFAULT '0', `uso` int DEFAULT '0', `compliance` int DEFAULT '0', `sensibilidade` int DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `dicionario_unique_1` (`orgao`,`tabela`,`campo`), CONSTRAINT `dicionario_chk_1` CHECK ((`valor_negocio` between 0 and 10)), CONSTRAINT `dicionario_chk_2` CHECK ((`risco` between 0 and 10)), CONSTRAINT `dicionario_chk_3` CHECK ((`uso` between 0 and 10)), CONSTRAINT `dicionario_chk_4` CHECK ((`compliance` between 0 and 10)), CONSTRAINT `dicionario_chk_5` CHECK ((`sensibilidade` between 0 and 10)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
Os valores podem variar entre 0 (muito fraco) a 10 (muito forte)
Prioridade calculada
|
1 2 3 4 |
function calcularPrioridade(dado) { const pontuacao = dado.valorNegocio * 0.3 + dado.risco * 0.3 + dado.uso * 0.2 + dado.compliance * 0.1 + dado.sensibilidade * 0.1; return pontuacao; } |
Classificação calculada
|
1 2 3 |
function calcularClassificacao(dado) { return dado.sensibilidade > 8 ? "SENSIVEL" : "PUBLICO"; } |
Opções:
- Fazer o calculo pelo python.
- Criar função PL/SQL e adicionar as colunas calculadas em uma VIEW na Base de Dados.
INSERT
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
USE trampo; INSERT INTO dicionario (orgao, tabela, campo, descricao, tipo, formato, ordenacao, valor_negocio, risco, uso, compliance, sensibilidade) VALUES ('ANCINE','salas-de-exibicao-e-complexos','NOME_SALA', 'Nome da sala relacionada ao seu cadastro na ANCINE.', 'String(150)', NULL, '2o campo', 7, 3, 9, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','REGISTRO_SALA', 'Código de identificação do registro da sala na ANCINE.', 'String(7)', NULL, NULL, 8, 4, 9, 2, 1), ('ANCINE','salas-de-exibicao-e-complexos','CNPJ_SALA', 'Número do Cadastro Nacional da Pessoa Jurídica da sala.', 'String(18)', '[0-9]{2}.[0-9]{3}.[0-9]{3}/[0-9]{4}-[0-9]{2}', NULL, 9, 8, 7, 8, 6), ('ANCINE','salas-de-exibicao-e-complexos','SITUACAO_SALA', 'Situação da sala junto à ANCINE.', 'String(23)', NULL, NULL, 6, 2, 8, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','DATA_SITUACAO_SALA', 'Data de referência da situação da sala.', 'Date', 'dd/MM/yyyy', NULL, 5, 2, 6, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','DATA_INICIO_FUNCIONAMENTO_SALA', 'Data de início de funcionamento da sala.', 'Date', 'dd/MM/yyyy', NULL, 5, 2, 6, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','ASSENTOS_SALA', 'Número de assentos da sala.', 'Number(4)', NULL, NULL, 6, 1, 7, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','ASSENTOS_CADEIRANTES', 'Número de assentos para pessoas em cadeiras de roda.', 'Number(4)', NULL, NULL, 7, 2, 6, 4, 2), ('ANCINE','salas-de-exibicao-e-complexos','ASSENTOS_MOBILIDADE_REDUZIDA', 'Número de assentos para pessoas de mobilidade reduzida.', 'Number(4)', NULL, NULL, 7, 2, 6, 4, 2), ('ANCINE','salas-de-exibicao-e-complexos','ASSENTOS_OBESIDADE', 'Número de assentos para pessoas obesas.', 'Number(4)', NULL, NULL, 7, 2, 6, 4, 2), ('ANCINE','salas-de-exibicao-e-complexos','ACESSO_ASSENTOS_COM_RAMPA', 'Identifica se a sala possui rampa para acesso aos assentos.', 'String(3)', NULL, NULL, 6, 1, 5, 3, 1), ('ANCINE','salas-de-exibicao-e-complexos','ACESSO_SALA_COM_RAMPA', 'Identifica se a sala possui rampa para acesso.', 'String(3)', NULL, NULL, 6, 1, 5, 3, 1), ('ANCINE','salas-de-exibicao-e-complexos','BANHEIROS_ACESSIVEIS', 'Identifica se o local possui banheiros acessíveis.', 'String(3)', NULL, NULL, 6, 1, 5, 3, 1), ('ANCINE','salas-de-exibicao-e-complexos','NOME_COMPLEXO', 'Nome do complexo exibidor relacionado ao cadastro na ANCINE.', 'String(150)', NULL, '1o campo', 8, 3, 9, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','REGISTRO_COMPLEXO', 'Código de identificação do registro do complexo exibidor na ANCINE.', 'String(7)', NULL, NULL, 8, 4, 9, 2, 1), ('ANCINE','salas-de-exibicao-e-complexos','SITUACAO_COMPLEXO', 'Situação do complexo junto à ANCINE.', 'String(23)', NULL, NULL, 6, 2, 8, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','DATA_SITUACAO_COMPLEXO', 'Data de referência da situação do complexo.', 'Date', 'dd/MM/yyyy', NULL, 5, 2, 6, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','PAGINA_ELETRONICA_COMPLEXO', 'Página eletrônica do complexo exibidor.', 'String(120)', NULL, NULL, 4, 1, 4, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','ENDERECO_COMPLEXO', 'Endereço do complexo exibidor.', 'String(120)', NULL, NULL, 7, 4, 8, 3, 3), ('ANCINE','salas-de-exibicao-e-complexos','NUMERO_ENDERECO_COMPLEXO', 'Número referente ao endereço do complexo exibidor.', 'String(6)', NULL, NULL, 5, 3, 7, 2, 2), ('ANCINE','salas-de-exibicao-e-complexos','COMPLEMENTO_COMPLEXO', 'Complemento referente ao endereço do complexo exibidor.', 'String(120)', NULL, NULL, 3, 2, 5, 1, 2), ('ANCINE','salas-de-exibicao-e-complexos','BAIRRO_COMPLEXO', 'Bairro referente ao endereço do complexo exibidor.', 'String(50)', NULL, NULL, 5, 3, 7, 2, 2), ('ANCINE','salas-de-exibicao-e-complexos','MUNICIPIO_COMPLEXO', 'Município referente ao endereço do complexo exibidor.', 'String(50)', NULL, NULL, 7, 3, 9, 2, 2), ('ANCINE','salas-de-exibicao-e-complexos','CEP_COMPLEXO', 'Código postal referente ao endereço do complexo exibidor.', 'String(15)', NULL, NULL, 5, 4, 7, 2, 3), ('ANCINE','salas-de-exibicao-e-complexos','UF_COMPLEXO', 'Sigla da unidade federativa referente ao endereço do complexo.', 'String(2)', NULL, NULL, 7, 2, 9, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','COMPLEXO_ITINERANTE', 'Indica se o complexo é itinerante.', 'String(3)', NULL, NULL, 5, 1, 5, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','OPERACAO_USUAL', 'Indica se o complexo possui operação comercial.', 'String(13)', NULL, NULL, 6, 1, 6, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','NOME_EXIBIDOR', 'Nome do exibidor relacionado ao cadastro na ANCINE.', 'String(150)', NULL, NULL, 8, 4, 9, 1, 2), ('ANCINE','salas-de-exibicao-e-complexos','REGISTRO_EXIBIDOR', 'Código de identificação do registro do exibidor na ANCINE.', 'String(7)', NULL, NULL, 8, 4, 8, 2, 1), ('ANCINE','salas-de-exibicao-e-complexos','CNPJ_EXIBIDOR', 'Número do Cadastro Nacional da Pessoa Jurídica do exibidor.', 'String(18)', '[0-9]{2}.[0-9]{3}.[0-9]{3}/[0-9]{4}-[0-9]{2}', NULL, 9, 8, 7, 8, 6), ('ANCINE','salas-de-exibicao-e-complexos','SITUACAO_EXIBIDOR', 'Situação do exibidor junto à ANCINE.', 'String(9)', NULL, NULL, 6, 2, 8, 1, 1), ('ANCINE','salas-de-exibicao-e-complexos','NOME_GRUPO_EXIBIDOR', 'Nome do grupo exibidor relacionado ao cadastro na ANCINE.', 'String(150)', NULL, NULL, 7, 3, 7, 1, 2); |
VIEW com campos Prioridade e Classificacao calculados
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
USE trampo; CREATE OR REPLACE VIEW vw_dicionario AS SELECT orgao, tabela, campo, descricao, tipo, formato, ordenacao, valor_negocio, risco, uso, compliance, sensibilidade, calcularPrioridade(valor_negocio, risco, uso, compliance, sensibilidade) AS prioridade, calcularClassificacao(sensibilidade) AS classificacao FROM trampo.dicionario; |
SELECT
|
1 |
SELECT * FROM trampo.vw_dicionario; |