Normalizacionbd

Solo disponible en BuenasTareas
  • Páginas : 7 (1707 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de junio de 2011
Leer documento completo
Vista previa del texto
Normalización de Bases de Datos y Técnicas de diseño
Uno de los factores mas importantes en la creación de páginas web dinámicas es el diseño de las Bases de Datos (BD). Si tus tablas no estan correctamente diseñadas, te pueden causar un montón de dolores de cabeza cuando tengas de realizar complicadísimas llamadas SQL en el código PHP para extraer los datos que necesitas. Si conoces comoestablecer las relaciones entre los datos y la normalización de estos, estarás preparado para comenzar a desarrollar tu aplicación en PHP. Si trabajas con MySQL o con Oracle, debes conocer los métodos de normalización del diseño de las tablas en tu sistema de BD relacional. Estos métodos pueden ayudarte a hacer tu código PHP mas fácil de comprender, ampliar, y en determinados casos, incluso hacer tuaplicación mas rápida. Básicamente, las reglas de Normalización están encaminadas a eliminar redundancias e inconsistencias de dependencia en el diseño de las tablas. Más tarde explicaré lo que esto significa mientras vemos los cinco pasos progresivos para normalizar, tienes que tener en cuenta que debes crear una BD funcional y eficiente. Tambien detallaré los tipos de relaciones que tu estructurade datos puede tener. Digamos que queremos crear una tabla con la información de usuarios, y los datos a guardar son el nombre, la empresa, la dirección de la empresa y algun e-mail, o bien URL si las tienen. En principio comenzarias definiendo la estructura de una tabla como esta: Formalización CERO usuarios nombre Joe Jill empresa ABC XYZ direccion_empresa 1 Work Lane 1 Job Street url1 abc.comabc.com url2 xyz.com xyz.com

Diríamos que la anterior tabla esta en nivel de Formalizacion Cero porque ninguna de nuestras reglas de normalización ha sido aplicada. Observa los campos url1 y url2 -¿Qué haremos cuando en nuestra aplicación necesitemos una tercera url ? ¿ Quieres tener que añadir otro campo/columna a tu tabla y tener que reprogramar toda la entrada de datos de tu código PHP ?Obviamente no, tu quieres crear un sistema funcional que pueda crecer y adaptarse fácilmente a los nuevos requisitos. Hechemos un vistazo a las reglas del Primer Nivel de Formalización-Normalización, y las aplicaremos a nuestra tabla. Primer nivel de Formalización/Normalización. (F/N) 1. Eliminar los grupos repetitivos de la tablas individuales. 2. Crear una tabla separada por cada grupo de datosrelacionados. 3. Identificar cada grupo de datos relacionados con una clave primaria.

¿ Ves que estamos rompiendo la primera regla cuando repetimos los campos url1 y url2 ? ¿ Y que pasa con la tercera regla, la clave primaria ? La regla tres básicamente significa que tenemos que poner una campo tipo contador autoincrementable para cada registro. De otra forma, ¿ Qué pasaria si tuvieramos dosusuarios llamados Joe y queremos diferenciarlos. Una vez que aplicaramos el primer nivel de F/N nos encontrariamos con la siguiente tabla:

usuarios userId 1 1 2 2 nombre Joe Joe Jill Jill empresa ABC ABC XYZ XYZ direccion_empresa 1 Work Lane 1 Work Lane 1 Job Street 1 Job Street url abc.com xyz.com abc.com xyz.com

Ahora diremos que nuestra tabla está en el primer nivel de F/N. Hemos solucionado elproblema de la limitación del campo url. Pero sin embargo vemos otros problemas....Cada vez que introducimos un nuevo registro en la tabla usuarios, tenemos que duplicar el nombre de la empresa y del usuario. No sólo nuestra BD crecerá muchísimo, sino que será muy facil que la BD se corrompa si escribimos mal alguno de los datos redundantes. Aplicaremos pues el segundo nivel de F/N: Segundo nivelde F/N 1. Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros. 2. Relacionar estas tablas mediante una clave externa.

Hemos separado el campo url en otra tabla, de forma que podemos añadir más en el futuro si tener que duplicar los demás datos. Tambien vamos a usar nuestra clave primaria para relacionar estos campos: usuarios userId 1 2 urls urlId relUserId...
tracking img