Bases de datos: Alojar, alterar y acceder a datos
Una base de datos en informática es una extensa lista de menciones escritas, detallando objetos y propiedades, pero vinculadas en grupos en común, útiles para organizar y recuperar información mediante aparatos electrónicos que alojen (o permitan insertar) datos.
En otras palabras, una base de datos guarda información de cosas diferentes (en atributos), pero también las relaciones y asociaciones entre esas cosas. A cada una de esas 'cosas' les llamaremos entidades (por que cada cosa tiene de alguna forma una diferencia), cuya principal expresión es la tabla de datos (Grippa, Kuzmichev, 2021).
Para Grippa, Kuzmichev (2021), "Un estudiante y un curso son entidades, mientras que la inscripción es una relación entre un estudiante y un curso. De manera similar, una base de datos de ventas puede almacenar información (en forma de tablas) sobre productos (una tabla), clientes (otra tabla) y ventas (otra tabla). Un producto y un cliente son entidades, y una venta es una relación entre un cliente y un producto".
Por ejemplo, una lista de elementos en común sería las compras de víveres en casa. Pero habría confusión si insertamos allí datos sin relación con la compra de alimentos, como una lista de canciones o el costo de la matrícula de un auto, por ejemplo.
Nuestras madres o abuelas ya podían entender la necesidad de enlistar elementos cuando nos enviaban a un mandado. En esa lista, el nombre de cada elemento junto con su propiedad (un significado determinado) nos daban una guía para realizar la compra:
Cantidad de dinero --> 5$
Pan --> 5 unidades
Galletas --> una funda
Avena --> 1 Kilo
Arroz --> 1 libra
Esa lista de compras (una entidad) tiene algo en común con una entidad de una base de datos: primero, allí hay atributos (cada elemento representa una cosa, y cada cosa tiene un valor). Luego, también hay relaciones de significado entre los datos.
¿Qué diferencia a una entidad de otra?. Los atributos y sus valores son los que diferencian cada entidad, pues los productos de una entidad no serán los mismos que los prouductos de otra.
Cantidad, vínculo y significado.
Todo conjunto de elementos agrupan tres propiedades: cantidad, vínculo y significado. Por ejemplo, si tenemos tres manzanas de diferente color sobre la mesa será fácil vincular sus propiedades (como su color, su costo por unidad, su procedencia, entre otros) a esa cantidad de manzanas.
En otro caso, si tenemos cien manzanas (rojas, verdes, amarillas) las propiedades a determinar serán mayores: ¿Cuántas manzanas verdes hay?, ¿son todas del mismo proveedor?. Imagine ahora cien mil o un millón de manzanas.
Base de datos
En resumen, la expresión 'base de datos' refiere a uno o más conjuntos de datos y propiedades que pueden ser identificados, relacionados entre sí, clasificados o accedidos mediante cómputo, para mostrarlos y evaluarlos. Además de eso, una base de datos 'ayuda a responder preguntas'.
Ejemplo de base de datos
Objeto | Cantidad | Costo unitario | Total
Pan 5 $0.30 $1.50
Gallet 10 $0.15 $1.50
Avena 1 $1.10 $1.10
Total objetos comprados: 16
Pago total: $4.10
Pregunta: ¿Qué productos están entre los rangos de $0.00 a $0.40? Una simple observación indica que la respuesta es 'el pan y las galletas'.
Siglos atrás la captura de datos y su análisis era más complicado. Por ejemplo, durante la toma de datos demográficos en territorio ecuatoriano, iniciado en Quito en 1778 por Juan Josef de Villalengua. Allí debió ser difícil hallar respuestas al tener únicamente cientos de listas escritas a mano. Eso lo encararon los primeros encuestadores cuando registraron en 1842 (a mano y en papel) a 20.000 guayaquileños. Recién en 1982 el censo nacional iniciará su tecnificación (Miño G., 2015, p. 15, 24)
Si bien antiguos pueblos en todo el mundo han recopilado datos con métodos artesanos desde hace siglos, poco a poco fue necesario aplicar nueva tecnología, especialmente al crearse las computadoras como aparatos de cálculo veloz, desde 1945.
Una moderna técnica para alojar y clasificar miles de datos desde computadores es un sistema de código llamado estándart SQL (lenguaje de consulta y búsqueda, en inglés), creado y mejorado desde 1970 por la industria tecnológica estadounidense para administrar datos a mediana y gran escala desde varios sistemas electrónicos.
El lenguaje SQL es ahora un estándart, es decir, es un padre fundamento de otras versiones-hijo de ese lenguaje. A continuación daré una breve introducción visual de los tres conceptos principales que motivaron el estudio de bases de datos desde la electrónica. Pero si desea acceder de inmediato a la sintaxis de una de las versiones-hijo más usadas del estándart SQL (este es, MySQL), ingrese a este vínculo.
Orden y organización de datos
Ejemplos de estructura de datos
ATENCIÓN A continuación, los textos en caja gris solo muestran ejemplos de cada estructura base (jerárquica, en red, relacional). Aún no es código SQL formal.
Base de datos jerárquica
Organizado en forma de árbol, con elementos (o nodos) que funcionan como padres del que derivan hijos, una forma de organización llamada single-parent hierarchy (Beaulieu, 2019). Abajo, un ejemplo únicamente visual de la estructura:
├── Grupos musicales
│ ├── Rock
│ │ ├── Banda A ──| Ciudad: Guayaquil
│ │ ├── Banda B ──| Ciudad: Cuenca
│ │ └── Banda C ──| Ciudad: Manta
| |
│ └── Tropical
│ ├── Banda D ──| etc...
│ ├── Banda E
│ └── Banda F
Base de datos en sistema de red
Organizado en forma de nodos vinculados o relacionados entre sí, con líneas de ida y venida (de acciones, o eventos) entre nodos.
Para identificar un evento, primero se deberá ubicar el nodo correspondiente a ese evento, y de allí recorrer la línea de acción hacia los demás eventos. Cada nodo puede ser accedido desde otros nodos según corresponda el evento a ubicar, similar a "navegar entre nodos" (Beaulieu, 2019).
CLIENTE ACCION FECHA PAIS
Eduardo Compra 2025.01.01 Ecu
Reinicia < ------------------------|
Devolucion 2025.01.05----> Ecu |
Cancela pago 2025.01.06 Ecu ---|
Adrian Compra 2024.05.10 Chi
Entregado 2024.05.10 Chi
Base de datos relacional
Como fue comentado al inicio de esta sección, el aporte de Edgar Frank Codd fue definir los datos en forma de tablas (o entidades, porque refieren a un solo elemento u objeto), relacionando cada entidad con otras entidades.
En otras palabras, lo relacional ocurre de dos modos: cuando un dato tiene un significado con relación a otros datos; y cuando una entidad o tabla puede ser vinculada gracias a uno o más datos desde otra tabla. Por ejemplo, una tabla con los nombres de todos los estudiantes de un aula puede ser vinculada a otra tabla de calificaciones del semestre.
Es decir, una tabla (o entidad) podría estar vinculada a otras varias entidades. Y cada fila de cada tabla también estaría vinculada en otras tablas; ya sea porque ese nodo se repite entre tablas o el dato que contiene es útil en las demás tablas.
El ejemplo de abajo da una idea de cómo es una estructura relacional entre tres tablas:
- Cada tabla es una entidad (los literales A, B, C solo son de ejemplo).
- Cada columna contiene filas.
- Una sola columna CP (clave primaria, en inglés Primary Key o PK) identifica irrepetiblemente cada fila de datos. Las claves primarias son automáticas y van en secuencia numérica. Por ejemplo, en la TABLA A hay dos propietarios con el mismo nombre y en la misma ciudad. Por lo que una única clave los diferencia.
- Más de una columna de claves primarias en una sola tabla se denominan claves compuestas (composite key). Las claves compuestas permiten identificar más de un dato que necesariamente aparecerá más de una vez en una misma tabla. Por ejemplo, en la TABLA A las columnas CP_TIENDA y CP_CIUDAD permiten identificar a un solo propietario, pero también a una sola ciudad. Incluso, más de una ciudad está presente con su propia clave (como en el caso de 01Gye).
- Finalmente, podremos insertar una columna CP (clave primaria) dentro de otra tabla o entidad y así crear uniones entre tablas. Cuando una CP está insertada en otra tabla, entonces esa columna CP se denomina clave foránea o externa. Por ejemplo, en la TABLA C, la columna [CP_TIENDA_TABLA_A] es clave foránea (es decir, viene de) la TABLA A.
COLUMNA A COLUMNA B
Fila 1 ------- Fila 1...
Fila 2 ------- Fila 2...
CP: Clave primaria
--------------------------------
TABLA (A)
--------------------------------
CP_TIENDA CP_CIUDAD PROPIETARIO NOMBRE
01 01Gye Ana Tienda Rosita
02 01Gye Ana Tienda Anita
03 03Cue Juancito Tienda Rock&Roll
--------------------------------
TABLA (B)
--------------------------------
CP FRUTA CP_PAIS COLOR
10 Banano 11Ecu Amarillo
11 Manzana 11Chi Verde
--------------------------------
TABLA (C)
--------------------------------
CP [CP_TIENDA_TABLA_A] SALDO
22 01 $100
23 02 $135
En el ejemplo dado arriba vemos que las claves primarias (CP, como CP_TIENDA en la TABLA A) se convierten en claves foráneas (CF, como [CP_TIENDA_TABLA_A] en la TABLA C) cuando las primarias se repiten (o redundan) en otra tabla. ¿Significa eso que podemos repetir o redundar cualquier columna de otras tablas?
La respuesta a eso es: únicamente (y en caso de ser necesario) podremos repetir (o insertar en otra tabla) la columna que contengan únicamente claves primarias (CP). Puesto que una sola clave primaria es única y representa una única fila de datos (que a lo largo del tiempo podrán cambiar).
En el ejemplo de abajo, la columna de claves primarias en TABLA_FELIZCUMPLE identifican a dos personas diferentes, con igual fecha de cumpleaños. Así mismo, en la TABLA_REGALITOS será útil repetir (o redundar) la columna de claves primarias de la primera tabla para identificar externamente el regalo de cada Juan.
-----------------
TABLA_FELIZCUMPLE
-----------------
CP NOMBRE APELLIDO FECHA
01 Juan Aguirre 10Enero
02 Juan Chalca 10Enero
-----------------
TABLA_REGALITOS
-----------------
CP [CP_FELIZCUMPLE] REGALO
03 01 Un gato
04 02 Ir al cine
Base de datos con estructura no relacional o NoSQL
Es un método diferente a la estructura relacional entre datos; es decir, al vínculo entre tablas de datos y claves primarias). La estrucura no relacional (también llamada NoSQL) es una alternativa a la estructura relacional.
La estructura NoSQL omite la conexión entre tablas, y en caso que esos datos requieran ampliar su alojamiento, los datos se distribuirán entre varios alojamientos de cómputo (llamados servidores). También permite usar más de una estructura de datos (SQL solo permite la relacional).
Las bases de datos con estructura NoSQL permiten, además de guardar datos mediante columnas o tablas, hacerlo también en columnas clave-valor (por ejemplo, 'nombre: Javier'; 'apellido': 'Andrade'
), o mediante arreglos o matrices (por ejemplo, colores [azul, rojo, amarillo, ...]
) (IBM, 2022).
Uno de los lenguajes usados para crear bases de datos NoSQL (no relacionales) es JSON (notación de objeto de JavaScript, en español, sintaxis de ejemplo, abajo). Para una revisión amplia, he creado en la siguiente sección una introducción a JSON, su sintaxis y correcta aplicación.
Estructura de datos desde la sintaxis del lenguaje JSON
{
"comentario_general": "Abre un arreglo",
"equipos": [
{
"comentario": "Abre un objeto: Equipos de la costa",
"Emelec": "campeón",
"Barcelona": "vice",
"GuayaquilCity": "tercer lugar"
},
{
"comentario": "Abre un objeto: Equipos de la sierra",
"LigaQ": "campeón",
"Aucas": "vice",
"ElNacional": "tercer lugar"
}
]
}
Finalmente, softwares para gestionar gratuitamente bases de datos NoSQL están Amazon Dynamo, Apache Cassandra (requiere Docker); y de pago, MongoDB. En un futuro haré una breve reseña de uno de ellos.
Siguiento con la estructura relacional de SQL, a su sintaxis inicial se lo considera un estándart (es decir, un código base fundamento que alimentará otras versiones mejoradas). Después de la década de 1970 el estándart SQL alimentó y derivó nuevos enfoques en pos de organizar enormes cantidades de datos y extraer de ellos información útil.
Es por esa razón que hoy en día existen versiones SQL adaptadas para diversas soluciones, pero nutridas del estándart SQL. Algunas de esas versiones SQL son:
- SQL Server: Software comercial para extensos conjuntos de datos empresariales.
- SQLite: Versión de código abierto que simplifica el alojamiento de datos, no exige un servidor activo (usa el propio aparato de cómputo para alojar los datos), pero no permite consulta complejas. Muy usado en móviles y otros electrónicos.
- PostgreSQL: De código abierto, muy usado en análisis de datos científicos y de finanzas.
- MySQL: Popular gracias a su fácil instalación, conjunción con el lenguaje PHP y por sus diferentes versiones para sistemas operativos no actualizados. Será la versión usada para las siguientes explicaciones.
- MariaDB: De código abierto, es una versión más avanzada y no comercial de MySQL. No instala en equipos iMac.
- Oracle Database: Para conjuntos de datos extensos que exigen fuerte rendimiento y seguridades.
De aquí en adelante se revisará con más detalle una versión del estándart SQL: MySQL.
BIBLIOGRAFÍA
Vinicius M. Grippa, Sergey Kuzmichev (2021). Learning MySQL, 2da. ed.Beaulieu, Alan (2019). Learning SQL, 3ra Ed., O’Reilly Media.
Miño G., Wilson; INEC (2015). Una mirada histórica a las estadísticas del Ecuador
Cotton, Richie (2024). 50 Years of SQL with Don Chamberlin, Computer Scientist and Co-Inventor of SQL
IBM (2022). Explore key differences between SQL and NoSQL databases and learn which type of database is best for various use cases.