+4

Técnicas de Normalização

criado por Phaser em 12/04/2002 9:59pm
Quarta Forma Normal


  1. Num relacionomento muitos-para-muitos, entidades independentes não podem ser armazenadas na mesma tabela.



Já que isso só se aplica a relacionomentos muitos-para-muitos, muitos desenvolvedores podem corretamente ignorar esta regra. Mas ela torna-se útil em certas situações, como esta. Nós modificamos com sucesso nossa tabela de urls para eliminar redundâncias e movemos os relacionomentos em sua própria tabela.

Só para lhe dar um exemplo prático, agora nós podemos selecionar todas as urls de Carlosexecutando a seguinte chamada SQL:

SELECT
  nome,
  url
FROM
  usuarios,
  urls,
  url_relacoes
WHERE
  url_relacoes.relacionadousrId = 1 AND
  usuarios.usrId = 1 AND
  urls.urlId = url_relacoes.relacionadoUrlId

E se quiséssemos circular por todas as informações de Usuario e Url de todo mundo, faríamos algo assim:

SELECT
  nome,
  url
FROM
  usuarios,
  urls,
  url_relacoes
WHERE
  usuarios.usrId = url_relacoes.relacionadousrId AND
  urls.urlId = url_relacoes.relacionadoUrlId

Quinta Forma Normal

Aqui está uma forma de normalização que as vezes é aplicada, mas é realmente muito esotérica e em muitos dos casos não é exigida para ter a maior funcionalidade a partir da estrutura de dados ou aplicação. Ela sugere que:


  1. A tabela original deve ser reconstruída a partir das tabelas que foram geradas por ela.



O benefício de aplicar esta regra garante que você não criou nenhuma coluna estranha nas suas tabelas, e que todas as estruturas das tabelas que você criou só são tão grandes quanto elas necessitam ser. É de boa prática aplicar esta regra, mas a não ser que você esteja lidando com um esquema de dados muito grande você provavelmente não vai precisar dela.

Espero que você tenha achado este artigo útil e que seja capaz de aplicar estas regras de normalização para todos os seus projetos de banco de dados. E caso você esteja imaginando de onde veio isso tudo, as primeiras três regras de normalização são descritas pelo Dr. E.F. Codd em um trabalho seu de 1972,
"Further Normalization of the Data Base Relational Model". Outras regras tem desde então sido teorizadas por matemáticos posteriores da Teoria de Conjuntos e Algebra Relacional.

Barry Wise - http://itcn.com
Traduzido e editado para a língua portuguesa por Anderson Fortaleza

Comentários:

Mostrando 1 - 5 de 5 comentários
Ederson disse:
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 (~19 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)

Phaser disse:
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
17/04/2002 11:28am (~22 anos atrás)

Phaser disse:
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
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)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)