| Autor |
Mensagem |
|
|
Normalização é um processo de análise das informações que serão guardadas nas tabelas de um banco de dados. Elas facilitam muito a construção e manutenção de um sistema, pois evitam redundância, inconsistência nas informações entre outros problemas que podem ser resolvidos ou minimizados.
A normalização tem sua principal base na teoria dos conjuntos e tem como principais objetivos:
* Independência dos dados
* Minimizar redundâncias, que por sua vez minimiza os riscos de inconsistências
* Facilitar a manipulação do Banco de Dados
* Facilitar a manutenção dos sistemas de informação, sem grandes impactos.
Existem até cinco formas normais e as mais comuns são as três primeiras.
A primeira forma normal é a repetição da chave primária. Como melhor exemplo o número de identidade de uma pessoa. Esse número nunca se repete, ou o número de uma nota fiscal. Essa é a condição para a primeira norma formal.
A segunda forma normal são as chaves primárias compostas, ou seja, contém mais de uma coluna, um atributo para compor a chave principal. Para resolver temos que eliminar a dependência entre o campo e a chave principal. Voltemos ao exemplo da tabela nota fiscal: temos número da nota e código do protudo como chave, quantidade e valor. Podemos separar os campos dependenetes do campo código do produto e montar uma outra tabela sendo ele (código do produto) o campo chave, seguido de quantidade, descrição e valor. Assim, quando quisermos saber uma informação sobre determinado produto daquela nota, é só pegarmos o seu código e compararmos com o valor do campo chave da nova tabela.
A terceira forma normal pede que não exista um atributo que depende de um outro atributo que não é chave principal. Para testar, você deve perguntar: "Existe algum atributo que depende de outro que não é chave?" Se a resposta for sim, está violando a terceira forma normal e os atributos que são dependentes de atributos não chave, devem ser retirados e montados em uma nova tabela. Como exemplo, na nota fiscal temos: código do cliente, endereço do cliente e cnpj. Estes atributos não são chaves e endereço do cliente e cnpj podem ser retirados e colocados em outra tabela tendo como campo chave o código do cliente, que também deve constar na tabela nota fiscal para podermos fazer o relacionamento e buscar as informações.
Devo salientar que a 3ª forma normal depende que a outra ou outras tabelas devam estar nas 2ª e 1ª formas normais, ou seja, para passar para 2ª, devem ser cumpridos os requisitos da 1ª forma normal. E o mesmo acontece para a 3ª, onde devem ser cumpridos os requisitos da 2ª para se alcançar o objetivo da 3ª forma normal.
Bem, aqui acabo este artigo, que foi somente uma introdução à normalização. Muitos livros de banco de dados falam sobre o assunto, e na internet também se acha bastante material.
Antes de fazer a normalização faça um diagrama das tabelas que você vai ter, desenhe em uma folha de papel, somente dos dados que serão guardados, tente simplificar ao máximo a tabela, ou seja, tente eliminar campos dependentes um do outro, campos com valores repetidos. Por exemplo, temos a nota fiscal, já pensou em uma tabela com todos os dados, do cliente, produtos e etc?
Assim separe, uma tabela para cliente outra para produtos e outra a nota fiscal.
Bem, devemos tirar todas os campos com valores repetidos possíveis, cada campo deve ter um valor único, não repetido, na segunda forma normal um campo não pode depender de um outro na mesma tabela.
Procedimentos para primeira forma normal:
Procedimentos:
a) Identificar a chave primária da entidade;
b) Identificar o grupo repetitivo e removelo da entidade;
c) Criar uma nova entidade com a chave primária da entidade anterior e o grupo repetitivo.
para a segunda forma normal:
a) Identificar os atributos que não são funcionalmente dependentes de toda a chave primária.
b) Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles.
A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes.
para a terceira forma normal:
a) Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave;
b) Remove-los e criar uma nova entidade com os mesmos.
A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes.
Pegue sempre o conjunto da primeira tabela, por exemplo, nota fiscal e crie subconjuntos e neste subconjunto crie uma chave que ligue a outra tabela e dê um novo nome a esta tabela, mantenha os campos importantes. Vá fazendo isso até não haver mais campos com valores repetidos.
O campo chave é sempre de valor único.
A dependência é um campo depender de outro campo ou chave, a chave pode ser simples ou composta.
Dependência parcial é quando um campo depende só de uma parte de uma chave composta.
Bem é isso, sugestões, comentário e críticas são bem vindas.
|
 |
|
|
|
Depois que atualizei para a última versão do Java, acontece isso com todos os arquivos que tento executar, compila numa boa. E isso acontece em qualquer diretório que eu esteja. Sempre é mostrado esse erro desta classe não encontrada. As variáveis de ambiente estão corretas.
|
 |
