Uma introdução ao mundo de armazenamento de dados.
Introdução,
modelos de dados agregados,
Características,
modelo relacional MER
Criação de tabelas, escrevendo dados.
Linguagem de consulta estruturada,
operadores, lógicos, operadores relacionais
Aplicações em sistemas Cloud.
Atividades Práticas supervisionadas (APS)
Você acaba de ser contrato por uma StartUp de RH, as RHtech, (ex. Vulpi, Gupy, etc...). Você será responsável por toda a Governança de Dados do aplicativo/sistema.
Temos que desenvolver uma app para a StartUp que possa gerar dados e consumir dados que responda as seguintes perguntas:
- Qual departamento tem o maior impacto no faturamento e por quê? Salários altos? Horas Extras? etc…
- O colaborador merece um aumento? Qual o valor adequado do aumento? Como avaliar o desempenho (meritocracia, feedback interno/externo)? Salários e/ou títulos praticados no mercado importam?
História
File management System
Sistemas transacionais - Bancos de Dados
SGBDs sistemas gerenciadores de baco de dados
SQL (Oracle*)
Dados Informacionais
DW - Data Warehouse (Data Marts)
BI Businesses Intelligence
Data mining
Contexto
Os 4 conceitos elementares sobre dados na tecnologia de informação:
Como isso é processado, armazenado e retroalimentado?
Status Quo
data-centric
Big Data - Cloud - Real Time
Data Lake
Data Lake House
Data Mash
Data Science
Tomada de decisão baseada em dados
IA
# 1 - Introdução
Se estão 12 Graus Celsius, 85 km / hora e estamos em Novembro, é provável que chova!
# 1 - Introdução
# 1 - Introdução
Liste os possíveis dados, quais informações podem ser adquiridas com esta lista de dados e quais são os conhecimentos que se podem obter com essas informações. Se possível apresente algumas ações de sabedoria que pode ser tomadas.
# 1 - Introdução
APS01 - Liste os dados, informações e os conhecimentos que envolvem a StartUp.
# 1 - Modelos de Dados Agregados
Segundo Edgar F. Codd, o principal expositor do modelo de dados relacional. Ele diz que um dos recursos poderosos do modelo relacional é a capacidade de permitir a manipulação de relações orientadas a conjuntos. Esta característica possibilitou o desenvolvimento de poderosas linguagens não procedurais com base na teoria dos conjuntos. O resultado é, tabelas são tratadas como relações e as linhas dessas tabelas são conhecidas como tuplas ou registro
# 1 - Modelos de Dados Agregados
Cardinalidade
Vamos montar uma Modelagem Relacional para representar quais Entidade, atributos e relacionamentos serão necessários para construção do app/sistema.
APS02 - Crie um MER (Modelo Entidade Relacional) para StartUp.
# 1 - Modelos de Dados Agregados
# 2 - Criação de tabelas, escrevendo dados
Um banco de dados é o meio para o armazenamento adequado da informação, usando métodos que satisfaçam os requisitos de segurança e consistência.
Sua principal estrutura para o armazenamento e recuperação, são as tabelas (linhas e colunas) bem como as regras definidas para o modelo relacional (relacionamentos).
# 2 - Criação de tabelas, escrevendo dados
Uma característica fundamental do uso de bancos de dados é que ele permitem a abstração dos dados, ocultando detalhes do
armazenamento de dados, que são desnecessários para a maioria dos usuários. Um modelo de dados (conjunto de
conceitos que podem ser usados para descrever a estrutura de um banco de dados) fornece o significado necessário para permitir essa abstração
# 2 - Criação de tabelas, escrevendo dados
Linguagem de definição de dados
(DDL - Data Definition Language)
# 2 - Criação de tabelas, escrevendo dados
Chave Primaria (PK - Primary Key)
É um identificador único para tabela. Quando uma coluna ou com binações de coluna é instituída como chave primária, nenhum par de linhas da tabela pode conter o mesmo valor naquela coluna ou combinação de colunas.
# 2 - Criação de tabelas, escrevendo dados
Chave estrangeira (FK - Foreign Key)
É determinada por uma coluna ou um conjunto de colunas possuidoras de um conjunto de valores válidos que estão presentes em outra tabela (referência). Pode-se dizer que uma chave estrangeira é uma coluna ou uma combinação de colunas, cujos valores aparecem necessariamente na chave primária de outra tabela. Pode ser vista como sendo o mecanismo de implementação do relacionamento entre tabelas de um banco de dados relacional.
# 2 - Criação de tabelas, escrevendo dados
Chave estrangeira (FK - Foreign Key)
A existência de uma chave estrangeira impõe restrições que devem ser garantidas ao executar diversas operações de alteração do banco de dados.
# 2 - Criação de tabelas, escrevendo dados
Chave alternativa
No momento da escolha de qual coluna deve ser usada, pode-se tomar como critério a escolha da coluna que se deseja usar nas chaves estrangeiras que referenciam a tabela em questão. Essas chaves candidatas podem ser utilizadas como índices secundários, úteis para acelerar operações de busca, embora nem sempre sejam eficazes. Outro aspecto é a possibilidade de haver uma chave estrangeira que esteja referenciando a chave primária da própria tabela. chamdo de autorrelacionamento
# 2 - Criação de tabelas, escrevendo dados
Integridade de entidade
Um atributo, que faz parte de uma chave primária em uma relação, não poderá conter valores nulos.
Outra característica importante da integridade de entidade diz respeito aos dados que são
armazenados, pois os valores contidos nos campos de chave primária devem
ser únicos, não havendo duplicidade de dados.
# 2 - Criação de tabelas, escrevendo dados
Integridade referencial
Trata de uma restrição que fixa que os valores que estão contidos em um campo de chave estrangeira devem, por sua vez, aparecer nos campos de chave primária da tabela referenciada.
Sua principal função é garantir que as referências (ligações) entre as relações, relacionamentos entre tabelas, estejam compatíveis.
# 2 - Criação de tabelas, escrevendo dados
Sistemas Gerenciadores de Banco de Dados (DBMS))
São softwares que controla e manipula todos os acessos ao banco de dados. Alguns benefícios
dos SGDBs são os seguintes:
# 2 - Criação de tabelas, escrevendo dados
Sistemas Gerenciadores de Banco de Dados (DBMS))
E. F. Codd, matemático da IBM em 1970, publicou um artigo intitulado como “Um modelo relacional de dados para grandes bancos de dados compartilhados”, contendo os princípios, ou regras, que definem um sistema de gerenciamento de bancos de dados como sendo um sistema relacional.
# 2 - Criação de tabelas, escrevendo dados
Sistemas Gerenciadores de Banco de Dados (DBMS))
# 2 - Criação de tabelas, escrevendo dados
Sistemas Gerenciadores de Banco de Dados (DBMS))
# 2 - Criação de tabelas, escrevendo dados
Sistemas Gerenciadores de Banco de Dados (DBMS))
# 2 - Criação de tabelas, escrevendo dados
É um processo de modelagem que tem como objetivo evitar falhas no projeto de dados relacionais, como redundância de dados, diferentes assuntos numa mesma tabela, aumentar a integridade de dados e o desempenho do banco de dados.
# 2 - Criação de tabelas, escrevendo dados
Edgar F. Codd, definiu três dessas formas. Cada forma normal representa uma condição mais forte das que a precedem.
Baseado em chaves primárias
# 2 - Criação de tabelas, escrevendo dados
Primeira Forma Normal (1FN) - Atomicidade
Uma tabela está na 1FN, se e somente se, todos os valores das colunas da tabela forem
atômicos
Todos os atributos de uma tabela devem ser atômicos, ou seja, a tabela não deve conter grupos repetidos e nem atributos com mais de um valor. Para aplicar 1FN é preciso:
# 2 - Criação de tabelas, escrevendo dados
Primeira Forma Normal (1FN) - Atomicidade
Exemplo: uma entidade Pessoa pode possuir mais de um Telefone (fixo, móvel, comercial, etc...)
PESSOAS = { ID | NOME | TELEFONES }
PESSOAS = { ID | NOME }
TELEFONES = { PESSOA_ID | TELEFONE }
# 2 - Criação de tabelas, escrevendo dados
Segunda Forma Normal (2FN) - Dependências Funcionais
Uma relação está na 2FN se, e somente se, estiver na 1FN e cada atributo não-chave for dependente da chave primária inteira, isto é, cada atributo não-chave não poderá ser dependente de apenas parte da chave.
Todos os atributos não chaves da tabela devem depender unicamente da chave primária. Para aplicar 1FN é preciso:
# 2 - Criação de tabelas, escrevendo dados
Segunda Forma Normal (2FN) - Dependências Funcionais
Exemplo: uma entidade Alunos pode estar matriculado em mais de um Curso.
ALUNOS_CURSOS = { ID_ALUNO | ID_CURSO | NOTA | DESCRICAO_CURSO }
ALUNOS_CURSOS = { ID_ALUNO | ID_CURSO | NOTA }
CURSOS = { ID_CURSO | DESCRICAO }
# 2 - Criação de tabelas, escrevendo dados
Terceira Forma Normal (3FN) - Dependência Transitiva
Uma relação R está na 3FN se ela estiver na 2FN e cada atributo não-chave de R não possuir dependência transitiva, para cada chave candidata de R. Todos os atributos dessa tabela devem ser independentes uns dos outros, ao mesmo tempo que devem ser dependentes exclusivamente da chave primária da tabela.
Todos os atributos não chaves da tabela devem depender unicamente da chave primária. Para aplicar 1FN é preciso:
# 2 - Criação de tabelas, escrevendo dados
Terceira Forma Normal (3FN) - Dependência Transitiva
Exemplo: um Funcionário pode possuir vários
Benefícios
FUNCIONARIOS = { ID | NOME | BENEFICIOS }
FUNCIONARIOS = { ID | NOME }
BENEFICIOS = { ID, NOME, VALOR }
FUNCIONARIO_BENEFICIO = { ID_FUNCIONARIO | ID_BENEFICIO }
# 2 - Criação de tabelas, escrevendo dados
Vamos montar a estrutura do banco de dados (DDL) para a app/sistema usando como base o MER montado anteriormente.
APS03 - Criar o a banco de dados a partir do MER da StartUp.
# 2 - Criação de tabelas, escrevendo dados
APS03 - Links
# 2 - Criação de tabelas, escrevendo dados
Django é um framework web Python de alto nível que encoraja o desenvolvimento rápido, design limpo e pragmático. Construído por desenvolvedores experientes, ele resolve grande parte do incômodo do desenvolvimento da Web, para que você possa se concentrar em escrever seu aplicativo sem precisar reinventar a roda. É gratuito e de código aberto.
# 2 - Criação de tabelas, escrevendo dados
Arquitetura MVC X MTV
# 2 - Criação de tabelas, escrevendo dados
Arquitetura MVC X MTV
# 2 - Criação de tabelas, escrevendo dados
Arquitetura MVC X MTV
# 2 - Criação de tabelas, escrevendo dados
Django Life Cycle Request/Response
# 2 - Criação de tabelas, escrevendo dados
Vamos criar e configurar uma app Django localmente para que a partir dela possamos construir e implementar nosso modelo de dados.
APS04 - Criar e configurar uma app em Django para StartUp.
# 2 - Criação de tabelas, escrevendo dados
(SQL - Structured Query Language)
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
CREATE TABLE, CREATE INDEX, ALTER TABLE, DROP TABLE, DROP VIEW E DROP INDEX.
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
INSERT, DELETE, UPDATE, SELECT E LOCK.
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
COMMIT, ROLLBACK, GRANT e REVOKE.
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Álgera Relacional
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Cálculo relacional
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
A álgebra relacional frequentemente é considerada como uma parte do modelo relacional de dados e suas operações podem ser divididas em dois grupos.
UNIÃO (UNION), INTERSEÇÃO (INTERSECTION), DIFERENÇA DE CONJUNTO (SET DIFFERENCE) e PRODUTO CARTESIANO (CROSS PRODUCT).
SELEÇÃO (SELECT), PROJEÇÃO (PROJECT) e JUNÇÃO (JOIN)
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Operações Relacionais Unárias - Seleção (Query)
SELECT * FROM <table> WHERE <condicion>
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Operações de Conjunto (Joins)
SELECT * FROM <table> JOIN <table> ON <combination> WHERE <condicion>
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Operações de Conjunto (Joins)
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Operações de Conjunto (Joins)
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Operações de Conjunto (Joins)
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Operações de Conjunto (Joins)
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Operadores Agregados
COUNT([DISTINCT]): O número de valores (únicos) da coluna A.
SUM([DISTINCT]): A soma de todos os valores (únicos) da coluna A.
AVG([DISTINCT]): A média de todos os valores (únicos) da coluna A.
MAX(): O valor máximo da coluna A.
MIN(): O valor mínimo da coluna A.
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Operadores Agregados
GROUP BY
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Vamos consultar os dados que a app irá cadastrar. Para isso precisamos trazer a modelagem de dados para app.
APS05 - Consultar dados gerados pela app em Django para StartUp.
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
CRUD é o acrônimo para
É uma sequência de funções de um sistema que trabalha com banco de dados transacionais.
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
O acrônimo é usado para referir-se a essas quatro propriedades das transações em banco de dados, para manter os dados consistentes mediante acesso concorrente e falhas de sistema:
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Atomicidade
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Consistência
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Isolamento
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais
Durabilidade
# 3 - Linguagem de consulta estruturada, operadores, lógicos, operadores relacionais