Técnicas de Normalização
Primeira Forma Normal
Você nota que estamos quebrando a primeira regra ao repetirmos os campos url1 e url2 ? E quanto à regra três, chaves primárias? A regra três significa basicamente que queremos definir um tipo de valor inteiro único e auto-incrementado (que aumenta automaticamente) em cada uma de nossas linhas. Caso contrário, o que aconteceria se tivéssemos dois usuários com nome Flávia e quiséssemos separar um do outro? Quando aplicamos as regras da Primeira Forma Normal nós teremos a seguinte tabela:
<table align="center" border="1" cellpadding="4" cellspacing="0" width="600" bgcolor="#FFFFFF" bordercolor="#CCCCCC" style="font-family: arial; font-size: 10pt;"><tr align="center"><td colspan="5" bgcolor="#DDDDDD">usuarios</td></tr><tr align="center"><td>usrId</td><td>nome</td><td>empresa</td><td>empresa_endereco</td><td>url</td></tr><tr align="center"><td>1</td><td>Carlos</td><td>ABC</td><td>Santos Dummont, 100</td><td>abc.com</td></tr><tr align="center"><td>1</td><td>Carlos</td><td>ABC</td><td>Santos Dummont, 100</td><td>xyz.com</td></tr><tr align="center"><td>2</td><td>Flávia</td><td>XYZ</td><td>Des. Moreira, 100</td><td>abc.com</td></tr><tr align="center"><td>2</td><td>Flávia</td><td>XYZ</td><td>Des. Moreira, 100</td><td>xyz.com</td></tr></table>
Agora nossa tabela é dita estar na Primeira Forma Normal. Nós solucionamos o problema da limitação de campos de url, mas olhe a dor de cabeça que nos colocamos agora. Cada vez que colocamos uma nova linha na tabela de usuários nós duplicamos todos os dados da companhia e do nome do usuário. Nosso banco de dados não vai apenas ficar muito maior do que esperávamos, mas nós poderíamos facilmente corromper nossos dados misturando algumas dessas informações redundantes. Vamos aplicar as regras da Segunda Forma Normal:
- Eliminar grupos repetidos em tabelas individuais.
- Criar tabelas separadas para cada conjunto de dados relacionados
- Identificar cada conjunto de dados relacionados com uma chave primária
Você nota que estamos quebrando a primeira regra ao repetirmos os campos url1 e url2 ? E quanto à regra três, chaves primárias? A regra três significa basicamente que queremos definir um tipo de valor inteiro único e auto-incrementado (que aumenta automaticamente) em cada uma de nossas linhas. Caso contrário, o que aconteceria se tivéssemos dois usuários com nome Flávia e quiséssemos separar um do outro? Quando aplicamos as regras da Primeira Forma Normal nós teremos a seguinte tabela:
<table align="center" border="1" cellpadding="4" cellspacing="0" width="600" bgcolor="#FFFFFF" bordercolor="#CCCCCC" style="font-family: arial; font-size: 10pt;"><tr align="center"><td colspan="5" bgcolor="#DDDDDD">usuarios</td></tr><tr align="center"><td>usrId</td><td>nome</td><td>empresa</td><td>empresa_endereco</td><td>url</td></tr><tr align="center"><td>1</td><td>Carlos</td><td>ABC</td><td>Santos Dummont, 100</td><td>abc.com</td></tr><tr align="center"><td>1</td><td>Carlos</td><td>ABC</td><td>Santos Dummont, 100</td><td>xyz.com</td></tr><tr align="center"><td>2</td><td>Flávia</td><td>XYZ</td><td>Des. Moreira, 100</td><td>abc.com</td></tr><tr align="center"><td>2</td><td>Flávia</td><td>XYZ</td><td>Des. Moreira, 100</td><td>xyz.com</td></tr></table>
Agora nossa tabela é dita estar na Primeira Forma Normal. Nós solucionamos o problema da limitação de campos de url, mas olhe a dor de cabeça que nos colocamos agora. Cada vez que colocamos uma nova linha na tabela de usuários nós duplicamos todos os dados da companhia e do nome do usuário. Nosso banco de dados não vai apenas ficar muito maior do que esperávamos, mas nós poderíamos facilmente corromper nossos dados misturando algumas dessas informações redundantes. Vamos aplicar as regras da Segunda Forma Normal:
estava testando aki, eu programo php com mysql no windows e qundo ta ok testo no linux, tive um problema de campos no mysql, onde os num posso usar maiusculas no nomes dos campos, tem que se rtudo minusculo....alguem ja passou por isso?
25/10/2004 1:46pm
(~20 anos atrás)
isso foi o que eu não entendi, você quis dizer que se eu pegar as chaves estrangeiras de outras tabelas eu consigo reconstituir essa tabela de quinta forma ? :)
17/04/2002 11:36am
(~22 anos atrás)
Opa André, acho que me enganei aqui nos emails, me desculpe.
Bem, quanto a quinta forma como não é algo muito utilizado o autor se restringiu a apenas comentá-la. Na verdade você faz a volta do que você fez, vai destrinchando as tabelas inferiores até chegar a uma tabela principal, na verdade é apenas ler o artigo de trás pra frente. É mais uma forma de se certificar que uma tabela está restringida ao máximo do que uma forma de construir a tabela principal.
[]s
Bem, quanto a quinta forma como não é algo muito utilizado o autor se restringiu a apenas comentá-la. Na verdade você faz a volta do que você fez, vai destrinchando as tabelas inferiores até chegar a uma tabela principal, na verdade é apenas ler o artigo de trás pra frente. É mais uma forma de se certificar que uma tabela está restringida ao máximo do que uma forma de construir a tabela principal.
[]s
17/04/2002 11:28am
(~22 anos atrás)
Olá André...
...quando você vai começar a estruturar um banco de dados com tabelas e etc, você começa estabelecendo uma tabela no Formato Zero, como é mostrado no artigo. Você nunca começa com as tabelas já normalizadas, a não ser que você tenha uma boa experiência já e comece já fazendo uma normalização inicial.
Então, a princípio você estabelece uma tabela na Forma Zero e vai aplicando regras de normalização.
[]s
...quando você vai começar a estruturar um banco de dados com tabelas e etc, você começa estabelecendo uma tabela no Formato Zero, como é mostrado no artigo. Você nunca começa com as tabelas já normalizadas, a não ser que você tenha uma boa experiência já e comece já fazendo uma normalização inicial.
Então, a princípio você estabelece uma tabela na Forma Zero e vai aplicando regras de normalização.
[]s
17/04/2002 11:17am
(~22 anos atrás)
Acho que a Quinta forma ficou muito no "ar", seria interessante se você conseguisse exemplificar, como nas outras formas ! :-)
15/04/2002 10:42am
(~22 anos atrás)