Aprendiendo PHP, parte 22: Introducción a MySQL, tablas

16 Dic

Hasta ahora hemos visto en varias ocasiones la necesidad de trabajar con datos, con información, que al carecer de una base de datos hemos simulado mediante otro tipo de información como arrays. Sin embargo una aplicación web moderna, ya sea un foro, un blog, un sitio de compras online, se alimenta de información extraída de una base de datos.

Si nunca has trabajado con base de datos, no deberías preocuparte porque todo lo que pienso publicar a partir de ahora, estará orientado a principiantes. Pero si en cambio tenés amplios conocimientos de base de datos tal vez te aburras un poco al principio, podés saltear las siguientes publicaciones hasta retomar con PHP.

MySQL es un tipo de base de datos. Así como existen distintos lenguajes de programación como PHP, Python, Java, Ruby, etc; también existen distintas bases de datos, ya se MySQL, Oracle, Postgresql, Sqlite, etc. La razón por la cual decidí utilizar MySQL, es porque si bien PHP puede conectarse a distintas bases de datos, MySQL es con la que mejor relación tiene, y con la que se suelen utilizar más los desarrollos en este lenguaje.

Tablas

Una base de datos SQL como MySQL, está formado por tablas. Estas tablas nos permiten almacenar información, dependiendo de qué queramos guardar, tendremos una tabla para cada caso. Con esto me refiero a que yo puede tener una tabla para guardar usuarios, una para guardar países, comentarios, ventas y cualquier cosa que se te pueda ocurrir.

A su vez estas tablas tendrán atributos, que serán los distintos valores que tendrá cada registro. Por ejemplo yo puedo crear una tabla para guardar usuarios con cuatro atributos; nombre, apellido, email y contraseña, dependiendo obviamente de los tipos de datos que sean precisos guardar, de lo que necesite la aplicación en sí.

Como se ve en el ejemplo tenemos una tabla de nombre usuario, que tiene cuatro atributos: nombre, apellido, email y contrasena. Con respecto a la palabra VARCHAR(50), es el tipo de datos, significa que será una cadena y soportará hasta 50 caracteres, pero más adelante veremos tipos de datos. La razón de por qué el atributo es ‘contrasena’ y no ‘contraseña’ se debe a que MySQL sólo soporta caracteres alfanuméricos y guión bajo en los nombres de sus atributos, el caracter especial ‘ñ’ no está permitido.

Entonces teniendo nuestra primer tabla, podemos simular que empezamos a insertar registros dentro de la misma:

nombre apellido email contrasena
Juan Pérez juan@mail.com 1234
Susana Giménez susana@mail.com 1234
Ricardo Caruso Lombardi caruso@mail.com 1234
Mariana Rodríguez mariana@mail.com 1234

Como se ve en el ejemplo, hemos guardado una pequeña lista con cuatro usuarios, cada uno de estos se llamará registro. Con respecto a los valores, obviamente será acordes a lo que corresponde cada uno: un nombre, un apellido, una dirección de email y la contraseña. En realidad es una base de datos, en las tablas que guardan usuarios, las contraseña no suelen ser visible la cadena original, ya que estás pasan primero por un proceso de encriptado o hasheo, pero eso lo veremos más adelante.

Clave primaria

En el ejemplo anterior nosotros simplemente teníamos una tabla con cuatro registros, con cuatro usuarios. El asunto ahora es que cada uno de esos registros, luego de ser insertados serán servido a nuestra aplicación, para realizar distintas operaciones. Para recuperar sus valores, para modificarlos, o incluso para eliminarlos. Así que cada uno de esos registros debería tener un identificador, algo que lo diferencie del resto, para poder acceder fácilmente al mismo.

Por ejemplo, el primer registro se trata de un usuario llamado ‘Juan Pérez’, que teniendo en cuenta que en nuestro idioma castellano ‘Juan Pérez’ es un nombre y apellido muy común, seguramente tendremos otros usuarios con el mismo nombre y apellido, entonces ¿Cómo saber cuál es el que estamos buscando? Otra alternativa podría ser su dirección de email, ya que por lógica ésta debería ser única e irrepetible, el problema es que si este usuario modifica su email le perderíamos el rastro. Deberíamos tener algo que lo identifique desde que el registro es insertado en la tabla. Aquí entra en juego lo que se conoce como clave primaria o primary key.

Una clave primaria, es el identificador, el id de un registro. Este dato es único e irrepetible, y por lógica no debería ser modificado nunca.

Ahora que nuestra tabla ha sido modificada podemos pasar a mostrar cómo quedarían los registros que antes simulamos, con el nuevo cambio:

usuario_id nombre apellido email contrasena
1 Juan Pérez juan@mail.com 1234
2 Susana Giménez susana@mail.com 1234
3 Ricardo Caruso Lombardi caruso@mail.com 1234
4 Mariana Rodríguez mariana@mail.com 1234

De este modo nuestra aplicación tendrá una forma de referirse a un registro específico, por su id, su clave primaria. No importa cómo se llame el usuario, si Juan Pérez, o cualquier otro nombre, ese registro será el registro 1 de la tabla usuario, sin más.

Saludos!

Anterior: Aprendiendo PHP, parte 21: Sesiones

Siguiente: Aprendiendo PHP, parte 23: Introducción a MySQL, tablas y relaciones

Redes sociables

    2 thoughts on “Aprendiendo PHP, parte 22: Introducción a MySQL, tablas

    1. Me gusto mucho la forma en que explicas las cosas, desde mi punto de vista el enfoque que le das es para los que aprendemos muy despacio o los que se nos hace muy dificil de entender el mundo de la programacion. Gracias por el aporte excelente, y sigue adelante.

      • Marco, gracias a vos por escribir. Con respecto a lo que decís, yo pienso que nadie nació sabiendo, no te preocupes, a todos se nos hace difícil aprender algunas cosas al principio, además así es la programación, es un aprendizaje constante, que no termina nunca.

        Un saludo, y que tengas buen finde.

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *


    *