Tecnología y Coaching para Emprendedores

Curso de MySQL (I): Introducción a las Bases de Datos Relacionales

mysql

Esta es la primera parte de un curso completo de MySQL para principiantes. Crea y administra bases de datos con MySQL, un potente gestor de bases de datos utilizado por sistemas gestores de contenidos como WordPress, Joomla y Drupal y por empresas como, por ejemplo, el grupo Prisa.

Este curso de  MySQL para principiantes consta de tres entregas:

Si te interesa el tema, vuelve mañana y el jueves a por las siguientes entregas de este curso de MySQL para principiantes. Empecemos pues con la introducción a las bases de datos relacionales.

Qué es una base de datos

Una base de datos es un conjunto de datos organizados e interrelacionados que se organizan y relacionan entre sí de manera sistemática, esto es, siguiendo unas determinadas reglas. En muchos sitios veremos que se refieren a una base de datos con la abreviatura BD o DB (del inglés database).

Ejemplos de bases de datos:

  • La base de datos de una tienda online, con los datos de sus clientes, productos, métodos de pago, etc.
  • La base de datos de un foro online, almacenando las conversaciones, usuarios, temas, etc.
  • La base de datos de un blog, con los artículos, categorías, etiquetas, etc.

Objetos de una base de datos

Las bases de datos normalmente presentan 6 tipos de objetos:

  • Tablas
  • Vistas
  • Funciones
  • Índices
  • Procesos almacenados
  • Triggers o disparadores

Veamos cada uno de estos objetos con más detalle.

Tablas

Las tablas son los principales objetos de una base de datos. Representan la estructura física donde se almacenan los datos. Las tablas contienen registros y cada registro contiene campos. Un registro es cada una de las filas de la tabla,mientras que el campo es cada una de las columnas de la tabla.

tabla base datos

Vistas

Son tablas que se forman a partir de otras tablas como resultado de una consulta SQL. Se pueden realizar sobre ellas las mismas operaciones que sobre las tablas, pero es importante recordar que los cambios afectan a las tablas originales, pues una vista es sólo eso, un modo de visualizar los datos de otras tablas.

Funciones

Son operaciones que el sistema gestor de base de datos realiza sobre las mismas. Estas operaciones son necesarias para poder interactuar con la base de datos.

Ejemplo: Operaciones para crear los objetos de la base de datos: tablas, vistas, etc.

Índices

Los índices permiten acceder a los elementos con mayor rapidez a los registros de una tabla de una base de datos. Normalmente se utilizan en aquellos campos que son más frecuentes en las búsquedas.

Ejemplo: Utilizar el número de pasaporte para localizar a un ciudadano europeo en una base de datos interestatal. De todos los datos de la tabla “ciudadano europeo”, escogeríamos el pasaporte como índice.

Procesos almacenados

Se trata de un programa que se almacena en la base de datos y que se ejecuta directamente en el sistema gestor de base de datos.

Ejemplo: buscar  en la base de datos todos los usuarios cuya fecha de nacimiento sea hoy y enviarles una felicitación de cumpleaños

Triggers o disparadores

Es un proceso que se ejecuta únicamente cuando se cumple una condición preestablecida. Los triggers o disparadores pueden crear, editar o borrar tablas en una base de datos.

Ejemplo: Envío de un correo electrónico de bienvenida a un usuario que se acaba de registrar.

Qué es un sistema gestor de bases de datos

Un sistema gestor de bases de datos es una aplicación informática que permite al usuario interactuar con las bases de datos. Es una interfaz que permite al usuario acceder a los datos almacenados en las bases de datos que lo integran. Nos acostumbramos a referir a estos sistemas con las siglas DBMS, que provienen del nombre en inglés: Database Management System.

Modelos de bases de datos

Tenemos diferentes modelos de bases de datos, entre ellos cabe destacar:

Modelo tabla.

Se trata de una serie formada por una tabla bidimensional compuesta  por registros y por campos en la que se recogen los datos.

tabla datos registros campos

Modelo jerárquico.

Se basa en registros organizados en forma de árbol jerárquico inverso.

    • Ventajas: Facilita las relaciones 1:N unidireccionales o padre-hijo, en el que el padre es el elemento superior y el hijo el que queda justo debajo (igual que sucede con CSS). 1:N significa que un padre puede tener muchos hijos, pero un hijo sólo puede tener un padre.
    • Inconvenientes: Es un modelo que implica la duplicidad de registros, lo que dificulta mucho su gestión en casos de bases de datos grandes.

arbol jerarquico unidireccional

Modelo de redes.

Está basado en registros. Un registro puede tener otro registro, es una extensión del modelo anterior, su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres.

datos modelo red

Modelo relacional.

Este es el modelo que se acabó imponiendo y el más popular actualmente. Está basado en el modelo de tablas, pero permitiendo la relación entre las diferentes tablas en base a unas reglas. MySQL se basa en este modelo, por lo que  lo vamos a ver con más detalle. Ahora simplemente especificar estos puntos:

  • Los elementos de una base de datos relacional son capaces de relacionarse sin necesidad de duplicar la información.
  • Utilizan SQL (Structured Query Language) para obtener la información de varias fuentes en una única consulta
  • Utilizan claves para establecer estas relaciones (claves primarias y externas, que veremos enseguida).

modelo relacional base datos

Hay otros modelos, como el transaccional, el multidimensional, o el orientado a objetos. Para más información, os recomiendo este artículo de la Wikipedia sobre Modelos de Bases de Datos.

Conceptos básicos de las bases de datos relacionales

Los principales conceptos de las bases de datos relacionales son:

  • Datos
  • Entidades
  • Claves primarias
  • Claves externas
  • Relaciones
  • Restricciones de integridad referencia
  • Metadatos

A continuación veremos cada uno de ellos con detalle y ejemplos que sirvan para entender los conceptos.

Datos.

Cogiendo la definición de Ramez Elmasri, los datos son hechos conocidos que se pueden registrar y que tienen un significado implícito.

Ejemplos: nombre, apellido, dirección, teléfono.

Entidades.

Una entidad es todo aquello de lo que nos interesa tener unos datos guardados.

Ejemplos: Clientes, personas, productos, trabajadores.

En un modelo de entidad-relación, las relaciones las conforman los atributos y los campos del tema que nos interesa guardar.

modelo relacional relaciones

Claves primarias

Cada entidad tiene que tener  una clave primaria que identifique únicamente al conjunto de datos. Siguiendo con el ejemplo, la entidad Clientes tendrá como clave primaria el código cliente, la entidad facturas el número facturas y la entidad producto el código producto. Es muy importante que la clave primaria sea única y que  jamás se pueda repetir. Así, no pueden haber dos facturas con un mismo número.

claves primarias modelo  relacional

Claves externas

Las claves externas son las claves externas de otra entidad que forman parte de la tabla de la entidad actual. Así, en nuestro ejemplo, en la entidad Factura, el código cliente y el código producto son entidades externas.

claves externas modelo relacional

Relaciones

Las relaciones son lo que dice el término, como se relacionan las entidades entre sí a través de sus campos y atributos. Así, en nuestro ejemplo, la entidad Facturas se relaciona con las entidades Clientes y Productos a través del código cliente y el código producto de cada uno de sus campos respectivamente.

Restricciones de integridad referencial

Las restricciones de integridad referencia son las condiciones que se han de cumplir para que el modelo tenga sentido y sea coherente.

Siguiendo con nuestro ejemplo, para que en las Facturas se pueda poner el código cliente, antes ha de existir el cliente.

Metadatos

Los metadatos son datos que informan sobre los datos presentes en una base de datos.

Ejemplos: longitud de un campo (número de caracteres), tipo de campo (texto, número..), información del campo, etc.

SQL y MySQL

Qué es SQL

