Una tabla de hechos en el centro, sus dimensiones alrededor, y una sola línea directa entre cada una.
Es la forma más común de organizar un data warehouse. Hay una tabla central con los eventos que pasaron — ventas, reproducciones, partidas jugadas — y a su alrededor, tablas más chicas que describen quién, qué y cuándo pasó ese evento. A la tabla central se le llama tabla de hechos y a las de alrededor, dimensiones.
La regla de oro: cada dimensión se conecta directo a la tabla de hechos, sin pasar por otra tabla intermedia. Por eso el dibujo termina pareciendo una estrella.
Imaginemos que armamos, a mano, una libreta para anotar cada vez que alguien escucha una canción en la app. Por cada escucha anotamos cuatro cosas: quién escuchó, qué canción escuchó, qué día fue, y cuántos segundos duró. Esa libreta, convertida en tabla, es fct_reproducciones — la tabla de hechos.
Ahora, escribir "Valentina" y "Cielo Abierto" letra por letra en cada línea sería repetitivo. Por eso, en vez del nombre completo, a cada persona y a cada canción se les da un código corto — igual que un código de barras identifica un producto sin escribir su nombre entero. Así se ve la libreta real:
| id_reproduccion | id_usuario | id_cancion | fecha | segundos_escuchados |
|---|---|---|---|---|
| REP-1 | U-1 | S-10 | 2026-08-20 | 210 |
| REP-2 | U-1 | S-11 | 2026-08-20 | 180 |
| REP-3 | U-2 | S-10 | 2026-08-21 | 205 |
| REP-4 | U-2 | S-12 | 2026-08-21 | 150 |
dim_usuario, más abajo.dim_cancion, más abajo.Un código como U-1 no dice nada por sí solo. Para saber quién es realmente, hace falta el "diccionario" de esos códigos — ahí es donde entran las dimensiones. dim_usuario traduce cada id_usuario a una persona real:
| id_usuario | nombre | pais | plan |
|---|---|---|---|
| U-1 | Valentina | Argentina | Premium |
| U-2 | Marco | México | Gratis |
Y dim_cancion traduce cada id_cancion a una canción real:
| id_cancion | titulo | artista | album | duracion_seg |
|---|---|---|---|---|
| S-10 | Cielo Abierto | Los Álamos | Horizontes | 215 |
| S-11 | Ritmo Nuevo | DJ Nova | Pulso | 190 |
| S-12 | Bajo la Luna | Los Álamos | Horizontes | 160 |
Esa coincidencia de códigos — id_usuario e id_cancion aparecen tanto en la libreta de hechos como en su tabla dimensión correspondiente — es literalmente lo que dibuja la estrella: el hecho en el centro, conectado a cada diccionario alrededor.
segundos_escuchados. También podrías agregar "cantidad de reproducciones" simplemente contando filas.
dim_usuario (quién escuchó), dim_cancion (qué se escuchó), la fecha (cuándo).
id_usuario, id_cancion), y ese mismo identificador aparece como columna en la tabla de hechos para poder unirlas.
Esta es la razón de ser del esquema en estrella: cuando unes (JOIN) la tabla de hechos con sus dimensiones, obtienes una respuesta legible en un solo paso por dimensión. Por ejemplo, "¿qué escuchó cada usuario y cuándo?":
| usuario | cancion | artista | fecha | segundos_escuchados |
|---|---|---|---|---|
| Valentina | Cielo Abierto | Los Álamos | 2026-08-20 | 210 |
| Valentina | Ritmo Nuevo | DJ Nova | 2026-08-20 | 180 |
| Marco | Cielo Abierto | Los Álamos | 2026-08-21 | 205 |
| Marco | Bajo la Luna | Los Álamos | 2026-08-21 | 150 |
Un solo join por dimensión — nada de saltar por tablas intermedias. Esa simpleza es la ventaja principal de la estrella.
Debajo de la superficie, "tabla de hechos + dimensiones" es el mismo molde sin importar el rubro. Compara estos cuatro casos: