Skip to the content.

Bases de Datos para Ciencia de Datos

Este website contiene el material para la materia Bases de Datos para Ciencia de Datos.

Rules of the game

Qué texto vamos a usar?

La mayoría del curso está basado en Learning SQL de A. Bailieau de editorial O'Reilly, que tiene bastantes libros técnicos muy interesantes.

Cómo vamos a calificar?

  1. 1er Parcial individual: 60%
  2. 1era entrega proyecto final en equipo: 20%
  3. 2a y última entrega proyecto final en equipo: 20%

Cómo serán los exámenes?

Tendrán un componente teórico y/o un componente práctico.

El componente práctico consistirá generalmente en uno de a) crear o alterar una BD, b) diseñar una BD, c) generar datos en una BD con una cierta forma, o d)  generar un reporte analítico.

El componente teórico es un examen de opción múltiplemen la plataforma Socrative en el cual podrás sacar apuntes o usar una o varias de las plataformas que configuraremos a lo largo del semestre (PostgreSQL, DBeaver, VSCode, Anaconda, etc).

Y cómo será el examen final?

Será enteramente práctico y consistirá en el desarrollo de un proyecto integral con todo lo visto en el semestre. Daremos más detalles más adelante durante el curso.

Cómo me contacto con ud, prof?

Usen el el correo institucional (jesus.ramos@itam.mx) o Slack.

Pero preferentemente usen Slack.

Cómo nos comunicaremos?

Por Slack, que es un chat orientado a equipos y trabajo. Comenzó como un juego tipo "Among Us", pero cuando hicieron el chat para el juego quedó tan chingón, que lo sacaron como producto separado. Abajo las ligas de descarga:

Una vez que descarguen Slack, hagan click en esta liga para que sean automágicamente agregados a nuestro workspace.

Por dónde serán las sesiones?

La sesión 1 y 2 seran por Zoom, en este link, debido a que me encuentro en Querétaro con el pie fracturado y apenas hasta el 29 me dejarán manejar a CDMX. A partir de la sesión 3 estaremos presenciales.

Dónde estará el material?

Aquí en Github. Github es una plataforma de colaboración y control de versiones para no andar como este meme:

Es importante que si nunca has usado Github, o algún otro sistema de control de versiones, leas esta guía para que no te agarren en curva y tengas de menos los fundamentos de estas plataformas.

Qué necesito para la clase?

Las bases de datos son parte de un ecosistema de muchas piezas que nutre el flujo de datos de un problem domain. Quizá sean la más importante, pero no la única. Para ello vamos a utilizar diferentes herramientas para poder interactuar con cada una de estas piezas, incluyendo la base de datos, obvi.

Lo mero, mero. La ráison d'etre de este curso. El motivo por el que estamos aquí. El corazón de todo sistema, toda plataforma, aplicación: twitter, albo, Monzo, FB, Valorant, Fortnite, Destiny, etc.

Para poder crear, diseñar, levantar, consultar, administrar bases de datos, necesitamos 2 paquetes.

Debido a que las bases de datos actúan como servidor (es decir, un programa con una conexión abierta, esperando conexiones y escuchando los comandos que caen por esa conexión después de que establecemos una), obviamente necesitamos un programa cliente que establezca esa conexión. Los 2 paquetes que necesitamos son un cliente, y un servidor.

Como servidor descargaremos e instalaremos PostgreSQL en un ambiente cloud. Vamos a crear una máquina virtual en la nube de Amazon y va a ser nuestro PostgreSQL de cajón. Esto no lo veremos sino hasta dentro de 3 sesiones.

Ahora, para el cliente, descargaremos e instalaremos la edición Community de DBeaver, uno de los 3 paquetes de software libre para conexión a bases de datos.

Ya los tienes? Va.

Solamente eso?

Dependiendo de como vengan de experiencia y las materias previas que hayan cursado, necesitarán:

  1. VSCode - https://code.visualstudio.com/download
  2. Python (mediante miniconda) - https://docs.conda.io/en/latest/miniconda.html
  3. .NET SDK - https://dotnet.microsoft.com/download

