quarta-feira, 30 de setembro de 2009

PROJETO DE BANCO DE DADOS - APRENDENDO A 4º FORMA NORMAL (4FN)

ALGORITMOS PARA PROJETO DE BANCO DE DADOS RELACIONAL E DEMAIS DEPENDÊNCIAS


Um problema ocorre quando são permitidos valores “null” para atributos que serão usados em junção natural de tabelas, elas simplesmente desaparecerão no resultado da visão.
Sempre que um BD for projetado com ligações de chaves estrangeiras, deve-se tomar cuidado com valores “null”. O que ocasiona perda inesperada de informações em consultas que envolvam junções.
Deve-se considerar também a possibilidade de usar “null” em atributos que são usados em funções pré-definidas como: soma e média.

A Quarta Forma Normal é definida pelo conceito de dependência multivalorada. As dependência multivaloradas (DMV) são conseqüências da primeira forma normal (atomicidade).

A seguinte tabela não está na 4 forma normal. Nela temos alguns empregados que participam de alguns projetos e possuem dependentes em cada projeto. A chave é definida por todas as colunas.

EMP
ENOME
PNOME
DNOME
Smith
X
John
Smith
Y
Anna
Smith
X
Anna
Smith
Y
John
Brown
W
Jim
Brown
X
Jim
Brown
Y
Jim
Brown
Z
Jim
Brown
W
Joan
Brown
X
Joan
Brown
Y
Joan
Brown
Z
Joan
Brown
W
Bob
Brown
X
Bob
Brown
Y
Bob
Brown
Z
Bob

Há 16 tuplas na tabela acima. Consideremos que Brown comece a trabalhar em um novo projeto (P) deveriamos incluir três tuplas!!! Uma para cada dependente. Se esquecremos de incluir alguma, violaríamos a DMV e o projeto ficaria inconsistente.

Agora raciocinem comigo.
Se os dependentes estão para os empregados, e os projetos também estão para os empregados. Logo poderíamos quebrar esta tabela em duas!



EMP_Projetos
ENOME
PNOME
Smith
X
Smith
Y
Brown
W
Brown
X
Brown
Y
Brown
Z

EMP_ Dependentes
ENOME
DNOME
Smith
Anna
Smith
John
Brown
Jim
Brown
Joan
Brown
Bob

Vejam bem, na primeira relação eram 16 linhas na tabela! Agora com a 4FN são apenas 11. Obtivemos um ganho aí.

Agora de volta a questão...
E se Brown participasse de um novo projeto, o projeto P?
Agora que a tabela está normalizada basta acrescentarmos uma tupla na tabela EMP_Projetos e voilá! Não precisamos nos preocupar com os dependentes que já estão cadastrados ;)

Por enquanto fico por aqui! O capítulo em questão do Navathe ainda aborda sobre algoritmos de preservação de dependência de uma decomposição e propriedades de junção sem perda. Fala também da 5FN (dependências de Junção) além de dependências de inclusão, dependências template e forma normal domínio-chave.
Todas estas, para mestres em BD explicarem =]

segunda-feira, 28 de setembro de 2009

TIPOS NUMÉRICOS COM PONTOS FLUTUANTES

O tipo de dado é uma das coisas que devem ser definidas na hora de projetar um Banco de Dados. No MySQL, os tipos de dados que temos para representar os números são:

binary, bit, decimal, double, float, int, mediumint, real e smallint.

Esta dica é bem rápida. Quando se declara um tipo de campo como numérico, em alguns casos temos a opção de definir dois algarismos. Geralmente isso acontece nos seguintes tipos:

Float, double e decimal.

Nestes casos, o algarismo mais a esquerda deve ser declarado como sendo maior ou igual ao da direita (depois do ponto).
Logo não se pode declarar:

CREATE TABLE teste (Preço DECIMAL (2,5));

Outra coisa que deve-se estar atento é que, o número da direita representa o número de algarismos de precisão decimal, que o campo conterá. A seguir apresento mais uma definição:

CREATE TABLE teste (Preço FLOAT (5,5));

Na linha acima eu estou declarando valores para meu campo, numa faixa de -0,99999 até 0,99999.
O que se conclui é que a precisão (número após a vírgula) deve estar reservada e levada em consideração quando se declarar o número da esquerda. Se não entendeu aqui vai outro exemplo:

CREATE TABLE teste (Preço DOUBLE (7, 5));

O que disse na linha de cima foi:
Crie uma tabela com o nome teste, onde ela apresenta o campo preço como tendo o tipo “double”, em que nela poderá ser declarada 7 algarismos como valor, sendo cinco deles reservado para números decimais.
Concluindo, se eu quero que meu campo armazena uma faixa de valores de -999,99 até 999,99
Eu declaro 5 algarismos, reservando dois para números fracionários. O exemplo fica assim:

CREATE TABLE teste (Preço DECIMAL (5,2));

Espero que tenham gostado.

