quarta-feira, 27 de janeiro de 2010

Relacionamentos no MySQL

Sofri mais consegui!!! sempre brinquei com a linguagem DDL no banco MySQL, mas só de forma simples, criando e dropando tabelas que não possuíam dependências, nunca tive problemas com isso! Só que resolvi complicar um pouco mais meus “exercícios” e resolvi criar um banco maior com varias tabelas e seus relacionamentos, e mi deparei com um erro que mi tirou algumas horas de sossego, não conseguia criar o relacionamento , vou expor minha situação:
Eu teria três tabelas no banco uma de funcionários onde teriam que conter os dados do funcionário , nome, endereço, telefone e a primary key matricula_funcionario, teria outra tabela departamento que continha nome_departamento,numero_departamento, cod_departamento como PK, a terceira tabela seria o cargo no qual teria o nome_cargo, numero_cargo e cod_cargo, para relacionar essas três tabelas eu iria criar a tabela alocação onde iria colocar as pk das tres tabelas dentro dela como FK e teria uma PK cod_alocaçao.
Tentei criar esse relacionamento na munheca, não deu certo, tentei utilizar o MySQL
administrator não deu certo, tentei o workbench para criar o modelo de dados fazê-lo criar um script para criação das tabelas o mesmo também deu erro.
O erro gerado em todas essas situações era o error 150(#1005), bati cabeça e pesquisando na internet em muitos tópicos e posts consegui descobrir o porquê do erro, vamos a solução

Os dois campos devem ser idênticos em seus tipos. Ou seja (aqui estava meu erro) até mesmo se ele é unsigned deve ser igual. As outras condições são:
• Ambas as tabelas do tipo InnoDB;
• Na tabela que faz a referência, deve haver um índice que corresponde a chave estrangeira;
• Na tabela referenciada, deve haver um índice que corresponde a chave primária;
• Não são suportados para este tipo de relacionamento, campos text e blob;
• Os campos devem ter o mesmo tipo (em todas as características);

bom espero que esse post possa ajudar alguém com o mesmo tipo de problema que eu passei!

quarta-feira, 13 de janeiro de 2010

SCJP - 5 Cap- 1

Bem hoje terminei de ler o 1º capitulo do livro Certificação Sun para Programador Java 5 e  vou passar um pouco do que achei interessante e importante nesse capitulo.
Na verdade o primeiro capitulo  faz mais uma revisão sobre conceitos  como herança,interfaces, modificadores de acesso, palavras chaves, regras de nomeação etc. colocarei os pontos que acho principais e que deve-se ter sempre fresco na cabeça.

Identificadores legais – os identificadores devem SEMPRE começar por uma letra, caractere de conexão como o (_) underscore ou com um $ (cifrão), não podem NUNCA começar com números.

Convenções de código Java da Sun- apesar se não ser exigido no exame um programador deve tê-la  enraizada na cabeça já.

 Classes e  interfaces começam sempre com letras maiúsculas e as demais minúsculas se varias palavras forem escritas juntas deve-se usar a regra camelCase.
ex- HistoricoDados.
 Para classes o nome deve ser substantivo e para interfaces adjetivo.
 
Métodos a primeira letra deve ser minúscula e depois usa-se a regra camelCase e devem ser descritas com pares e verbo-substantivo.

Variáveis como nos métodos usam regras camelCase com a primeira letra minúscula, deve-se usar nomes curtos e significativos.
Regras de nomeação de propriedades javaBean
Se a propriedade não for booleana o prefixo do método getter deve ser get, do setter set e se for booleana deve ser is.
Ex: setNome(), getNome() , isNome()
Como os javaBeans dão suporte a eventos a convenção para nomeação dos listeners são add para “registrar um evento” e remove para “remover um evento”.
Ex-addAcaoListener, removeAcaoListener
Modificadores de acesso é um outro ponto essencial para quem desenvolve programas em Java e que  também deve estar enraizado na cabeça de qualquer programador.

O acesso public(publico) permite com que as classes, métodos ou atributos possam ser vistos por qualquer classe em qualquer pacote da aplicação.

Acesso private(privado) permite ser enxergado somente dentro da classe ( é recomendado colocar atributos privados e fornecer acesso a eles através de métodos públicos) só usa-se em métodos e variáveis

O protect (protegido) permite ser acessível somente por classes dentro do pacote ou por classes de outro pacote mas que estejam herdando da classe pai que possuí  métodos  protegidos. Só usa-se em métodos ou variáveis.

O default(quando não se coloca nada) e quase igual ao protect a diferença e que só pode ser acessível dentro do pacote. Note que a diferença  para o protegido e que mesmo fora do pacote o protegido pode ser acessado se a subclasse o tiver herdando.

Modificadores de classes
(não referentes a acesso)-  uma classe pode ser public, default , abstract ou strictfp

Publica todos já sabem que e visível em qualquer parte da aplicação, default somente no mesmo pacote, abstract trabalha como uma interface, ela garante que todas as subclasses tenham que implementar a os métodos ou variáveis da classe pai, uma classe abstrata não precisa ter métodos abstratos, mas se uma classe possuir pelo menos um método abstrato ela terá que ser abstrata.

Strictfp- e usado para garantir que qualquer código de método da classe se conformara com as regras do padrão IEEE-754 para pontos flutuantes.

Uma classe pode ser classificada também como final para garantir que nunca será Herdada(isso garante que seus métodos não serão modificados por outras classes).

Interface-  garante a assinatura de um contrato , funciona como uma classes abstrata garantindo que todos seus métodos serão implementados, a diferença e que não possui variáveis  só constantes.(public static final) e todos os métodos tem que ser obrigatoriamente abstratos .
Palavras reservadas
Static – usa-se em variáveis e métodos para fazer com que existam independente de qualquer instancia criada para a classe

Final- a diferença do uso do final em classes, métodos e variáveis e que me classes garante que a mesma não pode ser herdada, métodos garante que não vai se sobrescrito e em variáveis garante que não vai ser modificada.

Transient- usado somente em variáveis de instancias  para dizer para a JVM não serializar essa variável quando for serializar o objeto.

Diferença entre argumentos e parâmetros
Argumentos-  e oque se especifica entre parênteses quando se esta invocando um método
Ex- depositaValor(100) o numero 100 e o argumento passado.
Parâmetro- aquilo que se passa na assinatura do método , indica oque o método deve receber quando invocado.
Ex- void informaNome(String nome)

Para concluir vou falar um pouco dos Enuns- a partir do java 5  permite restringir uma variável para ter uns de poucos valores pré-definidos- em outras palavras uma lista de valores enumerados.
Os enuns podem ser declarados na sua própria classe ou em outra classe, só podem ser públicos ou default e NUNCA devem ser declarados dentro de métodos.
Cada um dos tipos enumerados de um enum  são na verdade uma instância da classe enum.


Esse foi um pequeno resumo dos principais pontos abordados no primeiro capitulo do livro , espero ter ajudado a quem quer estudar para tirar certificação como eu.!

terça-feira, 12 de janeiro de 2010

SCJP - EXAME 310-055

O titulo ja diz um dos meus objetivos para 2010 certificar-me na linguagem java, comecei em janeiro os estudos e espero dentro de 4 meses estar fazendo a prova. Postarei aqui o andamento dos meus estudos, quais dificuldades e quais facilidades estou encontrando, assim como estratégias para mi dar bem na prova.

Dataprev

Bem foi demorado mas agora estou de ferias vou postar mais aqui no blog... vou falar nesse post sobre a Dataprev -Empresa de tecnologia e informação da previdência social.
Originou-se dos centros de processamento de dados dos institutos de previdência existentes em 1974.
Denominada, primeiramente, como Empresa de Processamento de Dados da Previdência, a Dataprev é uma empresa pública instituída pela Lei nº. 6.125, de 4 de novembro de 1974.
Onde so trabalham servidores publico concursados ou estagiarios como eu, regime e CLT.
Sua administração central está localizada no Distrito Federal. Possui unidades em todos os estados da federação, atualmente distinguidas entre regionais e de atendimento. Seus computadores de grande porte estão localizados nas sedes da unidades regionais de São Paulo, Rio de Janeiro e Brasília.

Além disso, atualmente a Dataprev dispõe de quatro unidades de desenvolvimento de software: Unidade de Desenvolvimento Santa Catarina (UDSC), Unidade de Desenvolvimento Paraíba (UDPB), Unidade de Desenvolvimento Ceará (UDCE) e Unidade de Desenvolvimento Rio de Janeiro (UDRJ).

O seu grande cliente chama-se INSS, onde desenvolvemos diversos sistemas como o CNIS-Cadastro Nacional de Informações Sociais que contém mais de 195 milhões de registros, representando mais de 173 milhões de pessoas cadastradas.

Uma otima empresa para se trabalhar, esse e so um resumo do que e a dataprev