- ¿Qué es un sistema de gestión de base de datos?
- Relaciones dentro de DB
- Lenguaje SQL
- Controlador
- ¿Qué debe saber un desarrollador principiante?
Imaginemos que queremos crear un sitio con anuncios y darle a nuestros usuarios la opción de crear los suyos. Ya sabemos cómo mostrar una página con un formulario para agregar un anuncio utilizando un motor de plantillas. Pero, ¿qué sucede después de que los datos del formulario llegan al servidor? ¿Dónde los almacenamos? En esta lección, abordaremos este tema.
¿Qué es un sistema de gestión de base de datos?
La opción más sencilla que se nos puede ocurrir son los archivos 📁. Podemos registrar todos los eventos en un archivo y leerlos al mostrarlos. Sin embargo, este enfoque tiene muchas desventajas y resulta muy incómodo para trabajar.
La manera correcta de manejar los datos es a través de una base de datos (BD) 🗃️. Aunque también se almacenan en archivos, este proceso está 100% controlado por un sistema de gestión de bases de datos (SGDB). Es importante instalarlo antes de comenzar a trabajar.
En el ámbito web, los dos sistemas más populares son PostgreSQL y MySQL. La configuración e instalación de un SGDB no es tan sencilla como instalar un intérprete, así que no entraremos en esos detalles aquí. Sin embargo, puedes encontrar muchas guías en línea para instalar un SGDB en tu sistema operativo.
Los SGDB funcionan como programas independientes y pueden gestionar múltiples bases de datos 🗄️. Por lo general, un sitio web utiliza una única base de datos, pero es posible que todas las bases de datos de diferentes sitios se almacenen en un solo SGDB. Puedes interactuar con una base de datos específica de dos maneras:
- Iniciar la shell de comandos del SGDB, que permite trabajar de forma interactiva con los comandos, escribir y leer datos, agregar un usuario al sistema, y así sucesivamente. Al conectarte o después de hacerlo, debes seleccionar obligatoriamente la base de datos con la que deseas interactuar:
- Conéctate al SGDB desde tu programa utilizando un controlador (driver): esta es una biblioteca que se comunica con el SGDB. Tiene una interfaz relativamente sencilla para realizar consultas y obtener resultados. Más adelante veremos cómo funciona este enfoque en la práctica.
Relaciones dentro de DB
PostgreSQL y MySQL pertenecen a la clase de bases de datos relacionales porque la operación de tales SGDB está basada en álgebra relacional. Sin sumergirnos en la maraña teórica, diremos que los datos en las bases de datos relacionales se almacenan en forma de tablas. Este formato te resultará familiar si has trabajado con datos tabulares en Microsoft Office o Google Spreadsheets.
Cada tabla en tal base de datos tiene su nombre y un conjunto de columnas nombradas. Por lo general se denominan campos a las columnas de la base de datos. Por ejemplo, una tabla con anuncios se puede llamar ads y contener los siguientes datos:
| id | teléfono | título |
|---|---|---|
| 1 | 132453 | Vendo un carro |
| 2 | 342341 | Quiero comprar un yate |
| 3 | 908324 | Alquilaré una tienda de campaña |
Cada fila de la tabla es independiente de las demás y representa un conjunto de datos completo, en nuestro caso, un solo anuncio. Las líneas son comúnmente conocidas como registros.
Fíjate en el campo id. Se introduce para identificar una fila específica. Los SGDB contienen mecanismos que permiten generar un identificador automáticamente cuando se insertan datos en la base. Por lo general, los identificadores se usan en las URL de las páginas. Por ejemplo, esta URL http://mi_olx.com/ads/53 mostrará el anuncio con id igual a 53.
Lenguaje SQL
Cualquier manipulación con tablas en bases de datos relacionales se realiza con el lenguaje de consulta SQL (Structured Query Language). Al abrir el shell de comandos del SGDB, puedes intentar ejecutar las siguientes consultas. Tomemos este ejemplo y asumamos que la tabla ads ya ha sido creada:
SELECT * FROM ads; -- seleccione todos los registros
SELECT title FROM ads WHERE id = 4; -- seleccione el título para el registro con id igual a 4
SELECT telephone FROM ads ORDER BY id DESC; -- seleccione todos los teléfonos ordenándolos
-- por el campo id en orden inverso
INSERT INTO ads (telephone, title) VALUES ("392503", "Compraré un elefante");
-- inserta en la tabla ads un nuevo registro
DELETE FROM ads WHERE id = 5; -- borra el registro con id igual a 5
Como puedes ver, SQL es un texto simple, bastante comprensible incluso sin explicaciones adicionales. Por supuesto, tendrás que esforzarte mucho con las consultas de SQL complejas, pero en la mayoría de los casos SQL resulta bastante simple.
Controlador
Si podemos ejecutar consultas SQL directamente dentro de la shell de la base de datos, no podemos hacerlo desde el código. Necesitas un controlador que enviará tu SQL a la base de datos y devolverá la respuesta. Pero antes de enviar la consulta, necesitas introducir el nombre de usuario y la contraseña correctos para conectarte a la base de datos.
Los SGDB son sistemas multiusuario con un sistema de permisos avanzado, por lo que la seguridad a la hora de trabajar con la base de datos es muy importante. Los datos son lo más valioso que hay en una aplicación. Si se pierden los datos, el negocio puede cesar.
Tomemos como ejemplo el controlador postgres (paquete de terceros). Te permite trabajar con PostgreSQL de la siguiente manera:
from postgres import Postgres
db = Postgres("postgres://user@localhost/test")
db.run("CREATE TABLE foo (bar text, baz int)")
db.run("INSERT INTO foo VALUES ('buz', 42)")
db.run("INSERT INTO foo VALUES ('bit', 537)")
db.one("SELECT * FROM foo WHERE bar='buz'")
# Record(bar='buz', baz=42)
db.all("SELECT * FROM foo ORDER BY bar")
# [Record(bar='bit', baz=537), Record(bar='buz', baz=42)]
db.all("SELECT baz FROM foo ORDER BY bar")
# [537, 42]
¿Qué debe saber un desarrollador principiante?
No te desanimes si no entiendes todo lo que menciono aquí. Reconocer que dar el salto a la programación puede ser complicado es un buen primer paso. Un desarrollador principiante necesita una base sólida. Aquí te dejo algunos temas clave que deberías estudiar para escribir código sin problemas:
✔️ Bases de datos: aprende a instalarlas y configurarlas, gestionar usuarios y trabajar con sockets y redes.
✔️ Sistemas operativos y redes: familiarízate con sus conceptos básicos.
✔️ SQL: comprende la teoría de conjuntos y cómo funciona este lenguaje.
✔️ Normalización y desnormalización: estudia las formas normales, claves e índices.
✔️ Serialización y deserialización: entiende cómo convertir datos en formatos específicos.
✔️ Idempotencia: aprende sobre operaciones que producen el mismo resultado sin importar cuántas veces se realicen.
✔️ Fluent Interface: descubre cómo mejorar la legibilidad del código con este patrón de diseño.
✔️ Iterador: conoce cómo recorrer colecciones de manera eficiente.
✔️ Seguridad: infórmate sobre escape, inyección SQL y otros aspectos relacionados.
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.