Arquivo mensal 21/08/2020

porPaulo Henrique Corrêa Cardoso

Tecnologia e a Pandemia

 

 

Já parou pra pensar o quanto nossas vidas estão mudando neste período de pandemia?

Como todas as grandes crises que ocorreram na história da humanidade, as pessoas foram obrigadas a superar as dificuldades que ocorreram devido aos problemas, fazendo com que evoluíssemos com isso.

Infelizmente o ser humano evolui muito mais rápido em momentos de dificuldade, então com isso temos que olhar o que podemos levar de bom desse momento de dor e dificuldades.

Sei que pra muitas pessoas esse é o pior momento já enfrentado na vida, seja pela perda de um ente querido ou por problemas financeiros.

Com esses problemas estamos sendo obrigados a sair de nossa zona de conforto e nos reinventarmos em diversos setores.

Aos que tinham restaurante, foram obrigados a vender por aplicativos para não fechar as portas.

Aos que tinhas lojas, foram obrigados a vender pela internet.

Aos que trabalhavam em escritórios a implantação do Home Office foi inevitável.

Quem imaginou que conseguiríamos reduzir o transito e a poluição de grandes metrópoles? Ou que teriam mais tempo para convivermos com nossos familiares?

Que resolveríamos a maioria de nossos problemas pelo computador, celular ou tablet?

Diversas das atitudes e formas de nos reinventarmos durante este momento, só esta sendo possíveis pelo avanço tecnológico que tivemos nos últimos anos.

Tenho certeza que a forma de trabalhar e de viver vai ser muito diferente quando isso tudo acabar. Resta saber se estaremos preparados para as mudanças que estão acontecendo.

Uma coisa é certa, a tecnologia vai estar cada vez mais presente em tudo que fazemos e mudando a forma que estamos acostumados a realizar nossas tarefas.

E você… O que espera da tecnologia para os próximos anos ?

 

Até a próxima!!!

 

porPaulo Henrique Corrêa Cardoso

Modelo Entidade Relacionamento-SQL

Fala pessoal…

Hoje vamos dar continuidade em nossa trilha do SQL, e aprender uma parte conceitual muito importante para aperfeiçoarmos nossa logica na hora de estruturar um banco de dados e ate mesmo um sistema.

Esta etapa é muito importante para testarmos nossa ideia de criação de um banco de dados, suas tabelas, colunas e relacionamentos.

Hoje vamos falar sobre o Modelo Entidade Relacionamento e sobre o Diagrama Entidade Relacionamento ou simplesmente MER e DER.

MER

O Modelo Entidade Relacionamento é uma forma lógica de pensarmos na estrutura de um banco de dados e assim definir suas Entidades(tabelas), Relacionamentos (chaves) e Atributos(campos).

Como é uma parte bem conceitual, a ideia do MER é pensarmos em nosso sistema de forma estruturada. Por exemplo, vamos imaginar que estamos montando um banco de dados de uma loja de de departamento que quer vender via e-commerce .

Entidades

Então começamos a pensar nas nossas entidades principais que não dependem de outras entidades para existir, vamos definir algumas:

  • Fornecedor
  • Produto
  • Cliente
  • Departamento

Essas entidades são conhecidas como Entidades Fortes. Elas podem existir por si só e não dependem de outras para definir sua importância.

Em seguida vamos pensar em algumas entidades que necessitam das anteriores para existir, como por exemplo:

  • Usuário
  • Pedido de Venda
  • Pedido de Compra
  • Categoria

Essas entidades são conhecidas como Entidades Fracas, pois dependem de outras entidades para existir.

Também temos algumas entidades que existem para realizar a interligação entre as entidades. Elas são chamadas de Entidades Associativas, veja:

  • Usuário do Cliente
  • Itens do Pedido de Venda
  • Itens do Pedido de Compra
  • Produtos do Fornecedor
  • Produtos da Categoria
  • Categorias do Departamento

A ideia dessas entidades é que elas não possuem uma chave primaria própria mas sim a junção de outras chaves primarias para criar seus registos únicos, como por exemplo:

