Cuando estaba pensando en cómo iba a escribir mi primera publicación de la categoría “Base de datos”, lo primero que se me ocurrió fue hablar de plataformas web en donde se pudiese practicar, sin necesidad de descargar software, lenguaje SQL. La idea no estaba mal dado que son herramientas súper útiles, además de gratuitas, pero sentí que - de un sólo golpe - se podía aportar mucho más a la causa sin necesidad de explayarse tanto. Podrían entrar profes que perfectamente no conozcan siquiera el concepto de "base de datos". Por ende, además de compartir estas plataformas que mencioné (final del post), opté por estructurar el contenido así:
¿Qué es una base de datos (BD)?
¿Cómo se diseña una BD? (Diagrama Entidad-Relación)
¿Cómo se construye una BD? (SQL - DDL)
¿Cómo se manipula una BD? (SQL - DML)
Actividades.
» ¿Qué es una base de datos?
Analizaré y subrayaré partes clave de la definición que nos da la empresa "Oracle" (empresa líder en este rubro):
"Una base de datos es una recopilación organizada de información o datos estructurados, que normalmente se almacena de forma electrónica en un sistema informático. Normalmente, una base de datos está controlada por un "sistema de gestión de bases de datos (DBMS)". En conjunto, los datos y el DBMS, junto con las aplicaciones asociadas a ellos, reciben el nombre de sistema de bases de datos, abreviado normalmente a simplemente base de datos.
Los datos de los tipos más comunes de bases de datos en funcionamiento actualmente se suelen utilizar como estructuras de filas y columnas en una serie de tablas para aumentar la eficacia del procesamiento y la consulta de datos. Así, se puede acceder, gestionar, modificar, actualizar, controlar y organizar fácilmente los datos. La mayoría de las bases de datos utilizan un lenguaje de consulta estructurada (SQL) para escribir y consultar datos."
Entonces, sobre una "base de datos" podríamos inferir que:
Es una recopilación organizada de datos o información.
Sus datos respetan cierta "estructura": Se distribuyen en tablas, filas y columnas.
Hay un sistema que sirve para gestionar la base de datos llamado "DBMS".
Organizar sus datos en tablas, filas y columnas mejora la eficacia de procesamiento y consulta de la información.
Podemos escribir, acceder, consultar y manipular sus datos. Aparentemente, a través de un lenguaje llamado "SQL".
Habiendo dicho esto, estamos listos para pasar al próximo apartado. De todas formas, déjenme recomendarles un video muy divertido antes.
» ¿Cómo se diseña una BD? (Diagrama Entidad-Relación)
Lo primero que precisa una base de datos, antes de ser creada, es diseñarse. No podemos empezar a guardar información en ella sin antes saber cómo organizaremos la misma. ¿Cuántas y qué tablas tendrá la base de datos? ¿Cómo se relacionarán mis tablas entre sí para que la recuperación de la información sea óptima? ¿Cuáles y cuántas columnas tendrá cada tabla? Todo esto se resuelve, en gran parte, con un un concepto clave: Diagrama Entidad-Relación (DER).
- Diagrama Entidad-Relación (DER).
Un DER (Diagrama de Entidad-Relación) es un tipo de diagrama que se utiliza para diseñar una "base de datos relacional" (los tipos de BD más comunes). Cuando hablamos de "relacional", estamos diciendo que los datos de la base de datos guardan una relación entre sí y que no son cosas aisladas que nada tienen que ver unos con los otros.
En un DER, cada rectángulo representa una "entidad", que es una definición de un objeto o fenómeno que se desea almacenar en la base de datos (las entidades son las que después terminan convirtiéndose en las tablas de la BD). Cada entidad se describe con sus atributos o propiedades (que son las que después terminan convirtiéndose en las columnas de dicha tabla), que son características que se desean almacenar de cada uno de los ejemplares pertenecientes a dicha entidad y que además se utilizan para poder identificarlos. Por ejemplo, en una base de datos de clientes de una empresa, una entidad podría ser el "cliente" y sus atributos podrían incluir su nombre, dirección, teléfono y número de cliente.
Además de las entidades, el diagrama de entidad-relación también incluye "relaciones" o la forma en que las entidades (futuras tablas de la BD) están relacionadas entre sí. Por ejemplo, en una base de datos de clientes, un cliente - guardado en la tabla "Clientes" - podría estar relacionado con una orden de compra - guardada en la tabla "Ordenes" - a través de una relación de "uno a muchos". Esto significa que un cliente puede tener varias compras, pero que una orden de compra (identificada con un n° de orden) sólo puede pertenecer a un cliente (identificado con un código de cliente). Adentrémonos un poquito más:
¿Se va entendiendo más o menos qué es una base de datos y todo el proceso que implica diseñar una? Miren ahora que interesante esto. La imagen debajo de este párrafo corresponde a un "modelo relacional" diseñado directamente desde "MySQL Workbench" (un software gestor de base de datos). Tenemos "entidades", "atributos", "relaciones"; e incluso tenemos definido el tipo de dato que corresponde a cada atributo de cada entidad (número entero, cadena de caracteres, etc). Lo interesante de diseñar el modelo relacional directamente desde el sistema gestor de base de datos (DMBS) es que, muy posiblemente, el software tenga una opción que nos permita convertir el "modelo relacional" a la base de datos misma; creándose automáticamente todas las tablas, columnas y relaciones en base a la interpretación que el software DMBS hace de dicho modelo.
» ¿Cómo se construye una BD? (SQL - DDL)
El SQL, lenguaje clave en el mundo de las bases de datos, tiene - por decirlo de alguna manera - dos grandes áreas: "DDL" y "DML" (también existe el DCL y el TML, pero de momento no serán necesarios). DDL (data definition lenguage o lenguaje de definición de datos) hace referencia a aquellas sentencias de código SQL que son utilizadas para la creación de una base de datos y todos sus componentes: tablas, índices, relaciones, disparadores (triggers), procedimientos almacenados, etc. En pocas palabras, dentro del "DDL" se encuentran todas las instrucciones que nos permiten armar y definir la estructura de nuestra base de datos. Veamos un ejemplo:
Lo que está haciendo el código SQL de la imagen de arriba es CREAR una TABLA llamada "users" (usuarios) con las siguientes columnas:
Id (número de identificación); al cual - además - se le esta diciendo que será de tipo INTEGER (número entero), PRIMARY KEY (clave de identificación primaria y única entre cada usuario), NOT NULL (para que no admita valores nulos) y AUTO_INCREMENT (para que ese número de identificación se auto-incremente cada vez que se genera y guarda un nuevo usuario).
Email; tipo VARCHAR (255) (osea, una cadena de caracteres con un máximo de 255 espacios disponibles) y NOT NULL (para que no admita valores nulos).
Password (contraseña); de tipo VARCHAR (255) y NOT NULL.
Phone_number (número de teléfono); de tipo VARCHAR (15) y admitiendo valores nulos (dado que el NOT NULL no fue especificado).
Created ("creado"); de tipo TIMESTAMP ("Marca de tiempo"), NOT NULL y colocando - por defecto - la fecha y hora del sistema en ese preciso momento en el que el usuario es creado (función "NOW ()").
¿Qué interesante, no? Ahora bien, ¿El DDL sirve sólo para CREAR cosas (relaciones, tablas, columnas, procedimientos, etc)? No. También sirve para ALTERARLAS, ELIMINARLAS, "VACIARLAS" (borrar sólo los datos que tienen dentro) y RENOMBRARLAS. DDL constituye todo lo que tiene que ver con la creación y manipulación de la estructura de la base de datos.
Cuando antes mencioné que los sistemas gestores de base de datos (ej. MySQL Workbench) tienen una herramienta "mágica" que sirve para convertir el modelo relacional en la base de datos en sí misma; se trata simplemente de una funcionalidad incorporada en el DMBS que logra interpretar y convertir el modelo relacional - diseñado por nosotros - en sentencias de código DDL que luego son auto-ejecutadas (dando como resultado la base de datos).
» ¿Cómo se manipula una BD? (SQL - DML)
Ya teniendo toda la estructura de la base de datos creada (tablas, relaciones entre ellas, columnas definidas para cada tabla, tipo de dato que guardará cada columna, etc.) llegó la hora de hablar del "DML". El DML (Data Manipulation Languaje o "Lenguaje de manipulación de datos") corresponde a aquellas sentencias SQL utilizadas para insertar, borrar, modificar y consultar los datos de una BD.
» Veamos algunos ejemplos:
a) INSERTANDO datos dentro de ("INTO") una tabla llamada "customers" (clientes), especificando el orden de las columnas y qué valor (VALUE) debe "caer" en cada una de ellas.
b) ACTUALIZANDO datos de la columna "store_state" (estado/provincia de la tienda) de la tabla "customers" (clientes); diciéndole que coloque el valor 'DL' (que seguramente hace referencia a la ciudad de Dallas) en todos los registros que figuren como 'NY' (Nueva York). ¿Se animan a pensar un escenario de la vida real en donde tendría sentido hacer este cambio? ¿Cuál podría ser una razón para que todos los clientes que tenían asociada la sucursal de Nueva York, ahora queden asociados con la sucursal de Dallas?
c) SELECCIONANDO todos los registros y todas las columnas ("*") de la tabla "customers" (clientes).
d) BORRANDO de la tabla "customers" (clientes) todos aquellos registros DONDE ("where") el estado/provincia de la tienda sea "MH" (abreviación de "Marshall Islands") Y ("and") el código de cliente sea "1001". ¿Se animan a pensar un escenario de la vida real en donde tendría sentido tomar esta acción?
» Actividades
En base a lo leído, responder las siguientes preguntas:
¿Qué es una base de datos?
¿Qué es un DBMS o sistema gestor de base de datos?
¿Cómo se diseña una base de datos?
¿Cómo se construye una base de datos?
¿Cómo se manipula una base de datos?
» Extra:
~ Marcos.
Comentarios