Database Design
En el curso muestran muchas consideraciones por si hay que tratar con cantidades muy grandes de datos heterogeneos. En particular mencionan el concepto de schema on read, usado por repositorios de big data: https://www.geeksforgeeks.org/what-is-schema-on-read-and-schema-on-write-in-hadoop/ pero solo son menciones pequeñas.
Modelo
La idea principal es: https://en.wikipedia.org/wiki/Data_model
Es de notar las consideraciones del modelado dimensional. Esto es la descripción de las clases y naturaleza de los datos de cada elemento de la base de datos.
En el video separan dos tipos de tabla para hacer la clasificación de las entidades: hechos - mediciones o datos duros de eventos y dimensiones - datos que dan contexto a los hechos, son descripciones o datos que no cambian frecuentemente.
la idea de que sea dimensional es por que los registros pueden variar en diferentes dimensiones, siendo cada una una tabla. Entonces un registro es solo un posible estado en un espacio donde cada coordenada está previamente registrada en una tabla de la base de datos.
Note that you need to connect your SQL cells to an integration to run a query.
- You can use a sample integration from the dropdown menu. This includes the Course Databases integration, which contains tables you used in our SQL courses.
- You can connect your own integration by following the instructions provided here.
Normalización
Para mantener los datos dentro de ciertos estandares de manejo y utilidad, se desarrollaron algunos conceptos de normalización:
https://learn.microsoft.com/en-us/office/troubleshoot/access/database-normalization-description
https://www.geeksforgeeks.org/normal-forms-in-dbms/
la referencia mas completa es la wikipedia https://en.wikipedia.org/wiki/Database_normalization Aunque la explicación mas entendible y rápida parece ser la de tutorialspoint https://www.tutorialspoint.com/dbms/database_normalization.htm
Views
Operativamente solo son alias de querys, aunque pueden guardarse en tablas tamporales llamadas Materialized Views. Muy útiles para guardar mezclas complejas y que incluyan relaciones, clasificaciones y agrupamientos. Es recomendable consultar ejemplos y sintaxis: https://www.techonthenet.com/sql/views.php https://www.postgresql.org/docs/current/rules-materializedviews.html
Es imprtante no olvidar la forma de revisar los views disponibles con:
select * from information_schema.views where table_schema='public';La ventaja principal es que pueden ser actualizados inclusive siendo Materialized views, pues hay algorimos incrementales optimizados para esos casos, contrario a las tablas temporales que solo guardan los datos en un espacio que se liberará una vez que dejan de usarse.
https://dev.mysql.com/doc/refman/5.7/en/derived-table-optimization.html
https://devblogs.microsoft.com/azure-sql/ctes-views-or-temp-tables/
Un ejemplo de la sintaxis se puede encontrar en https://learn.microsoft.com/en-us/sql/relational-databases/views/modify-views?view=sql-server-2017
Permisos y Roles
Solo se mostraron los comandos GRANT, ALTER y SET para manejar los permisos básicamente. La referencia básica se puede consultar en w3school o en el sitio de microsoft learn. https://www.postgresql.org/docs/15/sql-set.html https://www.techonthenet.com/sql_server/grant_revoke.php
Particiones (verticales y horizontales)
El curso menciona someramente el comando de partition aquí un ejemplo simple https://www.postgresql.org/docs/15/ddl-partitioning.html
y la discusión subyacente se puede ver en microsoft learn https://learn.microsoft.com/en-us/analysis-services/multidimensional-models-olap-logical-cube-objects/partitions-analysis-services-multidimensional-data
https://learn.microsoft.com/en-us/sql/relational-databases/views/modify-views?view=sql-server-2017
ejemplos de im curso: https://www.educba.com/sql-table-partitioning/
-- A sample query for you to replace!