|
| 1 | +# Student Database |
| 2 | + |
| 3 | +## Índice |
| 4 | + |
| 5 | +* [1. Consideraciones generales](#1-consideraciones-generales) |
| 6 | +* [2. Preámbulo](#2-preámbulo) |
| 7 | +* [3. Resumen del proyecto](#3-resumen-del-proyecto) |
| 8 | +* [4. Configuración del Ambiente de Desarrollo](#4-configuracion-del-ambiente-de-desarrollo) |
| 9 | +* [5. Entregables](#5-entregables) |
| 10 | +* [6. Consideraciones para pedir tu Project Feedback](#6-consideraciones-para-pedir-tu-project-feedback) |
| 11 | +* [7. Objetivos de aprendizaje](#7-objetivos-de-aprendizaje) |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +## 1. Consideraciones generales |
| 16 | + |
| 17 | +* Este proyecto lo resolvemos de manera **individual**. |
| 18 | +* El rango de tiempo estimado para completar el proyecto es de 2 a 5 Sprints. |
| 19 | +* Enfócate en aprender y no solamente en "completar" los tutoriales o ejercicios. |
| 20 | + |
| 21 | +## 2. Preámbulo |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | +_Credito: Foto de [Barn Images](https://unsplash.com/@barnimages)_ |
| 26 | +_en [Unsplash](https://unsplash.com/photos/assorted-handheld-tools-in-tool-rack-t5YUoHW6zRo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash)_ |
| 27 | + |
| 28 | +Los comandos DDL (Data Definition Language) en SQL son fundamentales para la creación, |
| 29 | +modificación y eliminación de objetos de base de datos. Estos comandos permiten |
| 30 | +definir la estructura y características de las tablas, índices, vistas y otros |
| 31 | +elementos esenciales en el diseño de una base de datos. |
| 32 | + |
| 33 | +## 3. Resumen del proyecto |
| 34 | + |
| 35 | +En este proyecto seguirás dos tutoriales de freeCodeCamp para aprender |
| 36 | +los comandos DDL (Data Definition Language) en SQL. |
| 37 | + |
| 38 | +### [Learn SQL by Building a Student Database: Part 1](https://github.com/Laboratoria/learn-sql-by-building-a-student-database-part-1) |
| 39 | + |
| 40 | +En el primer tutorial, aprenderás a construir y gestionar una base de datos de |
| 41 | +estudiantes utilizando SQL y PostgreSQL. Comenzarás configurando el entorno |
| 42 | +necesario, que incluye la instalación de PostgreSQL y el uso de máquinas |
| 43 | +virtuales. A través de comandos SQL, te guiarás en la creación de tablas con |
| 44 | +claves primarias y foráneas, la inserción y consulta de datos, y la |
| 45 | +actualización y eliminación de registros. Además, explorarás el uso de |
| 46 | +scripts Bash para automatizar tareas y gestionar permisos de archivos. |
| 47 | + |
| 48 | +Haz clic [aquí para iniciar el primer tutorial](https://gitpod.io/new/?autostart=true#CODEROAD_TUTORIAL_URL=https%3A%2F%2Fraw.githubusercontent.com%2FLaboratoria%2Flearn-sql-by-building-a-student-database-part-1%2Fmain%2Ftutorial.json,CODEROAD_DISABLE_RUN_ON_SAVE=true/https://github.com/Laboratoria/learn-sql-by-building-a-student-database-part-1). |
| 49 | + |
| 50 | +### [Learn SQL by Building a Student Database: Part 2](https://github.com/Laboratoria/learn-sql-by-building-a-student-database-part-2) |
| 51 | + |
| 52 | +En el segundo tutorial, profundizarás en la administración y análisis |
| 53 | +de bases de datos de estudiantes usando SQL y PostgreSQL. Aprenderás a |
| 54 | +realizar consultas avanzadas mediante JOIN para combinar datos de múltiples |
| 55 | +tablas y a utilizar funciones de agrupamiento (GROUP BY) y ordenamiento |
| 56 | +(ORDER BY). Se cubrirán también las funciones agregadas para sumarizar |
| 57 | +datos y la modificación de estructuras de tablas existentes con ALTER TABLE. |
| 58 | +Esta parte incluye la creación de copias de seguridad y restauración |
| 59 | +de bases de datos, y el uso de scripts Bash para una gestión más |
| 60 | +eficiente y segura de tu entorno. |
| 61 | + |
| 62 | +Haz clic [aquí para iniciar el segundo tutorial](https://gitpod.io/new/?autostart=true#CODEROAD_TUTORIAL_URL=https%3A%2F%2Fraw.githubusercontent.com%2FLaboratoria%2Flearn-sql-by-building-a-student-database-part-2%2Fmain%2Ftutorial.json,CODEROAD_DISABLE_RUN_ON_SAVE=true/https://github.com/Laboratoria/learn-sql-by-building-a-student-database-part-2) |
| 63 | + |
| 64 | +## 4. Configuración del Ambiente de Desarrollo |
| 65 | + |
| 66 | +Los tutoriales usan [Gitpod](https://gitpod.io/). Con Gitpod, las |
| 67 | +desarrolladores pueden iniciar instantáneamente un entorno de desarrollo |
| 68 | +completo con todas las herramientas y dependencias necesarias para |
| 69 | +trabajar en su proyecto, lo que elimina la necesidad de configurar |
| 70 | +manualmente el entorno en sus propias máquinas. |
| 71 | + |
| 72 | +A continuación encuentras el paso a paso para trabajar con Gitpod. |
| 73 | +Sin embargo puedes ver este [video](https://youtu.be/e2yAgeOwQGQ) |
| 74 | +que hemos preparado. |
| 75 | + |
| 76 | +### Paso 1. Crea una cuenta en Gitpod usando Github |
| 77 | + |
| 78 | +Para crear una cuenta en Gitpod utilizando GitHub, sigue estos pasos: |
| 79 | + |
| 80 | +1. Dirígete al sitio web de Gitpod en [gitpod.io](https://www.gitpod.io/). |
| 81 | +2. Haz clic en el botón "Login" en la esquina superior derecha de la página. |
| 82 | +3. Selecciona la opción "Continue with GitHub". |
| 83 | +4. Serás redirigido a la página de autorización de GitHub. Si no has iniciado |
| 84 | + sesión en GitHub, se te pedirá que lo hagas. |
| 85 | +5. Después de iniciar sesión en GitHub, se te pedirá que autorices a Gitpod |
| 86 | + a acceder a tu cuenta de GitHub. Revisa los permisos y haz clic en |
| 87 | + "Authorize Gitpod" (Autorizar Gitpod). |
| 88 | +6. Completa la informacion solicitada para compeltar el registro. |
| 89 | +7. ¡Listo! Ahora tienes una cuenta en Gitpod vinculada a tu cuenta de GitHub. |
| 90 | + |
| 91 | +### Paso 2. Crea un workspace para los tutoriales |
| 92 | + |
| 93 | +1. En [Gitpod](https://gitpod.io/workspaces), haz clic en el boton "New Workspace". |
| 94 | +2. En la opción "Select a repository" ingresa la url de repositorio del tutorial: |
| 95 | + - Tutorial 1: [https://github.com/Laboratoria/learn-sql-by-building-a-student-database-part-1](https://github.com/Laboratoria/learn-sql-by-building-a-student-database-part-1) |
| 96 | + - Tutorial 2: [https://github.com/Laboratoria/learn-sql-by-building-a-student-database-part-1](https://github.com/Laboratoria/learn-sql-by-building-a-student-database-part-2) |
| 97 | +3. Verifica que en las demás campos esten elegidas las opciones "VSCode 1.90.2" |
| 98 | + y "Standar". |
| 99 | +4. Haz clic en "Continue". |
| 100 | +5. Gitpod abrirá VSCode con el nuevo espacio de trabajo y comenzará a configurar |
| 101 | + el entorno automáticamente. |
| 102 | + |
| 103 | +### Paso 3. Inicia el tutorial |
| 104 | + |
| 105 | +1. En el VSCode abierto por Gitpod, abre el menú hamburguesa (tres líneas |
| 106 | + horizontales en la esquina superior izquierda). |
| 107 | +2. Ve al menú "View". |
| 108 | +3. Haz clic en la opción "Command Palette". |
| 109 | +4. Escribe "CodeRoad: Start" y elígelo entre las opciones para ejecutarlo. |
| 110 | +5. Se abrirá un nuevo panel con el tutorial. |
| 111 | + |
| 112 | +### Paso 4. Retomar un tutorial en el punto en el que lo dejé la última vez |
| 113 | + |
| 114 | +1. Inicia sesón en [Gitpod](https://gitpod.io/workspaces) y lista los workspaces |
| 115 | +2. En el workspace del tutorial que quieres retomar haz click en el |
| 116 | + menú de tres puntos. |
| 117 | +3. Elige la opcion "Open" |
| 118 | +4. Gitpod abrirá VSCode con el nuevo espacio de trabajo y comenzará a configurar |
| 119 | + el entorno automáticamente. |
| 120 | +5. Inicia el tutorial de nuevo siguiendo el paso 3. |
| 121 | + |
| 122 | +## 5. Entregable |
| 123 | + |
| 124 | +Haz fork a este repositorio. Luego ajustar el README para registrar |
| 125 | +todos los comandos ejecutados durante los tutoriales. Puede usar |
| 126 | +el siguiente formato: |
| 127 | + |
| 128 | +```md |
| 129 | +# Tutorial 1 |
| 130 | + |
| 131 | +## Paso 1 |
| 132 | + |
| 133 | + `echo sql Hello` |
| 134 | + |
| 135 | +## Paso 2 |
| 136 | + |
| 137 | + `psql --username=freecodecamp --dbname=psql` |
| 138 | +``` |
| 139 | + |
| 140 | +Puedes obtener un historial de los comandos ejecutados en una terminal |
| 141 | +con el comando `history`. |
| 142 | + |
| 143 | +## 6. Consideraciones para pedir tu Project Feedback |
| 144 | + |
| 145 | +Antes de agendar tu Project Feedback con tu coach, asegúrate de: |
| 146 | + |
| 147 | +* [ ] Completar los 2 tutoriales propuestos |
| 148 | +* [ ] Tener un fork con un entorno de Gitpod completo |
| 149 | + |
| 150 | +## 7. Objetivos de aprendizaje |
| 151 | + |
| 152 | + |
| 153 | +Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en tu proyecto. Piensa en eso al decidir tu estrategia de trabajo. |
| 154 | + |
| 155 | +### SQL |
| 156 | + |
| 157 | +- [ ] **Realizar operaciones básicas de consulta de una base de datos utilizando las cláusulas SELECT y WHERE** |
| 158 | + |
| 159 | + <details><summary>Links</summary><p> |
| 160 | + |
| 161 | + * [Querying a Table](https://www.postgresql.org/docs/current/tutorial-select.html) |
| 162 | + * [SELECT reference](https://www.postgresql.org/docs/16/sql-select.html) |
| 163 | +</p></details> |
| 164 | + |
| 165 | +- [ ] **Crear una tabla con CREATE TABLE** |
| 166 | + |
| 167 | + <details><summary>Links</summary><p> |
| 168 | + |
| 169 | + * [SQL CREATE TABLE Statement - W3Schools](https://www.w3schools.com/sql/sql_create_table.asp) |
| 170 | +</p></details> |
| 171 | + |
| 172 | +- [ ] **Agregar registros a un tabla con INSERT** |
| 173 | + |
| 174 | + <details><summary>Links</summary><p> |
| 175 | + |
| 176 | + * [Inserting Data - PostgreSQL Docs](https://www.postgresql.org/docs/current/dml-insert.html) |
| 177 | +</p></details> |
| 178 | + |
| 179 | +- [ ] **Actualizar registros con UPDATE** |
| 180 | + |
| 181 | + <details><summary>Links</summary><p> |
| 182 | + |
| 183 | + * [Updating Data - PostgreSQL Docs](https://www.postgresql.org/docs/current/dml-update.html) |
| 184 | +</p></details> |
| 185 | + |
| 186 | +- [ ] **Eliminar registros con DELETE** |
| 187 | + |
| 188 | + <details><summary>Links</summary><p> |
| 189 | + |
| 190 | + * [Deleting Data - PostgreSQL Docs](https://www.postgresql.org/docs/current/dml-delete.html) |
| 191 | +</p></details> |
| 192 | + |
| 193 | +- [ ] **Claves primarias (Primary Keys)** |
| 194 | + |
| 195 | + <details><summary>Links</summary><p> |
| 196 | + |
| 197 | + * [Primary Keys - PostgreSQL Docs](https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-PRIMARY-KEYS) |
| 198 | +</p></details> |
| 199 | + |
| 200 | +- [ ] **Claves externas (Foreign Keys)** |
| 201 | + |
| 202 | + <details><summary>Links</summary><p> |
| 203 | + |
| 204 | + * [Foreign Keys - PostgreSQL Docs](https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-FK) |
| 205 | +</p></details> |
| 206 | + |
| 207 | +- [ ] **Cambiar la estrucutura de una tabla con ALTER TABLE** |
| 208 | + |
| 209 | + <details><summary>Links</summary><p> |
| 210 | + |
| 211 | + * [Modifying Tables - PostgreSQL Docs](https://www.postgresql.org/docs/current/ddl-alter.html) |
| 212 | +</p></details> |
| 213 | + |
| 214 | +- [ ] **Comprender y utilizar cláusulas JOIN para combinar datos de múltiples tablas.** |
| 215 | + |
| 216 | + <details><summary>Links</summary><p> |
| 217 | + |
| 218 | + * [Joins Between Tables](https://www.postgresql.org/docs/current/tutorial-join.html) |
| 219 | +</p></details> |
| 220 | + |
| 221 | +- [ ] **Condensar resultados con cláusulas de agrupación de datos como GROUP BY y HAVING** |
| 222 | + |
| 223 | + <details><summary>Links</summary><p> |
| 224 | + |
| 225 | + * [SELECT reference](https://www.postgresql.org/docs/16/sql-select.html) |
| 226 | + * [Aggregate Functions](https://www.postgresql.org/docs/current/tutorial-agg.html) |
| 227 | +</p></details> |
| 228 | + |
| 229 | +- [ ] **Ordernar el resultado utilizando la cláusula ORDER BY** |
| 230 | + |
| 231 | + <details><summary>Links</summary><p> |
| 232 | + |
| 233 | + * [SELECT reference](https://www.postgresql.org/docs/16/sql-select.html) |
| 234 | +</p></details> |
| 235 | + |
| 236 | +- [ ] **Trabajar con funciones de agregación como COUNT, SUM, AVG, MAX y MIN** |
| 237 | + |
| 238 | + <details><summary>Links</summary><p> |
| 239 | + |
| 240 | + * [Aggregate Functions](https://www.postgresql.org/docs/current/tutorial-agg.html) |
| 241 | +</p></details> |
| 242 | + |
| 243 | +- [ ] **Restricciones sobre los campos de una tabla (Constraints)** |
| 244 | + |
| 245 | + <details><summary>Links</summary><p> |
| 246 | + |
| 247 | + * [Constraints - PostgreSQL Docs](https://www.postgresql.org/docs/current/ddl-constraints.html) |
| 248 | +</p></details> |
| 249 | + |
| 250 | +### Máquinas Virtuales |
| 251 | + |
| 252 | +- [ ] **Configurando máquinas virtuales** |
| 253 | + |
| 254 | + <details><summary>Links</summary><p> |
| 255 | + |
| 256 | + * [Creación de una máquina virtual - Oracle VM](https://docs.oracle.com/en/virtualization/virtualbox/6.0/user/vboxmanage-createvm.html) |
| 257 | + * [Configuración de una máquina virtual - Microsoft](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/quick-create-virtual-machine) |
| 258 | +</p></details> |
| 259 | + |
| 260 | +### PostgreSQL |
| 261 | + |
| 262 | +- [ ] **Setup de una nueva instancia** |
| 263 | + |
| 264 | + <details><summary>Links</summary><p> |
| 265 | + |
| 266 | + * [PostgreSQL Installation - PostgreSQL Docs](https://www.postgresql.org/download/) |
| 267 | + * [How To Install and Use PostgreSQL on Ubuntu - DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04) |
| 268 | +</p></details> |
| 269 | + |
| 270 | +- [ ] **Comandos** |
| 271 | + |
| 272 | + <details><summary>Links</summary><p> |
| 273 | + |
| 274 | + * [PostgreSQL psql Commands - PostgreSQL Docs](https://www.postgresql.org/docs/current/app-psql.html) |
| 275 | + * [Commonly Used PostgreSQL Commands - Verta.ai](https://www.verta.ai/resources/tutorials/database/postgresql-commands) |
| 276 | +</p></details> |
| 277 | + |
| 278 | +- [ ] **Copias de seguridad (Backup)** |
| 279 | + |
| 280 | +- [ ] **Restauración (Restore)** |
| 281 | + |
| 282 | +### Shell |
| 283 | + |
| 284 | +- [ ] **Shell Scripts** |
| 285 | + |
| 286 | + <details><summary>Links</summary><p> |
| 287 | + |
| 288 | + * [Shell Scripting Guide - LinuxCommand.org](http://linuxcommand.org/lc3_writing_shell_scripts.php) |
| 289 | +</p></details> |
| 290 | + |
| 291 | +- [ ] **Permisos de archivos (File Permissions)** |
| 292 | + |
| 293 | + <details><summary>Links</summary><p> |
| 294 | + |
| 295 | + * [Understanding Linux File Permissions - DigitalOcean](https://www.digitalocean.com/community/tutorials/understanding-linux-file-permissions) |
| 296 | + * [File Permissions in Linux - Red Hat](https://www.redhat.com/sysadmin/linux-file-permissions) |
| 297 | +</p></details> |
0 commit comments