terça-feira, 3 de dezembro de 2019

Constraint no Banco de Dados





Vamos falar sobre algumas propriedades dos bancos de dados no que tange a sua confiabilidade.
As dados contidos nos banco de dados devem seguir algumas regras para que eles tenham alguma utilidade para um sistema. Todo os SGBDs ( Sistema de Gerenciamento de Banco de Dados) possuem uma série de restrições para evitar que os dados fiquem “bagunçados” nas tabelas, vou mostrá-los abaixo:

  • Primary key 
  • Foreing key
  • Unique
  • Check 
  • Valor default
  • Not null


Primary key


 A Primary key ( chave primária) garante que nas nossas tabalas não tenham números sequenciais duplicados, pode-se inserir manualmente, nesse caso é preciso se atentar a pegar o último e acrescentar mais 1 ou deixar o banco gerenciar. A chave primária deve ser um atributo único na tabela, e não é recomendado usar números externos, isto é que não sejam controlados pela instituição, por exemplo um sistema de universidade utilizar o CPF ao invés da matrícula, caso haja mudança na composição do CPF, implicaria em mudar todas as chaves do sistema ocasionando problemas de integridade e fora o trabalho que teria para fazer esse procedimento.


Foreing key


A Foreing key ( chave estrangeira) é utilizado para fazer o relacionamento entre tabelas, com isso o próprio SGBD cria os índices que serão suportados na consulta dos registros agilizando o processo de busca além de  mantém a integridade dos dados evitando que hajam linhas órfãs nas tabelas, no artigo que falarei sobre os comandos SQL estarei mostrando como juntar várias tabelas.


Unique


A unique é um tipo de restrição para evitar duplicidade na tabela, pode-se agrupar os campos para manter uma única referência. Por exemplo: 
Nesse sistema de universidade, podemos ter um unique de matrícula + nome do aluno, caso seja inserido um registro que contenha uma informação já existente no banco ocasionaria erro evitando assim linhas repetidas dentro da tabela.

Check


A restrição check, pode-se dizer que muitas vezes precisamos colocar numa coluna somente valores definidos. Por exemplo, tem-se a coluna gênero de uma tabela de cadastro de usuário e precisamos limitar que sejam inseridos somente F ou M, nesse caso ao criar essa coluna teria que usas regras.


Valor default


A restrição valor default, é utilizada quando queremos ao inserir um valor específico quando não for definido um valor para a coluna, há várias situações em que pode ser adequada a sua utilização, por exemplo um campo data de inclusão que utiliza a data do dia para cada linha incluída, em uma tabela de logs esse tipo de informação é bastante relevante.


Not Null


A restrição Not null, é utilizada quando não queremos que na coluna tenha valores NULL,  nesse caso ao criar uma coluna, em geral ela permite a marcação NULL, se numa operação de insert eu colocar essa marcação o valor acaba sendo inserido. Colocando Not Null ao fazer a mesma operação é exibida mensagem de erro impedindo que a inclusão de Null.

Como vimos para manter a integridade do banco é necessário que sigamos algumas regras com isso vamos evitar problemas futuros, principalmente quando o banco contiver mais dados.

domingo, 1 de dezembro de 2019

Como Ajustar o Horário de Verão no Java




Como este ano não estamos tendo horário de verão, poderemos ter algum problema em nossas aplicações java com relação ao horário.

A JVM possui uma funcionalidade chamada Daylight Saving Time ou DST que consiste em um gerenciamento do horário de verão interno, em muitos países existe o procedimento de alteração do horário. Como neste ano de 2019 não tivemos o adiantamento dos relógios, podemos encontrar algum problema com horário em nossas aplicações caso utilizemos alguma classe de Date/Time da API do Java.

A Oracle disponibilizou uma ferramenta que possamos atualizar as definições do timezone da JVM do Java. Através deste link link: https://www.oracle.com/technetwork/java/javase/downloads/tzupdater-download-513681.html, iremos fazer o download da ferramenta, figura 1.

Figura 1 - Site da Oracle com a ferramenta.



Também precisaremos baixar uma base de dados com as devidas atualizações, nesse caso basta acessar esse site: https://www.iana.org/time-zones e escolhemos  o seguinte arquivo com a descrição Data only Distribuition, figura 2.


Figura 2 - Site com a Base da Dados dos TimeZones.


Após o download dos arquivos, colocá-los em uma pasta qualquer (exemplo c:\temp no Windows) e extrair o arquivo tzupdater.jar, em seguida deveremos abrir um terminal, CMD no Windows e Terminal no Linux e Mac os para podermos executar o programa como administrador da máquina, código 1.

java -jar c:\temp\tzupdater.jar -v -f -l file:c:\temp\tzdata2019c.tar.gz

Código 1 - código no a ser executado.







domingo, 6 de outubro de 2019

Falando Sobre Banco de Dados





Hoje em dia qualquer aplicação comercial necessita que seus dados sejam persistidos de alguma forma, pode ser em arquivo texto, Json, banco relacional (SQL) ou banco não relacional (NOSQL).

Nessa série de artigos estaremos falando sobre banco de dados relacionais como eles funcionam e como são estruturados. 


Os bancos de dados relacionais surgiram a muito tempo, em meados dos anos 70 e ainda continuam sendo a opção mais popular na grande maioria das aplicações comerciais. Existem muitos bancos no mercado são esses: SQL Server, Oracle, DB2, MySQL, etc. Falaremos especificamente sobre o SQL Server que é um banco bastante utilizado no mercado.

A linguagem utilizada para manipulação dos dados armazenados chama-se SQL (Structured Query Language), essa linguagem usa princípios de Álgebra Relacional e pode ser usada em qualquer banco de dados relacionais, pois eles seguem o padrão ANSI, salvo que existem variações entre os bancos (Dialetos), podemos citar por exemplo: Transact-SQL (SQL Server) ou PL/SQL (Oracle).


Nesse caso conhecendo a estrutura da linguagem SQL, pode-se trabalhar com qualquer banco.

Por exemplo.:

SELECT column1, column2, ...
FROM table_name

Quando utilizamos a estrutura acima, o que queremos é listar os registros de uma tabela, nesse caso colocamos todas as colunas que precisam ser visualizadas. Serão listados todas as linhas da tabela, porém pode-se limitar colocando um filtro clausula Where.

Por exemplo.:

SELECT column1, column2, ...
FROM table_name
WHERE condition


Com isso limitamos a quantidade de informações exibidas no resultado, pois definimos uma condição, ela deve ser um filtro utilizando algum operador como por exemplo: = (igual) > (maior) < (menor) >= (maior igual) <= (menor igual) , e os operadora lógicos como: AND ou OR.

No SELECT, podemos melhorar a estrutura da query para poder focar mais nos resultados que queremos buscar na consulta. Nesse caso podemos utilizar outros comandos para buscar algum registro de outras tabelas, ordenar a listagem dos registros, agrupar os registros.

Os Banco de Dados são um recurso poderoso para qualquer aplicação, mas no entanto, muitos projetos não aproveitam todo o potencial que eles tem a oferecer muitas vezes sub-utilizando eles.

Nos próximos artigos, estaremos aprofundando no SELECT para conhecermos como ele funciona e como criar queries mais elaboradas.