SQL (por sus siglas en inglés Structured Query Language) es el lenguaje utilizado para crear, modificar y acceder la información de las bases de datos relacionales.
Es un lenguaje declarativo de alto nivel, es decir que, especificamos qué es lo que queremos y no cómo conseguirlo. Esto supone una manera particular de pensar al momento de resolver problemas con este lenguaje.
Vivimos en un mundo donde a cada instante se producen más y más datos. Esta información debe ser almacenada en algún lugar para luego ser tratada, visualizada, analizada...
Las bases de datos relacionales son sistemas que nos permiten almacenar y manipular datos siguiendo el modelo relacional. Esto se logra a través del lenguaje SQL. Entre otras cosas, el SQL sirve para hacerle preguntas a una base de datos y obtener la información que deseamos.
Y aunque el SQL sea característico de las bases de datos relacionales, comprenderlo también nos ayuda en la utilización y manipulación de bases de datos not-only SQL.
Así que si te dedicas al desarrollo de aplicaciones, la ciencia de datos, o incluso si eres gerente o te dedicas al marketing (en general, si en tu trabajo manipulas datos), saber SQL te será de gran utilidad. Te ayudará a simplificar tu trabajo y te ahorrará tiempo, además de poder manipular cientos de miles o incluso millones de datos, con una sola instrucción y en relativamente poco tiempo.
En este artículo y el siguiente, quiero enseñarte un método para que comprendas cómo hacer consultas con SQL a partir de un modelo relacional y de preguntas en lenguaje corriente.
El Modelo Entidad-Relación (ER) se basa en una percepción del mundo real donde hay objetos básicos (Entidades) que se relacionan entre sí (Relaciones). Es una herramienta que se utiliza para el modelado de datos.
Entidad: Representa una cosa, objeto o concepto del mundo real con existencia independiente. Es un objeto sobre el que queremos almacenar información. Ejemplo: Un empleado, un departamento, una cuenta bancaria, una receta, un ingrediente, un artículo, un automóvil, un animal...
Atributos: Los atributos son las características que definen a una entidad.
Una entidad está descrita y se representa por sus características o atributos. Por ejemplo:
Lo que hace única una entidad son los valores específicos de sus atributos, por ejemplo: Pedro Pérez y María González son entidades de tipo Persona.
Relación: Es la asociación entre entidades. Refleja las interacciones existentes entre ellas. Se describe a través de verbos: Vive en, Trabaja en, Está formado por, Realiza,...
Cardinalidad de las relaciones: Cardinalidad es el número de entidades con los cuales otra entidad puede asociarse. Puede ser: Cero a uno, cero a muchos, uno a uno, uno a muchos o muchos a uno, muchos a muchos:
0 si cada instancia de la entidad no está obligada a participar en la relación. 1 si toda instancia de la entidad está obligada a participar en la relación y, además, solamente participa una vez. N o M si cada instancia de la entidad puede participar cualquier número de veces dentro de la relación (también se puede representar como N:M)
Algunos ejemplos de modelos ER y su representación gráfica:
Estos ejemplos son descripciones de situaciones de la vida real. Prácticamente cualquier situación puede representarse de esta manera.
Pero ¿por qué es importante conocer el modelo ER? A partir de este modelo, se crean las estructuras de las bases de datos. Conocer la estructura de la base con la que trabajamos, nos facilita la escritura de consultas con SQL.
Una base de datos está formada principalmente por tablas que a su vez, están formadas por filas y columnas. Puedes imaginar una tabla igual a una hoja de Excel.
La información que contiene una tabla de una base de datos, es información que está relacionada entre sí. Una tabla de una base de datos corresponte a una entidad del modelo ER.
En cuanto a las relaciones del modelo ER, las tratamos según su tipo:
Así, al traducir los ejemplos anteriores de modelos ER, obtenemos los siguientes esquemas de bases de datos:
Cada entidad corresponde a una tabla.
En los 2 primeros casos, la relación se traduce por una columna suplementaria en la tabla hija y que corresponde a la calve primaria (identificador único) de la entidad padre.
En el tercer caso, al tratarse de una relación muchos a muchos, la relación se traduce por una tabla suplementaria, donde están al menos las claves primarias de las 2 entidades relacionadas.
Las bases de datos se utilizan para almacenar y gestionar información. Pero la información no debe almacenarse de cualquier manera. Utilizamos el Modelo Entidad-Relación para plasmar una parte del mundo real y traducirlo en tablas, registros y atributos de una base de datos.
Muchas veces los problemas de performance, corrupción de datos o la dificultad para extraerlos, son consecuencia de un mal diseño de la base. Por eso, es importante tomarse el tiempo de reflexionar y crear un buen modelo desde el comienzo de la aplicación. Existe suficiente documentación y personas que pueden ayudarte en esta tarea.
Tener un esquema de las tablas y relaciones de tu base de datos, te permitirá comprobar el funcionamiento de tu negocio y te facilitará la realización de consultas SQL, ya que sabrás qué tipo de información tienes almacenada, en qué tablas se encuentra y la mejor manera de acceder a ella.
En el próximo artículo, entraremos de lleno en la escritura de consultas con SQL, a partir de preguntas funcionales.