Pedir presupuesto

Consejos esenciales para desarrolladores de bases de datos

Antes de empezar a explicar los consejos esenciales para desarrolladores de bases de datos, me gustaría citar mi fuente, ya que la mayoría del texto ha sido traducido de TutPlus, el cual hace un estupendo trabajo con artículos muy interesantes.

Ahora, vamos a detallar 10 trucos esenciales para desarroladores SQL:

Usa un lenguaje correcto

Un ejemplo muy claro de un correcto uso del lenguaje y sobre todo de los recursos de una base de datos es no darle más trabajo del que realmente se necesita. Con esto quiero decir que si por ejemplo necesitamos seleccionar de una base de datos los usuarios cuyo nombre empiecen por «Da» un fallo común sería hacer lo siguiente:

[mysql]SELECT * FROM usuarios WHERE user_nom like ‘Da%’;[/mysql]

Y vosotros pensaréis, ¿Que hay de malo en esta consulta?, pues el problema está en el (*), ya que esto quiere decir que la consulta va a recuperar todos los campos de esa tabla. En el caso de que tu tabla tenga sólo 3 campos, no habría problema, pero imaginaros una tabla de Usuarios donde tenga todo tipo de información como: nombre, apellidos, DNI, calle, plaza, ciudad, pais, edad, e-mail, contraseña, usuario, etc .. y si a esto le sumamos que en vuestra tabla pudiera haber 2 millones de registros, pues la cosa se pone muy fea.

Hagamos las cosas bien y si queremos recuperar solo el nombre la consulta la hacemos de la siguiente manera:

[mysql]SELECT user_nom FROM usuarios WHERE user_nom like ‘Da%’;[/mysql]

De esta forma haremos que la base de datos sufra menos.

Código Seguro

Las bases de datos almacenan información muy personal o incluso financiera, por lo que suelen ser susceptibles de ataques.

Si no estas convencido sobre la seriedad de la seguridad en bases de datos, estos dos artículos pueden cambiar tu idea:

«The FBI and Virginia State Police are searching for hackers who demanded that the state pay them a $10 million ransom by Thursday for the return of millions of personal pharmaceutical records they say they stole from the state’s prescription drug database.» Read the Washington Post article

«Kaspersky Lab, a Moscow-based security company, admitted today that a database containing customer information had been exposed for almost 11 days and that it only learned of the breach when Romanian hackers told the firm about it last Saturday.» Read the ComputerWorld article

Por tanto vamos a mostrar algunos consejos para poder solucionar algunos aspectos de seguridad de tu base de datos:

  • Nunca te conectes como root a tu base de datos desde tus aplicaciones
  • Crea usuarios con privilegios especificos para acceder desde tus aplicaciones
  • Encripta la contraseña de tus usuarios
  • Vigila el SQL injection
  • Si usas PHP utiliza SIEMPRE la funcion ADDSLASHES antes de insertar un texto en la base de datos.
  • Si el campo es un text area tambien verifica la cantidad de caracteres que inserta el usuario, para que no desborde y por consecuencia se recorte la info
  • Verifica rangos numericos introducidos
  • Crea manejadores de errores para que MySQL no los muestre

A parte de estos mínimos consejos, existen aplicaciones que pueden ayudarnos a ver fallos de seguridad como:

MySQL Network Scanner: permite auditar una red de clase C en busca de servidores MySQL que no tengan definida una contraseña para el usuario root. En el caso de encontrar alguna se conectará y volcará todos los pares de usuario/contraseña definidos en la tabla mysql.user, incluyendo la información sobre el host desde el que se le permite la conexión.

MySQL Brute Force Password Hash Cracker: Complement al programa anteior, admite como argumento el hash de una contraseña de un usuario de MySQL y, mediante fuerza bruta, intentará descifrarlo.

PasswordsPro (Windows): Recupera todo tipo de contraseñas, incluyendo hashes MD4, MD5, SHA-1, incluyendo usuarios de bases de datos MySQL. También descifra las contraseñas ocultas detrás de astericos en ventanas Windows. La utilidad ha sido traducida al español por el equipo de Seguridad0.

Por su puesto no cabe decir que es importantísimo hacer backups de nuestras bases de datos en modo de prevención de lo que pueda pasar (Seguridad Preventiva).

Aprende sobre Joins

En una base de datos es muy probable que requieras de consultas un poco más complejas en las que unir datos de una tabla con otra. Para esto existe la sentencia JOIN (ver explicación de tablas relacionales), una parte de MySQL que tienes que aprender Si o Si.

Tipos de datos

