Tarefa 02 – Iniciando os trabalhos

Iniciando os trabalhos

Tarefa 02 – Iniciando os trabalhos : através do usuário APP_OWNER, criar os objetos a serem usados pela aplicação, conforme Modelagem que será fornecida, E através do usuário de Administração, criar os usuários de banco das pessoas que usarão a Aplicação, com as pessoas recebendo privilégios em tabelas conforme os departamentos em que trabalham – preferencialmente, usar ROLEs pra agrupar os usuários.

IMPORTANTE :

a) Serão MUITO bem-vindos comentários (de boa qualidade, não comentar “Essa tabela é de Clientes”, ou “Essa coluna admite 20 caracteres”, essas coisas são Óbvias), E aderência à alguma regra de Nomenclatura para triggers, Constraints, Sequences e qualquer objetos lógicos que forem necessários.

b) Como dificilmente a pessoa que solicita uma implantação de sistemas é um Especialista em RDBMS Oracle, faz parte das atribuições de um DBA  conhecer  as principais features da versão/release/Edition em uso E sugerir implementar os recursos que julgar importante : no nosso caso, a documentação da nossa versão está em https://docs.oracle.com/en/database/oracle/oracle-database/18/xelic/licensing-information.html . Para maximizar a pontuação na entrega dessa tarefa, é solicitado implementar na criação dos objetos as features que julgar pertinente (principalmente Compactação de Dados, Particionamentos, Tempo de permanência de um dado no banco online (há informações, principalmente Comerciais, que não precisam ficar online eternamente), etc… CASO o participante não esteja seguro e certo da Aplicabilidade de uma dada Feature no modelo fornecido, ao menos Relatar a possibilidade

c) Hoje em dia um tema muito exigido é adequação à LGPD : para isso, Supondo que os Analistas que estão implementando a App não se atentaram à isso, é solicitado um relatório indicando (pelo nome e conteúdo indicado no modelo) uma lista das colunas que eventualmente poderiam ter dados sensíveis, que sirvam para Identificar unicamente uma pessoa – a Auditoria em si será implementada em tarefa Posterior

d) implementar (através de ROLEs, preferencialmente) os acessos restritos Exigidos

e) Como o usuário solicitante não conhece bem as features de preenchimento de dados (como colunas IDENTITY/Sequenciais, triggers, etc) e nem as constraints de checagem de dados e Obrigatoriedade de preenchimento de colunas, as Implementar onde for julgado Adequado

Modelagem (A indica string, 9 indica número, DH indica datas com horas, T indica texto longo, os limites máximos para strings e números serão especificados em parêntesis), PK indica coluna-chave, FK indica coluna-filha) :20:46

Tabela : TB_TIPOS_DOCUMENTOS
Colunas e Especificações : ID_TIPO_DOCUMENTO A(10) PK
                           TIPO_PESSOA_DOC A(01) PK Pode conter F=Física ou J=Jurídica
                           DESCR_DOCUMENTO A(30)
                           
Tabela : TB_CLIENTES , contém toda a carteira de clientes, Ativos ou Não, que já realizaram compras ou não
Colunas e Especificações : CD_CLIENTE 9(6) PK
                            NOME_COMPLETO A(100)
                            NOME_FANTASIA A(40)
                            LOGRADOURO A(20)
                            ENDERECO A(50)
                            NUMERO 9(6)
                            COMPLEMENTO A(50)
                            BAIRRO A(30)
                            CIDADE A(60)
                            UF A(02)
                            CEP A(08)
                            TIPO_PESSOA A(01) FK da tabela TB_TIPOS_DOCUMENTOS Pode conter F=Física ou J=Jurídica
                            DOCUMENTO A(30) Pode conter número de RG, CPF, CNPJ/CGC ou qquer identificador similar
                                                        que sirva pra Identificar um Único Cliente
                            ID_TIPO_DOCUMENTO A(10) FK da tabela TB_TIPOS_DOCUMENTOS
                            DT_DESATIVACAO DH Preenchido se / quando cliente for Inativado
                            DT_CADASTRO DH
                            DT_ULT_COMPRA DH
                            QTD_COMPRAS 9(6) Deve conter sempre a quanttdade Atualizada de compras do Cliente ou
                                                       ZERO se cliente nunca fez compras