Itens do Pedido de Venda -> Código do Pedido + Código do Produto .

Relacionamentos

Agora que definimos as entidades, é necessário definirmos os relacionamentos entre elas, para isso temos três formas de relacionamentos.

  • Relacionamento 1 para 1 – No relacionamento 1:1, definimos que sempre sera um registro de uma entidade vai se relacionar com apenas um registro de outra entidade. Por exemplo, um cliente pode ter apenas um usuário cadastrado para acessar o sistema.
  • Relacionamento 1 para muitos – No relacionamento 1:n, definimos que um registro de uma entidade poderá ter vários registros de outra entidade. Por exemplo, um cliente pode ter vários pedidos de venda, porem um pedido de venda não pode pertencer a vários cliente.
  • Relacionamento muitos para muitos – No relacionamento n:n, definimos ambas entidades podem ter mais de um relacionamento entre elas. Por exemplo, um pedido de venda pode ter vários produtos e um produto pode pertencer a vários pedidos de vendas.

Atributos

Agora vamos entender os atributos.

Os atributos são as características e informações que cada entidade possui. Eles podem ser de alguns tipos diferente:

  • Atributos Nominativos – são aqueles que identificam um objeto da classe, como por exemplo o CPF de um cliente, o nome do cliente, ou até mesmo o código do cliente dentro do sistema.
  • Atributos Descritivos – são aqueles que descrevem alguma informação do objeto, como por exemplo, data de nascimento do cliente, o nome do cliente também pode ser um atributo descritivo, endereço, etc…
  • Atributos Referenciais – são atributos que realizam a ligação entre entidades, como por exemplo o código do cliente dentro do pedido de venda, o código do produto dentro do pedido de venda, o código da categoria dentro do produto, etc…

Além dessa divisões também podemos classificar os atributos como simples ou compostos.

Os atributos simples são aqueles que uma única informação os define, como por exemplo a data de nascimento do cliente, ou a descrição do produto.

Já os atributos compostos são aqueles que necessitam de mais de um atributo para possuírem a informação completa, como por exemplo o endereço, que necessita do atributo logradouro + complemento + bairro + cidade + estado + CEP.

Agora que entendemos o Modelo Entidade Relacionamento, podemos ver que é muito difícil desenhar todo um banco de dados somente com o MER, e por isso temos o DER que é o Diagrama Entidade Relacionamento.

DER

O Diagrama Entidade Relacionamento é a forma gráfica de representar o MER, ele se baseia em uma representação por diagramas, onde possui um nível de abstração muito maior que o MER.

Temos algumas formas de criar o nosso DER. Dois modelos muito conhecidos são:

Notação Peter Chen

Peter Chen é um cientista da computação nascido em Taiwan e Professor de ciência da computação na Louisiana State University, conhecido como criador do modelo entidade relacionamento.[1]

Consiste em uma notação que utiliza entidades (retângulos), relacionamentos (losangos), atributos (elipses) e linhas de conexão (linhas) que indicam a cardinalidade de uma entidade em um relacionamento.

A mesma é representada como o exemplo abaixo:

Notação James Martin

James Martin foi um britânico consultor e autor sobre Tecnologia da Informação, conhecido por seu trabalho em engenharia de tecnologia da informação.

Sua notação consiste na utilização de entidades (caixas), com seus atributos representados diretamente dentro da Entidade, e os relacionamentos são feitos através de linhas que representam a cardinalidade.

Esta notação exibe as informações de uma forma mais enxuta e fácil de visualizar.

Vamos montar nosso exemplo utilizado o DER do do próprio Microsoft SQL Server.

É isso pessoal, espero que ajude muito quando precisarem a estruturar um novo banco de dados.

Até a próxima!!!

porPaulo Henrique Corrêa Cardoso

Consultas SQL – Vamos aprender!!!

Fala pessoal, tudo bem ?

