PDA

Ver la Versión Completa : Acerca de normalización de BD.


fide
21-03-2008, 19:03:19
Hola. Muchos saludos a todos. He creado este post, por que me parace importante que toda aquella persona que trabaje con BD, sepa como crearlas, para que sean consistentes, rapidas a la hora de realizar cualquier operacion como la insercion, eliminacion, actualizacion, busqueda etc. sobre los datos. Y todo ello valiendose de la normalizacion de BD, con las Formas Normales que conozco.

Primeramente, que creen de las FM???

Aqui les presento un marabilloso artículo que trata todo ello!
Es de Microsoft el articulo, asi que espero que eso no afecte, ya que esta buenisimo, jajajaja :D.


Primera forma normal

La primera forma normal establece que en cada intersección de fila y columna de la tabla existe un valor y nunca una lista de valores. Por ejemplo, no puede haber un campo denominado Precio en el que se incluya más de un precio. Si considera cada intersección de filas y columnas como una celda, cada celda sólo puede contener un valor.

--------------------------------------------

Segunda forma normal

La segunda forma normal exige que cada columna que no sea clave dependa por completo de toda la clave principal y no sólo de parte de la clave. Esta regla se aplica cuando existe una clave principal formada por varias columnas. Suponga, por ejemplo, que existe una tabla con las siguientes columnas, de las cuales Id. de pedido e Id. de producto forman la clave principal:

Id. de pedido (clave principal)
Id. de producto (clave principal)
Nombre de producto
Este diseño infringe los requisitos de la segunda forma normal, porque Nombre de producto depende de Id. de producto, pero no de Id. de pedido, por lo que no depende de toda la clave principal. Debe quitar Nombre de producto de la tabla, ya que pertenece a una tabla diferente (a la tabla Productos).

--------------------------------------------

Tercera forma normal
La tercera forma normal exige no sólo que cada columna que no sea clave dependa de toda la clave principal, sino también que las columnas que no sean clave sean independientes unas de otras.

O dicho de otra forma: cada columna que no sea clave debe depender de la clave principal y nada más que de la clave principal. Por ejemplo, considere una tabla con las siguientes columnas:

IdProducto (clave principal)
Nombre
PVP
Descuento
Suponga que la columna Descuento depende del precio de venta al público (PVP) sugerido. Esta tabla infringe los requisitos de la tercera forma normal porque una columna que no es clave, la columna Descuento, depende de otra columna que no es clave, la columna PVP. La independencia de las columnas implica que debe poder cambiar cualquier columna que no sea clave sin que ninguna otra columna resulte afectada. Si cambia un valor en el campo PVP, la columna Descuento cambiaría en consecuencia e infringiría esa regla. En este caso, la columna Descuento debe moverse a otra tabla cuya clave sea PVP.

darkerbyte
22-03-2008, 10:21:29
Es bueno que los que empiezan a diseñar sus BD normalicen sus tablas.
De hecho muchas problemas en la programación y por consiguiente, preguntas en el foro, comenzaron por que no hicieron correctamente el diseño.
Aunque el artículo es muy corto, para el que empieza sabrá que existe algo como 'FM'
Además, toda vía falta mencionar la 4FM y la Boyce/Codd

Lepe
22-03-2008, 12:27:46
Yo no sé diseñar una base de datos sin normalizar :o.

La primera vez que lo hice me pareció confuso y un sinsentido (el hecho de partir 1 tabla en 3 tablas) y después tener que unirlas para hacer consultas. Más tarde, al continuar el diseño y sobre todo el mantenimiento de la misma, ví las ventajas.

Mis sistemas siguen hasta la 4ª Forma Normal, y eso que no son desarrollos gubernamentales (que ahí exijen al menos, la 3ª FN).

Saludos

mlara
23-03-2008, 21:46:25
A propósito, dónde hay buena documentación acerca de la normalización de DBs?

Lepe
24-03-2008, 12:49:42
La wikipedia ya la conocemos todos, no lo he revisado a fondo pero tiene buena pinta (http://es.wikipedia.org/wiki/Clave_for%C3%A1nea), en la bibliografía también tienes enlaces buenos.

Saludos

kuan-yiu
24-03-2008, 15:32:20
Pues yo trabajo con tablas SIN normalizar, siendo estrictos no cumplen ni la primera forma normal porque el nombre de los clientes se guarda en un único campo.
Es lo que hay y lo voy arreglando a medida que puedo, pero cada cambio por minúsculo que sea, supone semanas de trabajo.
Eso sí, todo lo nuevo está normalizado.

Lepe
25-03-2008, 06:24:39
Pues yo trabajo con tablas SIN normalizar [...]
y lo voy arreglando a medida que puedo, pero cada cambio por minúsculo que sea, supone semanas de trabajo.


Mi más sentido pésame kuan-yiu :D :D

Saludos

kuan-yiu
25-03-2008, 09:14:26
No hurges en la herida :( ... que ya sufro bastante (snif, snif)