Introducción¶
¿Te imaginas como las grandes compañías o gobiernos almacenan sus datos?. No, no es en un excel gigante en un pendrive.
Es importante saber como modificar o crear valor a través de distintas tablas de datos, por lo que esta clase se centrará en hacer esto, motivando a partir del uso de bases de datos relacionales.
Una Base de Datos es un conjunto de datos almacenados en una computadora (generalmente un servidor, máquina virtual, etc.) y que poseen una estructura tal que sean de fácil acceso.
Base de Datos Relacional¶
Es el tipo de base de datos más ampliamente utilizado, aunque existen otros tipos de bases de datos para fines específicos. Utiliza una estructura tal que es posible identificar y acceder a datos relacionados entre si. Generalmente una base de datos relacional está organizada en tablas.
Las tablas están conformadas de filas y columnas. Cada columna posee un nombre y tiene un tipo de dato específico, mientras que las filas son registros almacenados.
Por ejemplo, la siguiente tabla tiene tres columnas y cuatro registros. En particular, la columna age
tiene tipo INTEGER
y las otras dos tipo STRING
.
¿Este formato de datos te parece familar?
¿Qué es SQL?¶
Sus siglas significan Structured Query Language (Lenguaje de Consulta Estructurada) es un lenguaje de programación utilizado para comunicarse con datos almacenados en un Sistema de Gestión de Bases de Datos Relacionales (Relational Database Management System o RDBMS). Posee una sintaxis muy similar al idioma inglés, con lo cual se hace relativamente fácil de escribir, leer e interpretar.
Hay distintos RDBMS entre los cuales la sintaxis de SQL difiere ligeramente. Los más populares son:
- SQLite
- MySQL / MariaDB
- PostgreSQL
- Oracle DB
- SQL Server
En una empresa de tecnología hay cargos especialmente destinados a todo lo que tenga que ver con bases de datos, por ejemplo: creación, mantención, actualización, obtención de datos, transformación, seguridad y un largo etc.
Los matemáticos en la industria suelen tener cargos como Data Scientist, Data Analyst, Data Statistician, Data X (reemplace X con algo fancy tal de formar un cargo que quede bien en Linkedin), en donde lo importante es otorgar valor a estos datos. Por ende, lo mínimo que deben satisfacer es:
- Entendimiento casi total del modelo de datos (tablas, relaciones, tipos, etc.)
- Seleccionar datos a medida (queries).
Modelo de datos¶
Es la forma en que se organizan los datos. En las bases de datos incluso es posible conocer las relaciones entre tablas. A menudo se presentan gráficamente como en la imagen de abajo (esta será la base de datos que utilizaremos en los ejericios del día de
Esta base de datos se conoce con el nombre de chinook database. La descripción y las imágenes se pueden encontrar aquí.
En la figura anterior, existen algunas columnas especiales con una llave al lado de su nombre. ¿Qué crees que significan?
Las 11 tablas se definen de la siguiente forma (en inglés):
employees
table stores employees data such as employee id, last name, first name, etc. It also has a field named ReportsTo to specify who reports to whom.customers
table stores customers data.invoices
&invoice_items
tables: these two tables store invoice data. Theinvoices
table stores invoice header data and theinvoice_items
table stores the invoice line items data.artists
table stores artists data. It is a simple table that contains only artist id and name.albums
table stores data about a list of tracks. Each album belongs to one artist. However, one artist may have multiple albums.media_types
table stores media types such as MPEG audio file, ACC audio file, etc.genres
table stores music types such as rock, jazz, metal, etc.tracks
table store the data of songs. Each track belongs to one album.playlists
&playlist_track tables
:playlists
table store data about playlists. Each playlist contains a list of tracks. Each track may belong to multiple playlists. The relationship between theplaylists
table andtracks
table is many-to-many. Theplaylist_track
table is used to reflect this relationship.