Dando continuidade nos nossos artigos referente ao conhecimento do SQL, vamos ver hoje um pouco de uma parte da linguagem SQL chamada de DQL (Data Query Language ou Linguagem de Consulta de Dados).

Essa parte da linguagem trata especificamente de comandos utilizados para realizar consultas no banco de dados.

Estrutura Básica.

A estrutura básica deste comando é a seguinte:

SELECT [campo1],[campo2],[campo3] FROM [Tabela] WHERE [condicao1] = [valorCondicao]

Olhando bem essa estrutura, vemos que a mesma é composta pela clausula SELECT, que é utilizada para definirmos os campos que queremos retornar em nossa consulta ao lado, lembrando que caso necessitemos trazer todos os campos, podemos utilizar o operador coringa *, porém o mesmos deve ser utilizado com cautela, pois em uma consulta com muitos registros e colunas, pode acabar gerando lentidões desnecessárias.

Na sequência utilizamos a clausula FROM, que definirá a tabela que gostaríamos de buscar os registros.

Depois temos a clausula opcional (mas que podemos quase sempre considerar indispensável), WHERE, a mesma é utilizada para definir os parâmetros de busca de nossa consulta.

Temos mais algumas clausulas que podemos utilizar e veremos mais a frente.

Agora veja um exemplo da utilização deste estrutura.

SELECT IdProduto, DescProduto, Preco 
FROM Produto 
WHERE IdProduto = 1

Neste exemplo, buscamos 3 colunas da nossa tabela Produto onde o IdProduto = 1

Na clausula WHERE temos alguns operadores lógicos e relacionais que podemos utilizar:

Operadores SQL
Operador Descrição Exemplo
= Igual IdProduto = 1
<> ou != Diferente IdProduto <> 1
> Maior que Preco > 1000
>= Maior ou igual que Preco >= 1000
< Menor que Preco < 1000
<= Menor ou igual que Preco <= 1000
IN Está contido IdProduto IN (1,2,3)
NOT IN Não está contido IdProduto NOT IN (2,3)
BETWEEN Intervalo entre IdProduto BETWEEN 1 AND 2
LIKE Parte do registro DescProduto LIKE ‘TV%’
AND Ambas condições verdareiras IdProduto BETWEEN 1 AND 2 AND Preco > 1000
OR Uma condição verdadeira IdProduto BETWEEN 1 AND 2 OR Preco > 1000

Agrupando registros e suas funções.

Também temos alguma funções de agregação que podemos utilizar. Estas função dependem da utilização da clausula GROUP BY que deve ser utilizada após a clausula WHERE.

MAX

Função responsável por retornar o maior valor dentro da busca e do agrupamento solicitado na consulta.

SELECT MAX(Preco) MaiorPreco, IdCategoria
FROM Produto 
WHERE Ativo = 1
GROUP BY IdCategoria

No exemplo acima estamos buscando o maior preço de produto, agrupado pela categoria.

Veja que definimos a clausula GROUP BY com o campo IdCategoria.


MIN

Função responsável por retornar o menor valor dentro da busca e do agrupamento solicitado na consulta.

SELECT MIN(Preco) MenorPreco, IdCategoria
FROM Produto 
WHERE Ativo = 1
GROUP BY IdCategoria

No exemplo acima estamos buscando o menor preço de produto, agrupado pela categoria.


AVG

Função responsável por retornar a média de um valor dentro da busca e do agrupamento solicitado na consulta.

SELECT AVG(Preco) MenorPreco, IdCategoria
FROM Produto 
WHERE Ativo = 1
GROUP BY IdCategoria

No exemplo acima estamos buscando a média do preço de produto, agrupado pela categoria.


SUM

Função responsável por somar valores dentro da busca e do agrupamento solicitado na consulta.

SELECT SUM(Preco) SomaPreco, IdCategoria
FROM Produto 
WHERE Ativo = 1
GROUP BY IdCategoria

No exemplo acima estamos buscando a soma do preço dos produtos, agrupado pela categoria.


COUNT

Função responsável por contar as linhas dentro da consulta.