Tabela : TB_PRODUTOS , registra todo e qualquer produto que Pode ser Vendido
Colunas e Especificações : ID_PRODUTO A(10) PK
                            DESCR_PRODUTO A(50)

Tabela : TB_VENDAS , registra históricos das vendas, nunca sofre UPDATE, linhas ref. vendas Canceladas são Excluídas
Colunas e Especificações : NUM_VENDA 9(8) PK
                            DT_VENDA DH
                            CD_CLIENTE 9(6) FK da tabela TB_CLIENTES
                            NUM_NF 9(5)
                            OBS T
           
tabela : TB_ITENS_VENDAS, registra Itens de cada venda, mesmo lógica de utilização da TB_ITENS_VENDAS
Colunas e Especificações : NUM_VENDA 9(8) PK FK da tabela TB_VENDAS
                            NUM_ITEM_VENDA 9(3) PK
                            ID_PRODUTO A(10) FK tabela TB_PRODUTOS
                            VALOR_DO_ITEM 9(6,2)
                            
IMPORTANTE : as quantidades / limites das colunas string são em CARACTERES e não em BYTES

Acesso : o usuário PATINHAS (Gerente-geral) acessa/lê e faz DML de qualquer tipo em qualquer tabela da modelagem (não em qualquer tabela do database) , os usuários do setor Contabilidade só consultam tabelas de VENDAS e ITENS DE VENDAS, e usuários do setor VENDAS/COMERCIAL fazem Queries e DMLs nas tabelas de VENDAS e ITENS DE VENDAS, e Queries + SELECTs + DMLs na tabela TB_PRODUTOS

Bônus : 100 moedas para os 5 primeiros que entregarem a tarefa completa primeiro, 90 moedas pros demais que entregarem a tarefa completa depois desses 5, de 80 a 50 (dependendo do que faltar) pra quem entregar incompleta. 20 moedas pra quem tabelas/índices/objetos COM as opções de performance/segurança/armazenamento cabíveis para as tabelas conforme Observações na modelagem, 10 moedas pra quem fazer COMMENTs nas tabelas, mais 10 moedas pra quem colocar comentários (sempre comentários próprios, de qualidade, não comentar “Esta tabela se chama X”) E mais 10 moedas para quem não criar as constraints com nomes gerados Automaticamente pelo Oracle, SYS_xxxx.

Entrega: A entrega deverá ser feita formalmente para o e-mail bootcamp@rauldba.com.br constando no assunto: Entrega tarefa 02. Compõem a entrega, um relatório sobre o que foi feito, prints de tela ou qualquer evidência que ache interessante colocar

Se houver dúvidas: Aqui na empresa como em qualquer outra você poderá trocar idéias com os colegas de trabalho, com os seus coordenadores. Portanto qualquer dúvida poderá ser tirada trocando idéias com os colegas no grupo do Telegram do qual todos já fazem parte,  e por e-mail (bootcamp@rauldba.com.br).

Lembrando que o contato via Telegram pode ser feito com os colegas a qualquer momento e com resposta mais rápidas que por e-mail.

Então DBA, boa sorte! Bom trabalho e nos vemos no grupo do Telegram.

Atenciosamente,

Chiappa e Raul
Coordenadores da equipe DBA

Pontuações na entrega

Nome Data entregaMoedinhasObservações
Bruno
Cledison19/09 – 20:20150Excelente entrega, muito bem feita.
Uso de compress, particionamento entre outros.
Daniella100Entrega com boa velocidade, buscando crescer no aprendizado.
David
Elder21/09 – 00:24140Boa entrega, comentários bem feitos a cerca da tarefa, criação de índices, comentários entre outros.
Gislaine
Johnathan110Boa entrega, boa criação de constraints.
Luis18/09 – 22:22150Excelente entrega, rápida, bem feita. Utilizando recursos como redaction, particionamento, entre outros.
Natália
Rafael
Sérgio

Gabarito da tarefa 02

Baixe o arquivo do modelo lógico do que criamos para facilitar o entendimento

Modelo criado no SQL Data Modeler