sexta-feira, 25 de setembro de 2009

Compilando no Braço

Você já parou para pensar em quantas linguagens de programação são interpretadas? Senão pense rápido.
Para fazer esta dica de Lord ou código fonte (como queiram chamar) você precisa de um JDK ou SDK instalado. (tem diferença de um pro outro, pesquisa no google que acha)
O JDK inclui tudo o que você precisa para começar a rodar seus códigos java. (a diferença de JDK pra JRE e JVM você também acha no google)
Você sabia que o Java 1.5 foi chamado de Tiger?
Uma vez um professor meu de Estrutura de Dados disse que programador bom tem que aprender a criar código em bloco de notas, e programadores antigos também gostam disso. Daí eu quis aprender como o java funciona desta maneira. Daí saiu este toque para vocês.


Uma coisa que você leva pro resto da vida, é que o Java trabalha com Class-path. Este é um caminho que o Java faz toda a vez que você pede um recurso, ou seja, importa uma classe, um pacote, foto, qualquer coisa. Muita gente nem sabe o que é. Os que sabem não tem noção que existem dois classpath. Um é do Java e outor do seu projeto (se você vai criar um programa profissional pra vender...).
Pra gente compilar no braço temos que criar uma variável de sistema no ambiente do windows que indique o classpath do Java. Bora lá:

Passo 1: Dê um clique com botão direito em cima do ícone meu computador, na área de trabalho, no menu que aparece clique na opção "propriedades".

Passo 2: Após termos clicado na opção "propriedade", a janela propriedades do sistema será mostrada, clique na guia "Avançado".

Passo 3: Após termos clicado na guia "Avançado" a janela propriedades do sistema ficara igual a apresentada a seguir, clique no botão "Variáveis de ambiente...".

Passo 4: Após termos clicado no botão "Variáveis de ambiente..." da janela propriedades do sistema a janela variáveis de ambiente, será mostrada. Nesta tela temos dois lugares para configurar as variáveis de ambiente, podemos ainda editar ou excluir uma variável de sistema já existente. Clique no botão superior "Nova...", para configurarmos as variáveis de ambiente para o usuário corrente, ou seja, o usuário que está logado no momento.

Observação: Neste tutorial iremos configurar as variáveis de ambiente para o usuário corrente, mas o processo para configura as variáveis do sistema e o mesmo.
Passo 5: Após temos clicado no botão "Nova...", na janela variáveis de ambiente a janela "Editar variável do usuário" será exibida. A partir deste ponto devemos definir as seguintes variáveis de ambiente: JAVA_HOME, CLASSPATH e PATH. As próximas figuras demonstram como configurar as variáveis de ambiente. Após termos digitado os valores conforme as figuras, clique no botão "Ok", repita o processo para as três variáveis de ambiente.

JAVA_HOME: Esta variável de ambiente apontará para o diretório onde o J2SDK foi instalado, no caso "C:\jdk1.5.0". Em um outro artigo iremos nos aprofundar nesta variável, no momento apenas configure igual à figura abaixo...
Se você está gostando e quer continuar lendo este artigo na íntegra, clique aqui.

Obs.: JAVA é compilada e interpretada, por isso pode ser chamada de compilação sim! Peço desculpas e Agradeço meu amigo Manoel pelo toque.
Quando o compilador java é invocado, é criado um arquivo *.class
O compilador transforma o código-fonte em algo um pouco mais difícil de ser lido e entendido. O código que temos no class é chamado de bytecodes, isto é, um código intermediário que somente a máquina virtual Java compreende.
Em seguida os bytecodes são INTERPRETADOS pela JVM e o programa é executado.
Uma curiosidade é que, se qualquer alteração for feita no bytecode, por segurança o Java, inutiliza o arquivo. Ainda que a alteração seja inteligível. Esta como disse acima é uma restrição de segurança dos bytecodes.

sexta-feira, 4 de setembro de 2009

MySQL - Primeiros Passos

Depois de um tempo de folga a Dicas de Lord voltou, desta vez com o basiquinho do MySql.
Não tem nada de cabreiro neste post, só os comandos básicos e algo mais relacionado ao conteúdo tratado na terça pela Profª Isabel.

Lembrando que a proposta do Dicas do Lord se restringe a apenas traduzir o que os professores disseram em aula (ou tentaram dizer), propor novos exercicios, resolver os exercicios propostos pelos mestres, fazendo assim uma abordagem da matéria dentro do que os professores propuseram e nada mais. Qualquer coisa adicional, fica em off.
Etendendo as dicas, você consegue entender um pouco mais o que os mestres disseram e consequentemente, aprender e traduzir em notas de avaliação.
Mãos a massa:

Partindo do principio que o MySql está instalado lindo e maravilhoso, baixe a apostila que criei e aprenda já...

http://www.4shared.com/file/130132824/50ac256d/MySQL_-_Primeiros_Passos.html