Esta função possui a seguinte estrutura:
COUNT ( { [ [ ALL | DISTINCT ] coluna1 ] | * } )

Desta forma conseguimos contar uma determinada coluna, e os valores nulos serão desconsiderados na contagem, ou podemos contar uma coluna utilizando a clausula DISTINCT e retornar somente a quantidade de valores diferentes ou então contar todas as linhas da consulta utilizando o operador *.

Veja os exemplos.

SELECT IdCategoria, COUNT(IdCategoria)QtdCateg 
FROM Produto 
WHERE Ativo = 1
GROUP BY IdCategoria


SELECT IdCategoria, COUNT(DISTINCT IdCategoria)QtdCateg 
FROM Produto 
WHERE Ativo = 1
GROUP BY IdCategoria

SELECT  COUNT(*)QtdProdutos 
FROM Produto 
WHERE Ativo = 1

No primeiro exemplo, utilizamos o COUNT com o campo e também utilizamos o GROUP BY para retornar a quantidade de itens dentro de uma categoria.

No segundo exemplo fizemos o mesmo SELECT, porem utilizando o DISTINCT dentro do COUNT, veja que ele trouxe tudo com o valor 1 pois desconsiderou as duplicidades no campo informado. Imagine que neste exemplo você pode desconsiderar, produtos cadastrado com o mesmo código de barras ou desconsiderar qualquer tipo de duplicidade.

No terceiro exemplo contamos todas as linhas da tabela Produto.

Agora que já aprendemos a usar as funções de agregação vamos aprender a filtrar nossa consulta a partir da agregação realiza.

Para isso vamos utilizas a clausula HAVING. Esta clausula tem a mesma função do WHERE, porém ela é especifica para as funções de agregação, isso é necessário porque a clausula WHERE não comporta esse tipo de função.

Vamos aos exemplos.

SELECT SUM(Preco) SomaPreco, IdCategoria
FROM Produto 
WHERE Ativo = 1
GROUP BY IdCategoria
HAVING SUM(Preco) > 1000


SELECT SUM(Preco) SomaPreco, IdCategoria
WHERE Ativo = 1
GROUP BY IdCategoria
HAVING SUM(Preco) < 1000

Nestes exemplos utilizamos a clausula HAVING para filtrar a soma de preço das categorias.

No primeiro caso, buscamos as categorias que possuem a soma do preço maior que 1000.

No segundo caso, buscamos as categorias que possuem a soma do preço menor que 1000.

Ordenando registro.

Por último em nossa apresentação da parte básica do DQL, temos a clausula ORDER BY que é responsável pela ordenação dos registros.

Esta clausula deve ser utilizada ao final da consulta e deve seguir a estrutura abaixo.

ORDER BY [coluna1][ASC|DESC], [coluna2][ASC|DESC]

Neste caso, ASC ou DESC são utilizados para definirmos se a ordenação da coluna será crescente ou decrescente, lembrando que não é necessário utilizar o ASC, pois o mesmo é o default para a ordenação.

Vamos ao exemplo.

SELECT IdProduto, DescProduto, Preco 
FROM Produto 
WHERE Ativo = 1
ORDER BY Preco DESC, DescProduto


SELECT IdProduto, DescProduto, Preco 
FROM Produto 
WHERE Ativo = 1
ORDER BY Preco

No primeiro exemplo definimos que o resultado venha ordenado de forma decrescente pelo preço, e caso tenha produtos com preços iguais os mesmo sejam ordenados de forma crescente pela descrição.

No segundo exemplo o resultado foi ordenado de forma crescente pelo preço.

Bom pessoal, está é a parte básica da estrutura do SELECT e da parte da DQL da Linguagem SQL.

No próximo artigo vamos avançar um pouco mais.

Espero que ajude muito a todos.

Até a próxima!!!

porPaulo Henrique Corrêa Cardoso

Machine Learning & Inteligencia Artificial

