Las bases de datos son un universo aparte, cada tecnología lo es en cierto modo, ser un experto en cualquier tecnología requiere muchos años de experiencia y dedicación.
Solo para mencionarlo, tenemos por ejemplo bases de datos Relacionales (RDBMS – Relational Database Management System como Oracle o MySQL) y otras tipo (NoSQL – Not only SQL «como MongoDB») que son bastante distintas, lo que tienen en común es el concepto de almacenar información y permitirnos acceder a ella usando determinados métodos.
Las bases de datos tienen muchos conceptos tales como tablas, relaciones, vistas, tipos de almacenamiento, foreign keys, motor y demás, seguramente habremos escuchado de algunos de ellos pero no entraremos mucho en detalle aún.
Como las bases de datos son un mundo tan grande y complejo, vamos a ceñirnos en las definiciones básicas que serán necesarias para comprender cómo funcionan (aquellas RDBMS), sus características y la forma en que suelen trabajar (generalidades), claramente teniendo como punto de referencia al producto MySQL que pertenecía a MySQL AB y posteriormente fue comprado por Sun MicroSystems, que finalmente terminó en las manos de Oracle, actual dueño del producto.
MySQL es un motor que en comparación a Oracle DB es muy simple, su arquitectura es menos elaborada pero es eficiente, fácil y rápido para algunos proyectos web, además de ser OpenSource (no confundir con «gratis»). Por eso, esta guía debe tomarse con «pinzas» ya que si bien se abarca una generalidad conceptual, el funcionamiento interno de las bases puede variar muchísimo.
En el gráfico podemos apreciar el flujo de una aplicación web (PHP), que envía la solicitud al servidor web, el cual gracias al módulo (PHP-MYSQL) se comunica con la base de datos y ejecuta operaciones que han sido escritas en lenguaje PHP/SQL, al final de la solicitud, MySQL recibirá únicamente lenguaje SQL.
Tablas: En la tabla azul del gráfico, se pretende mostrar como está constituida la base, es decir, cómo se va a organizar la información, verán varias tablas cada una con una función, almacenar usuarios o contraseñas, artículos (post/publicaciones) o los grupos a los que pertenece un usuario.
Relaciones: Las relaciones (en el ejemplo del gráfico) nos llevarían lógicamente a pensar que cada usuario tenga una única contraseña, esto sería una relación UNO A UNO. «Cada usuario con su contraseña»
Sin embargo el usuario puede escribir muchos artículos, lo cual será una relación UNO A MUCHOS «Un usuario puede ser autor de varios artículos».
También puede existir una relación MUCHOS A MUCHOS, donde en nuestro ejemplo, un usuario puede tener varios grupos y un grupo puede tener varios usuarios. «Podemos tener un grupo Administradores que tiene muchos usuarios y también un administrador podría tener más de un grupo».
El lenguaje SQL
Algo importante para entender de una base de datos, además de almacenar información, es que todas las operaciones se realizan a través del lenguaje utilizado para ello que es S.Q.L (Structured Query Language) «lenguaje de consultas estructuradas».
A su vez, SQL podría clasificarse según las sentencias:
- Data Retrieval: SELECT
- Consultar datos de la base
- Data Manipulation Language (DML): INSERT, UPDATE, DELETE, MERGE
- Manipular los datos de la base
- Data Definition Language (DDL): CREATE, ALTER, DROP (table), DROP (database), RENAME (table), TRUNCATE
- Manipular la base de datos o sus tablas
- Data Control Language (DCL): GRANT, REVOKE
- Permisos a la base de datos y su contenido (tablas)
- Transaction Control (Oracle DB, no MySQL): COMMIT, ROLLBACK, SAVEPOINT.
Como podrán ver, son muchas las cosas del lenguaje SQL que deberemos conocer para manipularlo completamente, pero aquí las nombramos para irnos familiarizando con ellas.
Las tareas básicas en MySQL
Generalmente, desde nuestra aplicación (PHP, Python, PERL…) nos valdremos de el módulo php-mysql del servidor web (Apache HTTP Server por ejemplo) para comunicar a la aplicación con la base. Este módulo tiene el driver (controlador) para comunicarse con la base de datos.
Usualmente, MySQL escucha en el puerto 3306, hay tres formas muy conocidas para comunicarnos con la base:
- Cliente de MySQL
- *Squirrel SQL (aplicación java / Opensource) 🙂
- TOAD (aplicación windows / paga)
- *phpmyadmin (web, ya viene incluído en XAMPP / Opensource) 🙂
- CLI (Command Line Interface)
- *Es una interfaz de línea de comandos (una pantalla negra, similar a una terminal en Linux o a un CMD en Windows)
- Desde la aplicación web
- *Podemos interactuar con la base a través de un lenguaje de programación usando SQL, el servidor web y el módulo lenguaje-de-programación/mysql (Ej: php-mysql).
*Trabajaremos con algunas de estas herramientas más adelante en el curso.
En Resumen
Entonces, una base de datos, no solo nos permite almacenar información sino también interactuar con la misma borrarla, editarla, actualizarla bien sea a través de una aplicación web o un programa tipo cliente, sino que también tiene una estructura interna «un orden» para la información y un funcionamiento específico.
Debido a la complejidad de los conceptos, tal vez nos será más sencillo verlo en la práctica cuando lleguemos al Laboratorio 02 de este curso y a través de ejemplos comprender más claramente cómo trabajar con bases de datos.