Ya veremos qué necesitaremos de todos estos.

NEWS & UPDATES

Check back here often.

Temario + Fechas = Plan de Materia

A continuación el temario, fecha por fecha:

Fecha de sesión Temas
2022/01/24 Intro a BDs. Instalación de PostgreSQL. Instalación de DBeaver. Instalación de BD de pruebas Sakila. Aplicaciones analíticas. ¿De dónde vienen los datos? ¿A dónde van los datos? Esquema de red. Esquema de documentos. Esquema relacional.
2022/01/26 Diagramas E-R. Relaciones. Entidades. Atributos. Relaciones 1 a 1. Relaciones 1 a N. Relaciones N a N. Llaves primarias. Llaves foráneas. Llaves compuestas. Diseño de BDs. / Sesión en video
2022/01/31 Parte II - Diagramas E-R. Relaciones. Entidades. Atributos. Relaciones 1 a 1. Relaciones 1 a N. Relaciones N a N. Llaves primarias. Llaves foráneas. Llaves compuestas. Diseño de BDs. / Sesión en video
2022/02/02 Normalización: 1NF, 2NF y 3NF. Best practices para diseño de bases de datos / Sesión en video
2022/02/07 ASUETO
2022/02/09 3.5NF, Relaciones ternarias y sus best practices. Intro a queries y ejercicios / Sesión en video
2022/02/14 Ejercicios de modelado de datos
2022/02/16 Intro a cloud computing
2022/02/21 Creación de tablas, creación de secuencias, constraints de llave primaria y de llave foránea / Sesión en video
2022/02/23 Creación de tablas intermedias para relación N a M, inserción de datos, y errores comunes por constraints de foreign key y primary key / Sesión en video
2022/02/28 Insert, delete, truncate / Sesión en video
2022/03/02 Update, drop, y uso de los comandos IRL / Sesión en video
2022/03/07 Joins / Sesión en video
2022/03/09 Joins (inner, outer, left, right y el "anti-join" / Sesión en video
2022/03/14 Ejercicios / Sesión en video
2022/03/16 Filtrado de registros con cláusula WHERE / Sesión en video
2022/03/21 Orden de ejecución de queries. Agrupamiento con cláusula group by. Funciones de agregación, estadísticas, booleanas / Sesión en vídeo
2022/03/23 ASUETO
2022/03/28 Ejercicios con funciones de agregación. Revisión de parte teórica de examen parcial. / Sesión en video
2022/03/30 Revisión de parte práctica de examen parcial. Cláusula distinct on para combinar funciones de agregación y IDs. Cláusula grouping sets para generar subtotales / Sesión en video
2022/04/04 Cláusula group by rollup() para agregados jerárquicos. Cláusula group by cube() para agregados a lo largo de N columnas. Introducción a bases de datos columnares / Sesión en video
2022/04/06 Cláusula having. Ejercicios con having. Errores comunes con having y condiciones para que se comporte como where. / Sesión en video
2022/04/11 Subqueries, correlated queries, cláusula exists y not exists, y refraseo de queries con (not) exists como queries con join. / Sesión en video
2022/04/13 ASUETO
2022/04/18 ASUETO
2022/04/20 Common-table Expressions / Sesión en video
2022/04/25 Apuntes finales de Common Table Expressions. Intro a funciones / Sesión en video
2022/04/27 Funciones numéricas y trigonométricas. Generación de números aleatorios. Funciones con strings / Sesión en video
2022/05/02 Funciones con date, time, interval y timestamp. Ejercicio integrador. Ley de Benford y Detección de Fraudes / Sesión en video
2022/05/04 Índices para aceleración de select. árboles B para índices numéricos, índices compuestos, índices simples. / video
2022/05/09 Transacciones. Propiedades ACID. Atomicidad e Aislamiento. Niveles de aislamiento y efectos. / video
2022/05/11 Isolation level a fondo. Bloqueo de renglones. Transacciones concurrentes / video
2022/05/16 Triggers
2022/05/18 Stored procedures
2022/05/23 Aplicaciones multicapa
2022/05/25 ORMs