Pedir presupuesto

Normalización de tablas en Mysql

Free Image Hosting at www.ImageShack.us

Antes de empezar a crear una base de datos, siempre tenemos que realizar un diseño, de lo contrario o nos perderemos en el camino, o crearemos una base de datos poco funcional.

Para ello, a la hora de hacer un diseño de base de datos tenemos que tener algunos principios basicos en mente, y seguirlos para un buen fin. Estaremos de acuerdo que dependiendo de la dimensión habría que hacer más incapie en unas cosas que en otras, pero generalizando, es conveniente seguir los siguientes aspectos:

  1. Almacenar sólo la información necesaria: Decidir verdaderamente que información es necesario y cual no. Siempre se puede agregar un campo mas tarde con un ALTER TABLE en caso de ser necesario.
  2. Pedir sólo lo necesario y ser explícito: Lo explicaré con un ejemplo, ya que mucha gente utiliza el (*) al hacer consultas, cuando sólo le hacen falta 3 campos.
    • ejemplo incorrecto: SELECT * FROM USUARIOS;
    • ejemplo correcto : SELECT id, nombre, apellidos FROM USUARIOS;
  3. Normalizar las estructuras de las tablas: Gracias a las bases de datos relacionales podemos crear 2 tablas y enlazarlas. Asi que, beneficiemonos de esta funcionalidad sin complicar una tabla con datos repetitivos. Es deci, imaginaos una tabla (DISCOS) en la que guardamos información de Discos de música. Y por cada Disco hay 20 pistas. No sería muy lógico crear 20 registros con todos los datos iguales, salvo el nombre de la pista. Lo mejor sería crear otra tabla en la que almacenamos el nombre de la pista (PISTAS) y el ID del disco que relacionariamos con la tabla DISCOS. Con lo que si queremos consultar una pista en concreto de un disco hariamos lo siguiente:
    • SELECT pistas.nombre_pista FROM DISCOS,PISTAS WHERE DISCO.nombre = ‘ColdPlay’ and PISTAS.id = 3;
    • Los principales objetivos de la normalización son:
      1. Controlar a redundancia de la información.
      2. Evitar pérdidas de información.
      3. Capacidad para representar toda la información.
      4. Mantener la consistencia de datos.
  4. Seleccionar el tipo de dato apropiado: Esto no solo afecta al tipo de información que puede ser guardada en ese campo, sino que tambien afecta al rendimiento de la base de datos. Existen varios tipos de datos, pero os cito algunos:
    1. Numérico
    2. Texto
    3. Booleano
    4. Fecha
    5. Numérico con decimales
    6. etc …
  5. Utilizar índices apropiados: Con esto le indicamos a mySql que preste atención a los campos que definimos como Indices. Normalmente se utilizan los índices en aquellos campos a los que se hacen más consultas.
  6. Usar consultas REPLACES: Si necesitamos agregar un registro, pero antes tendriamos que consultar si realmente ya existe, lo mejor es utilizar la sentencia REPLACE, evitando así un acceso innecesaroi.
  7. Usar Tablas Temporales: Cuando trabajamos con bases de datos de gran magnitud, a veces es necesario realizar consultas sobre un pequeño subconjunto de una gran cantidad de datos. Para ello creamos:
    • CREATE TEMPORARY TABLE tabla_temp{ campo1 tipoDato, campo2 tipoDato};

    Las tablas temporales existen mientras dure la conexión a MySQL. Claro está que nosotros podremos siempre forzar esta interrupción. También podemos especificar que una tabla temporal sea creada en memoria.

  8. Usar una versión reciente de MySql: Siempre que podamos tendremos que tener la última versión que incluiran mejoras, con las que tendremos una aplicación mas rápida y estable.
  9. Otros consejos: Existen otros tipos de consejos que pueden seros útiles como:
    1. Utilizar carácteres alfanuméricos.
    2. Limitar los nombres a menos de 64 carácteres (restricción de MySql).
    3. Utilizar el guión bajo para separar palabras.
    4. Utilizar palabras en minúsculas.
    5. Utilizar las letras ID en las columnas de clave primara y foránea.

Via: MySql Hispano

¿Te ha gustado?, Comparte!!

3 comentarios

  1. tengo un proble soy pricipiante estoy creando una consulta
    select substring (dato,n,n)as valor 1 into tabla2 from tabla1
    donde dato es un campo de la tabla1 y los inserto en tabla2 que es temporal.
    pero no me deja insertarlos en mysql solo en sql algien me podria ayudar

  2. @casilda ospina la forma que funciona es la siguiente

    select *
    from demo1 d1
    inner join demo2 d2 on d2.id = d1.id

    espero te haya ayudado 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

¡Pide tu presupuesto!

Completa los campos para poder enviarte un presupuesto

Todos y tu presupuesto son a medida y totalmente personalizados, entendemos que dos proyectos online no pueden ser iguales y que cada cliente tiene unos objetivos y necesidades muy diferentes, es por eso que para elaborar un presupuesto, necesitamos saber de ti, tu proyecto y objetivos.

Los campos marcados con (*) son obligatorios.

La comunicación enviada quedará incorporada a un fichero del que es responsable COLORDEU. Esta comunicación se utilizará exclusivamente para tratar sus datos para atender su solicitud, siempre de acuerdo al Reglamento (UE) 2016/679 (RGPD), la Ley Orgánica 15/1999 (LOPD) y el Real Decreto 1720/2007 de desarrollo de la LOPD), sobre protección de datos. Sus datos no se comunicarán a terceros, excepto por obligación legal, y se mantendrán mientras no solicite su cancelación. En cualquier momento usted puede ejercer los derechos de acceso, rectificación, portabilidad y oposición, o si procede, a la limitación y/o cancelación del tratamiento, comunicándolo por escrito, indicando sus datos personales mediante un email a hola@colordeu.es