|
|
Vacilei, esqueci de dar a notícia aqui, peguei logo no dia seguinte ao do lançamento e tudo está funcionando perfeitamente, a única coisa chata é que não consigo configurar o Hibernate 3.1
Valeu!
Deathcon1
|
 |
|
|
Bem, como estou tendo problemas para instalar o Hibernate 3.1 comento aqui que como é chato instalar este programa. o Buil.bat tinha que ter uma rotina, talvez tenha, não sei, pois não sei como foi montado o projeto, deveria procurar ou montar todas as classes para quando fosse instalado pela primeira vez. Isto ajudaria muito na instalação invez de ficar alterando arquivos como no velho DOS em que tinhamos que ficar configurando config.sys e autoexec.bat. É perda de tempo. A coisa tinha que ser mais automatizada, até vem um arquivo build.xml, mas que para mim não funcionou em nada.
|
 |
|
|
|
Aqui esta o erros_hibernate2.zip
|
 |
|
|
Executei novamente o build e veio muitos erros, totalmente diferente do anterior.
Coloco em arquivo anexo.
Espero que estas imagens capturadas da janela com os erros ajudem.
Executei uma segunda vez e apareceu poucos erros. Totalmente diferentes dos que foram mostrados anteriormente. É o arquivo imagem8.
Agradeço a ajuda de todos.
|
 |
|
|
Estou tentando instalar o Hibernate 3.1.3. Descompactei todo ele e todos os arquivos .jar no c:, não sei porque o arquivo build.xml original não funciona. Ele não instala, apesar de mostrar o andamento através de uma barra de progresso. Assim peguei alguns exemplos e tentei com um build.xml próprio. Não consegui. Na compilação sempre é mostrado:
generate:
[hibernatedoclet] log4j:warn No appenders could be found for logger (xdoclet. configparamintrospector.fillconfigparamhashmapusingreflectionfor).
[hibernatedoclet] log4j:warn Please initialize the log4j system properly
generate-schema:
BuildFailed
c:\hibernate-3.1.3\build.xml:94 Schema texta failed: Couldnot read mapping document from file c:\hibernate-3.1.3\doc\reference\tutorial\src\events\Event.hbm.xml
E diz o tempo total gasto no final.
Uso o Eclipse 3.1.2 com o Lomboz na sua última versão.
Windows XP sp2
O Eclipse está instalado em c:\eclipse.
O hibernate em c:\hibernate-3.1.3
Abaixo meu build.xml
<project name="hibernate" default="generate-schema" basedir=".">
<property name="bin" location="bin" />
<property name="src" location="src" />
<property name="xdoclet.lib" location="C:\gravar\eclipse\xdoclet-1.2.3\lib" />
<property name="hibernate.lib" location="C:\hibernate-3.1.3" />
<property name="libs" location="C:\hibernate-3.1.3"/>
<!-- PATH -->
<path id="class.path">
<pathelement location="${bin}" />
<fileset dir="${xdoclet.lib}">
<include name="**\*.jar" />
</fileset>
<fileset dir="${hibernate.lib}">
<include name="**\*.jar" />
</fileset>
<fileset dir="${libs}">
<include name="**\*.jar" />
</fileset>
<fileset dir="${bin}">
<include name="**\*.jar" />
</fileset>
</path>
<fileset dir="/hibernate-3.1.3">
<include name="**/*.jar"/>
</fileset>
<!-- Targets -->
<target name="init">
<mkdir dir="${bin}"/>
<taskdef name="hibernatedoclet"
classname="xdoclet.modules.hibernate.HibernateDocletTask"
classpathref="class.path">
</taskdef>
</target>
<target name="build" depends="init">
<javac srcdir="${src}" destdir="${bin}">
<classpath>
<fileset dir="${hibernate.lib}">
<include name="**/*.jar"/>
</fileset>
</classpath>
<classpath path="${libs}"/>
<classpath path="${xdoclet.lib}"/>
</javac>
</target>
<target name="schemaexport">
<taskdef name="schemaexport" classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask">
<classpath>
<path refid="compile.classpath" />
</classpath>
</taskdef>
</target>
<!-- Taskdefs -->
<target name="generate"
description="Generates Hibernate class descriptor files."
depends="build">
<!-- Hibernate Doclet -->
<hibernatedoclet
destdir="${bin}"
excludedtags="@version,@author,@todo"
force="true"
verbose="true">
<fileset dir="${src}">
<include name="**/*.java"/>
</fileset>
</hibernatedoclet>
</target>
<taskdef name="schemaexport" classname="org.hibernate.tool.hbm2ddl.SchemaExportTask">
<classpath refid="class.path"/>
<classpath>
<pathelement path="c:\hibernate-3.1.3\"/>
</classpath>
<classpath path="c:\hibernate-3.1.3"/>
<classpath path="${compile.outdir}"/>
</taskdef>
<target name="generate-schema" depends="generate">
<schemaexport properties="hibernate.properties" quiet="no" drop="no" text="no">
<!-- fileset dir="${bin}" -->
<fileset dir="c:\hibernate-3.1.3\">
<include name="**/*.hbm.xml" />
</fileset>
</schemaexport>
</target>
</project>
Sei que existe outro método para instalar, mas não entendi muito bem, através de classpath no Eclipse. Eu pergunto se precisa criar um projeto e depois compilar. Como é feito deste modo?
Valeu gente, obrigado por que puder ajudar.
|
 |