SQL (Structured Query Language) es un lenguaje declarativo estándar para la gestión de bases de datos relacionales, que permite recuperar y modificar fácilmente información de interés de las bases de datos mediante consultas.

Actualmente, la mayoría de sistemas gestores de contenidos utilizan SQL, por lo que si se conoce SQL, se puede trabajar con diferentes DBMS como MySQL, Oracle, SQL Server, PostgreSQL, etc.

Características de SQL:

  • Es un lenguaje declarativo de alto nivel que permite una alta productividad, ya que está basado en la gestión de un conjunto de registros.
  • Explota tanto la flexibilidad como la potencia de los sistemas relacionales
  • Se divide en dos sublenguajes:
    • Data Definition Language (DDL): lenguaje para la  creación de objetos de una base de datos
    • Data Manipulation Language (DML): lenguaje para la manipulación y consulta de los datos de una base de datos.

Introducción a MySQL

Qué es MySQL

MySQL es un sistema de base de datos basado en el modelo relacional, multihilo y multiusuario. Multihilo significa que el sistema distribuye automáticamente las tareas a realizar entre los procesadores disponibles, optimizando el rendimiento. El nombre proviene de la unión de My con SQL. My era la hija del cofundador de la empresa originaria de la idea.

Por qué utilizar MySQL:

  • Es código abierto, lo que significa que es gratis de utilizar y que se puede modificar.
  • Su uso está muy extendido: desde sistemas gestores de contenidos como WordPress y Drupal, a grupos de empresas como Prisa.
  • Es muy fácil de aprender y utilizar, al ser muy intuitivo.
  • Funciona muy bien junto con PHP, lo que permite crean páginas web dinámicas con facilidad.

Operaciones básicas con MySQL

Con MySQL se pueden realizar muchos tipos de operaciones. Las operaciones básicas son:

  • Crear bases de datos
  • Crear usuarios, grupos de usuarios y contraseñas.
  • Crear y modificar tablas
  • Eliminar tablas
  • Cargar datos
  • Añadir y modifcar registros en las tablas
  • Consultar y actualizar los registros
  • Eliminar registros
  • Hacer consultas conjuntas a varias tablas en modo vista
  • Operaciones de agrupación, orden, comparación, etc.
  • Operaciones avanzadas, como programación de triggers, procesos almacenados, etc.

Conclusión

En esta primera entrega del Curso de MySQL hemos visto una introducción a las bases de datos, los sistemas gestores de BD, el modelo relacional en que se basa SQL y una breve introducción a MySQL. Mañana publicaremos la segunda entrega, donde aprenderemos a instalar MySQL y los conceptos básicos para poder empezar a crear y manipular bases de datos.

Ir a Instalación y Conceptos Básicos de MySQL.