Es esencial que conozcas los diferentes tipos de datos que existen en las bases de datos para así poder asignar el correcto a tus campos. Existen tipos como integer, varchar, time, datetime, etc .. aunque cada motor de base de datos puede tener distinciones, por eso os dejo algunos enlaces para que podáis echarle un vistazo:

Normaliza tu base de datos

Normalización es un conjunto de reglas que sirven para ayudar a los diseñadores a desarrollar un esquema que minimice los problemas de lógica.

Dentro de la Normalización existen 3 niveles:

1NF (Primera Forma Normal): Las columnas repetidas deben eliminarse y colocarse en otras tablas separadas.

2NF (Segunda Forma Normal): Todas las dependencias parciales (aquellos datos que no dependen de la clave de la tabla para identificarlos) se deben eliminar y separar dentro de sus propias tablas.

3NF (Tercera Forma Normal): Hay que eliminar y separar cualquier dato que no sea clave. El valor de esta columna debe depender de la clave. Todos los valores deben identificarse únicamente por la clave.

Se puede resumir que la intención de la normalización de bases de datos es una técnica para crear relaciones lógicas correctamente entre las tablas de una base de datos.

Para más detalles ver este artículo.

Índices en tablas

Una base de datos con índices es una base de datos más veloz. Los índices se crean usando una o más columnas de una tabla, haciendo que una base de datos sea más eficiente y tenga un acceso más ordenado.

Ante una busqueda en una base de datos, hay dos maneras de realizarla:

  1. La primera y más lenta es haciendo un Scan de toda la tabla con lo que buscaríamos en todos los registros de la tabla
  2. La segunda y más veloz es un escaneo de índices, con la que no se tendrá que buscar en todos los registros sino en los índices.

Para que lo entendáis, en el caso de buscar un capítulo en un libro, en el primer caso, se buscaría hoja por hoja, y en el segundo, iría directamente a la primera página donde están todos los capitulos con su número de hoja detallado, con lo que no buscariamos en todo el libro sino en el índice y despues iriamos directamente al capítulo en cuestión.

Utilizar correctamente los permisos de la base de datos

Si en tu base de datos tienes varios usuarios, es muy importante manejar distintos permisos según el tipo de Usuario. ¿Te gustaría que un becario de tu empresa tuviera permisos de administrador, teniendo así la posibilidad de por ejemplo borrar una tabla?, seguramente tu respuesta sea NO!.

Para saber la lista de usuarios que existen en una base de datos basta con hacer una consulta a la misma. Por ejemplo, para una base de datos MySql, sólo tenemos que escribir «SHOW TABLES» y veremos que existe una tabla ‘user’ donde tenemos todos los datos de los usuarios como: host, password, user, max_connections, max_updates, etc .. Todos estos campos nos revelan los privilegios que tiene cada usuario, además de existir otra tabla llamada ‘db’ que tiene más privilegios para base de datos especificas.

En el caso de SQL Server existen unas instrucciones GRANT, DENY y REVOKE con los que dar y quitar permisos de usuario. Además de funciones db_writer, db_reader, pero ya entramos en demasiado detalle que quiza explique en otro artículo.

Conoce las limitaciones

Un administrador de bases de datos debe conocer las limitaciones de cada uno de los DBMs que tenemos a nuestra disposición como: Oracle, Sql Server, MySQL, etc .. Para ello hay que hacerse una planificación bien detallada de las necesidades para llevar a cabo el proyecto. Muchos desarrolladores eligen una base de datos y al cabo del tiempo reconocen haberse equivocado.

Un manual que puede ser interesante es el que nos ofrecen en la web de MSDN

http://msdn.microsoft.com/en-us/library/ms143432.aspx

Conclusión

Hemos hablado de muchos aspectos y consejos de base de datos, pero me gustaría que todos aquellos que crean que falta algo por detallar que lo exponga en los comentarios.

¿Te ha gustado?, Comparte!!

2 comentarios

  1. Hola: aunque los consejos que has dado son muy «superficiales», no está mal para empezar.
    Lo que sí que está mal es que aconsejes un sitio de micro$oft para documentarse en las limitaciones de las bases de datos, porque allí sólo hablan de su propia base de datos, evidentemente… y tampoco van a hablar mal de ella 😉
    Saludos.

  2. Bueno aconsejo ese libro porque hablo tambien de SQL Server que es de Microsoft, y hay mucha gente y muchas empresas que usan SQL Server para sus bases de datos.

    De todas maneras, seria de gran ayuda que aconsejaras un libro para que los demás usuarios puedan disfrutarlo :D..

    Saludos y gracias por el comentario.

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