|
|
Estou tentando instalar o Hibernate 3.1.3. Descompactei todo ele e todos os arquivos .jar no c:, não sei porque o arquivo build.xml original não funciona. Ele não instala, apesar de mostrar o andamento através de uma barra de progresso. Assim peguei alguns exemplos e tentei com um build.xml próprio. Não consegui. Na compilação sempre é mostrado:
generate:
[hibernatedoclet] log4j:warn No appenders could be found for logger (xdoclet. configparamintrospector.fillconfigparamhashmapusingreflectionfor).
[hibernatedoclet] log4j:warn Please initialize the log4j system properly
generate-schema:
BuildFailed
c:\hibernate-3.1.3\build.xml:94 Schema texta failed: Couldnot read mapping document from file c:\hibernate-3.1.3\doc\reference\tutorial\src\events\Event.hbm.xml
E diz o tempo total gasto no final.
Uso o Eclipse 3.1.2 com o Lomboz na sua última versão.
Windows XP sp2
O Eclipse está instalado em c:\eclipse.
O hibernate em c:\hibernate-3.1.3
Abaixo meu build.xml
<project name="hibernate" default="generate-schema" basedir=".">
<property name="bin" location="bin" />
<property name="src" location="src" />
<property name="xdoclet.lib" location="C:\gravar\eclipse\xdoclet-1.2.3\lib" />
<property name="hibernate.lib" location="C:\hibernate-3.1.3" />
<property name="libs" location="C:\hibernate-3.1.3"/>
<!-- PATH -->
<path id="class.path">
<pathelement location="${bin}" />
<fileset dir="${xdoclet.lib}">
<include name="**\*.jar" />
</fileset>
<fileset dir="${hibernate.lib}">
<include name="**\*.jar" />
</fileset>
<fileset dir="${libs}">
<include name="**\*.jar" />
</fileset>
<fileset dir="${bin}">
<include name="**\*.jar" />
</fileset>
</path>
<fileset dir="/hibernate-3.1.3">
<include name="**/*.jar"/>
</fileset>
<!-- Targets -->
<target name="init">
<mkdir dir="${bin}"/>
<taskdef name="hibernatedoclet"
classname="xdoclet.modules.hibernate.HibernateDocletTask"
classpathref="class.path">
</taskdef>
</target>
<target name="build" depends="init">
<javac srcdir="${src}" destdir="${bin}">
<classpath>
<fileset dir="${hibernate.lib}">
<include name="**/*.jar"/>
</fileset>
</classpath>
<classpath path="${libs}"/>
<classpath path="${xdoclet.lib}"/>
</javac>
</target>
<target name="schemaexport">
<taskdef name="schemaexport" classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask">
<classpath>
<path refid="compile.classpath" />
</classpath>
</taskdef>
</target>
<!-- Taskdefs -->
<target name="generate"
description="Generates Hibernate class descriptor files."
depends="build">
<!-- Hibernate Doclet -->
<hibernatedoclet
destdir="${bin}"
excludedtags="@version,@author,@todo"
force="true"
verbose="true">
<fileset dir="${src}">
<include name="**/*.java"/>
</fileset>
</hibernatedoclet>
</target>
<taskdef name="schemaexport" classname="org.hibernate.tool.hbm2ddl.SchemaExportTask">
<classpath refid="class.path"/>
<classpath>
<pathelement path="c:\hibernate-3.1.3\"/>
</classpath>
<classpath path="c:\hibernate-3.1.3"/>
<classpath path="${compile.outdir}"/>
</taskdef>
<target name="generate-schema" depends="generate">
<schemaexport properties="hibernate.properties" quiet="no" drop="no" text="no">
<!-- fileset dir="${bin}" -->
<fileset dir="c:\hibernate-3.1.3\">
<include name="**/*.hbm.xml" />
</fileset>
</schemaexport>
</target>
</project>
Sei que existe outro método para instalar, mas não entendi muito bem, através de classpath no Eclipse. Eu pergunto se precisa criar um projeto e depois compilar. Como é feito deste modo?
Valeu gente, obrigado por que puder ajudar.
|
 |
|
|
|
|