Comentarios

  • Carlos Vasquez

    Estoy tratando de aprender esta BD, me interesa desarrollar MySQL con Una página web como front, espero sigas publicando, de acuerdo a tu artículo lo ideal es hacerlo con PHP.

  • PPR

    Excelente… Muy bueno… sencillo.. y facil de entender…

    • Sandra

       Genial, vuelve a por más:-)

  • Blacknero

    he pagado un semestre de la univeridad y pase sin entender nada pero acabo de leerme tu post en 15 min y aprendi mas que en 4 meses gracias amigo sos capo

    • Sandra

       Me hace sentir muy feliz saber que el artículo te ha ayudado! Como yo soy autodidacta, intento explicar las cosas haciendo lo complicado lo más fácil posible. De verdad que me alegro mucho de que te haya ayudado el post! Un saludo.

  • Mfonseca

    Hola Sandra, Saludos; te comento que hace algunos años desarrollé y comercialicé algunas aplicaciones contables en dbase, funcionaban perfectamente  bajo DOS, hoy bajo windows no funcionan como es esperado, estoy actualizandolas en VB pero tengo duda sobre la base de datos a emplear si Acces, SQL o MySQL,; la idea es que yo les pueda vender a pequeños comerciantes mis programas pero no se como se maneja el tema de las bases de datos empezando por cuál es la adecuada y si debo adquirir una licencia para cada empresa que me compre  ya que cada uno  manejará en sus instalaciones la aplicación que es multiusuario  y también desconozco  las limitaciones de ellas en cuanto a capacidad, usos, etc.  Agradezco me ayudes en el tema. 

    Manuel Fonseca

    • Sandra

       Hola Manuel, yo sólo conozco MySQL y para aplicaciones comerciales has de comprar una licencia, pero esto ya tienes que mirarlo en su web, porque yo sólo lo uso en temas sin ánimo de lucro y lo desconozco.

  • tkngrafik

    Sandra necesito tu ayuda mira hice una pagina que contiene un schedule o programacion de lo que transmiten y realice dos tablas una donde almacena los programas y otra los horarios entonces realizo la consulta y me sale bien pero el problema es que debo dividir la consulta en 7 partes (7 div cada div un dia) y el asunto que cada div es una tab que diseñe con jquery ui y he estado dandole y dandole y no lo he logrado. Lo que hice y me salio fue hacer 7 select y cada uno lo llame segun su día….pero se que es una locura hacer tantos select mira te paso el codigo:

    CREATE TABLE `datos_programas` (  `id_datos` int(11) NOT NULL AUTO_INCREMENT,  `nom_prg` varchar(50) NOT NULL,  `slg_prg` varchar(150) NOT NULL,  `desc_prg` varchar(300) NOT NULL,  `img_prg` varchar(150) NOT NULL,  `dest_prg` char(2) NOT NULL,  PRIMARY KEY (`id_datos`),  KEY `nom_prg` (`nom_prg`)) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT=’Tabla para la información de los programas’ AUTO_INCREMENT=1 ;

    CREATE TABLE `info_general` (  `id_info` int(11) NOT NULL AUTO_INCREMENT,  `nom_prg` varchar(50) NOT NULL,  `hora_ini` time NOT NULL,  `hora_fin` time NOT NULL,  `dia_prg` varchar(15) NOT NULL,  PRIMARY KEY (`id_info`),  KEY `nom_prg` (`nom_prg`)) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT=’Tabla para los horarios de los programas’ AUTO_INCREMENT=1;

    esta es mis dos tablas ahora pongo el código de la consulta:

    “SELECT d.nom_prg, d.slg_prg, d.desc_prg, d.img_prg, DATE_FORMAT(hora_ini, ‘%h:%i%p’) AS hora_ini, DATE_FORMAT(hora_fin, ‘%h:%i%p’) AS hora_fin, i.dia_prg 
    FROM datos_programas AS d 
    INNER JOIN info_general AS i ON i.nom_prg = d.nom_prg 
    WHERE 1 = i.dia_prg 
    ORDER BY i.hora_ini ASC”;

    con esta consulta (sin el WHERE) me salen todos los datos y los ordena (añadiendole un GROUP BY i.dia_prg) por los días y hora todo bien hasta allí pero como te comentaba arriba no he logrado dividirlo en div diferentes. Te paso el HTML que uso (lo simplificare para la idea basica): 

    //el id “tab1” se repite 7 veces cambiandole el número nada más      // muestro todos los registros de la consulta //aqui va todo el codigo con los llamados de la consulta (no uso tablas)      

    se mas o menos que es con php pero lo he intentado pero no lo logro pero algo que quiero recalcar que es un tabs que no recarga la página al pasar al otro. Ejemplo: Salen 7 días si le doy al Martes debería salir la información sin recargar la pagina y así sucesivamente……..¿Sabes como podría solucionarlo? de antemano muchas gracias……..

  • raul

    si esta muy buena……..justo estoy llevando esto ahora..
    gracias
    me esta sirviendo vastante ….

  • Julio

    Hola solo queria felicitarte por el tutorial esta muy bueno ademas de que me a sido de gran ayuda, muchas gracias