Com certeza você se lembra de alguns filmes icônicos, como a franquia de Exterminador do Futuro, A.I. – Inteligencia Artificial e Eu Robô. Esses filmes vislumbravam alguns conceitos que temos escutado muito ultimamente que são o Machine Learning e a Inteligencia Artificial.

Bom, hoje vemos que isso não é apenas ficção cientifica e já estamos vivendo uma parte destes conceitos em ferramentas de trabalho e até mesmos em nossos aparelhos de celulares com interfaces inteligentes como a Amazon Alexa, o Apple Siri e o Google Assistente.

Mas você sabe realmente o que são esses conceitos?

Machine Learning.

Machine Learning, é em sua tradução literal “Aprendizagem de Máquina”, então é qualquer ação que uma uma máquina consiga aprender a executar, através de sua programação básica. Esse conceito, por muitas vezes acaba sendo diretamente associado a inteligencia artificial, mas temos uma diferença ente eles.

A ideia base de Machine Learning é que um sistema computacional consiga mudar suas operações, levando em conta dados obtidos em outras execuções.

Um exemplo disso, são as informações das assistentes virtuais das empresas como Amazon, Apple e Google, que com base nas informações dos usuários, consegue sugerir produtos, executar tarefas e gravar informações pessoais.

Carros autônomos, tem sido criados por empresas como Google e Tesla e ambas utilizam o conceito de Machine Learning para a aprendizagem destas tarefas.

Outro exemplo interessante, são os sistemas de tradução simultâneas e de pesquisa , que conseguem levar em conta, gírias e jargões regionais para realizar suas ações.

Tudo isso é possível graças ao conceito de Machine Learning.

Inteligencia Artificial.

A ideia de inteligencia artificial é a de imitação da inteligencia humana, onde uma de suas capacidades é a aprendizagem, que seria então o Machine Learning, porém esse é apenas um de seus recursos.

A inteligencia artificial tem como objetivo a simulação da inteligência humana, assim como o raciocínio e o poder de decisão.

Mas acredito que ainda que a ciência consiga atingir os objetivos da inteligência artificial, teremos algumas características da inteligência humana que serão muito difícil de ser reproduzidas, como por exemplo os sentimentos, emoções e empatia.

Os benefícios da inteligência computacional.

Ambas as tecnologias, nos ajudarão em diversas tarefas, e já começamos as ver seus benefícios.

Ações e funções complexas poderão ser resolvidas de forma mais ágeis, e criaram novas oportunidades.

Porém nesse futuro não tão distante, fica cada vez mais óbvio que as pessoas precisaram conhecer sobre tecnologia para exercer suas atividades.

Com esse pensamento, muitas pessoas acreditam que a tecnologia tem substituído e vai substituir muito mais o lugar das pessoas no mercado de trabalho.

Essa é uma perspectiva preocupante, porém abre um novo leque de evolução para os profissionais, onde todos poderão expandir seus conhecimentos e melhorar suas habilidades, sempre adicionando a tecnologia aos estudos.

Temos que levar essa evolução das máquinas como parte da evolução de nossa sociedade, e entender teremos muitos ganhos com isso.

Setores como o de saúde, indústria, ensino, segurança pública, economia e mobilidade urbana mudarão muito nós próximos anos.

Cuidados que precisamos ter.

Uma grande preocupação que precisamos ter é com a privacidade.

Esse ponto não é relativo somente a Inteligência Artificial e a Machine Learning, porém podem ter seu efeitos amplificados com essas tecnologias.

Sabemos que muitas empresas usam essas tecnologias para captar grande quantidade de informações pessoais para melhorar o setor de marketing, porém muitas delas acabam pegando informações de mais, e isso pode acabar incomodando e ferindo nossa privacidade.

Desta forma, temos que tomar muito cuidado com as informações e deixamos disponíveis na internet e em aplicações que utilizamos.

 

Bom com tudo isso, podemos ter certeza que o futuro já chegou, e ainda não tivemos a visita do exterminador do futuro, mas a inteligência artificial já está entre nós.

 

Até a próxima!!!