@ -36,7 +36,7 @@ A eso se suma que nada se valida —`estilo: bolreo` no falla, la canción
desaparece de su sección—, nada se consulta sin cargar el catálogo entero en
memoria, y cambiar una coma exige reconstruir y desplegar.
Alcance: **4 1 tablas** (13 ya existen), **48 archivos** que migrar, **22 rutas**
Alcance: **4 9 tablas** (13 ya existen), **48 archivos** que migrar, **22 rutas**
que hoy leen `$lib/content` .
## Decisiones transversales
@ -63,13 +63,43 @@ que hoy leen `$lib/content`.
- ** `cancion` ** _(cambia)_ — album_id nulo en los singles; **el álbum «Singles»
deja de existir como registro**, era un invento para pintar y se resuelve al
consultar. letra, nota, inspiracion y traducción salen del YAML.
- ** `cancion.version_de_id` ** _(decidido)_ — **una versión es una fila de
`cancion` , no una tabla aparte.** Nulo en las principales. Se llegó aquí
descartando partir en `obra` y `grabacion` : en ese reparto el estilo y las
etiquetas colgarían de la obra, y una versión no podría tener los suyos —una
balada con arreglo de bolero no cabría—. Con una fila por versión, cualquier
campo puede cambiar.
De regalo se arregla algo que estaba mal: **el disco pasa a ser de la fila** .
Hoy `album_id` y `numero` cuelgan del tema, así que la «Maqueta 2018» es el
corte 1 del álbum igual que la versión de estudio, y es falso.
Cuatro cabos que hay que atar, o se vuelve en contra:
1. **Vista `cancion_principal`.** Cuatro funciones devuelven listas de
canciones y siete rutas las pintan, más los recuentos por estilo y por
etiqueta. Si a una se le olvida `version_de_id IS NULL` , el catálogo dice
veinticinco temas donde hay dieciocho y nadie lo nota. Lo normal es
consultar la vista; pedir versiones es lo que hay que escribir a propósito.
2. **Un solo nivel, comprobado en la base.** Una autorreferencia admite ciclos
—A apunta a B y B a A— y una consulta recursiva sobre eso se cuelga. Se
ataja con una clave foránea compuesta contra una columna generada
`es_version` , sin triggers.
3. ** `ala_venta` solo en las principales**, y comprar la principal entrega
todas sus versiones. Es la regla que ya estaba escrita, ahora literal.
4. **Los campos se copian al crear, no se heredan al leer.** Un nulo heredado
nunca se sabe si es «no lo sé» o «lo mismo de arriba». Y aquí copiar es
además lo correcto: la maqueta de 2018 no tiene la misma letra, le falta el
puente.
- ** `persona` ** _(nueva)_ — nombre, nombre_legal, ipi. Hoy autores e intérpretes
son cadenas sueltas repetidas en cada archivo.
- ** `cancion_persona` ** _(nueva)_ — rol (letra · musica · interprete · arreglos ·
produccion), orden.
- ** `version` ** _(cambia)_ — **el `isrc` se mueve aquí desde la canción** : el
ISRC identifica una grabación y cada arreglo es una grabación distinta. Que
esté en la canción es un fallo del modelo actual.
- ~~**`version`**~~ — **desaparece como tabla** : cada versión es una fila de
`cancion` con `version_de_id` . El `isrc` va en esa fila, no en la principal:
identifica una grabación, y cada arreglo es una grabación distinta. El `iswc`
es de la composición y se repite en la familia.
- ** `registro_obra` ** _(cambia)_ — iswc, entidad, numero, editorial. 1:1 con la
canción.
- ** `autoria` ** _(cambia)_ — porcentaje `numeric(5,2)` , no entero: los repartos
@ -81,16 +111,55 @@ que hoy leen `$lib/content`.
**dos tablas de enlaces y no una polimórfica** : una clave foránea de verdad
vale más que ahorrarse una tabla.
### 2 · Taller y glosario
### 2 · Taller, géneros y glosario
**Decidido: el catálogo de géneros aspira a ser completo** y se llena poco a
poco. Eso cambia el peso de esta área: la ficha de género deja de ser una
tarjeta y pasa a ser la pieza más rica del sitio, con su historia, sus
instrumentos, sus letristas y sus obras de referencia.
- ** `pais` ** _(nueva)_ — código ISO 3166-1, nombre, gentilicio, region.
- ** `genero` ** _(nueva)_ — bolero, tango, cumbia. origen_lugar, origen_ano
(ordenable, hoy no lo es), compas, tempo, metrica, estructura, rima,
`temas text[]` , `rasgos text[]` , y ** `padre_id` para la jerarquía**: sin ella,
«todas las variantes» es una lista plana de cien nombres sin relación.
- ** `genero` ** _(nueva)_ — bolero, tango, cumbia. **Solo lo corto y comparable
va en columnas**: compas, tempo, metrica, rima, origen_lugar, origen_ano
(ordenable, hoy no lo es). Eso es lo que se pone en una tabla para comparar
géneros. Y ** `padre_id` para la jerarquía**: los subgéneros son sus hijos y el
género del que deriva es su padre, sin nada más. Sin jerarquía, «todas las
variantes» es una lista plana de cien nombres sin relación.
- ** `genero_seccion` ** _(nueva)_ — clave, titulo, cuerpo, orden. **Toda la prosa
de la ficha**: introducción, historia, estructura de las canciones, motivación
y temática. Y lo que surja mañana. Con una columna por bloque, en un mes hay
quince columnas y la mitad vacías; siendo secciones ordenadas, un apartado
nuevo no cuesta una migración. Es la respuesta a «y otros campos que puedan
surgir».
- ** `genero_pais` ** _(nueva)_ — relacion: cuna · adoptado. La cumbia nace
colombiana y se hace mexicana, peruana y argentina; el tango es de las dos
orillas. Un solo país sería mentira.
- ** `instrumento` ** _(nueva)_ — slug, nombre, **familia** (cuerda · viento ·
percusión · teclado · electrófono · voz) y subfamilia libre, pais_codigo,
descripcion, **afinacion** , `imagen_id` y `muestra_id` contra `medio` —el
sonido de muestra es un archivo como cualquier otro—, estado.
- ** `genero_instrumento` ** _(nueva)_ — con **importancia** (esencial · habitual ·
ocasional) y **papel** («marca la clave», «lleva el bajo»). Sin eso, el tres
cubano y una trompeta ocasional pesarían igual en la ficha, y no es verdad.
- ** `genero_persona` ** _(nueva)_ — papel: letrista · compositor · interprete ·
fundador. **No hay tabla `letrista`** : un letrista es una persona, y con dos
tablas la misma acabaría existiendo dos veces con distinta grafía el día que
colabore con alguien que además es figura de un género. `persona` gana los
campos biográficos: nacimiento, defuncion, pais_codigo, retrato_id, semblanza.
- ** `obra_referencia` ** + ** `obra_referencia_persona` ** _(nueva)_ — titulo, ano,
genero_id, nota, enlace, `cita` . ** «Letras de referencia de un letrista» y
«canciones del género» son la misma entidad**, mirada desde un lado o desde el
otro.
⚠️ **No se alojan letras completas de terceros.** «Bésame mucho» tiene dueño y
lo tendrá durante décadas. Se cita título, autor, año y un fragmento breve al
amparo del derecho de cita —el mismo que invoca nuestro propio aviso legal— y
se enlaza a dónde escucharla. Por eso el campo se llama `cita` y es corto, no
`letra` .
- ** `cancion_genero` ** _(nueva)_ — un tema propio escrito en ese género, aunque
en el catálogo viva bajo «baladas románticas». Es lo que permite que una ficha
enseñe obra propia además de la ajena.
- ** `capitulo` ** _(cambia)_ — tipo (principio · ficha), genero_id solo en las
fichas, cuerpo, estado.
- ** `termino` ** _(nueva)_ — el glosario. termino único, categoria, `definicion`
@ -178,8 +247,9 @@ ya cargado.
Seis decisiones de negocio. Cambiarlas después de cargar el contenido cuesta
mucho más que ahora.
1. ¿Los géneros del taller aspiran a ser un catálogo completo? Hay ocho fichas;
«todas las variantes hispanoamericanas» son más de cien contando subvariantes.
1. ~~¿Los géneros del taller aspiran a ser un catálogo completo?~~ **Respondido:
sí, y se irá llenando poco a poco.** De ahí la jerarquía, las secciones y la
ficha ampliada.
2. ¿Quién escribe las fichas que faltan? Es musicología: un compás equivocado
sale publicado con su nombre.
3. ¿El glosario se marca solo o a mano? «Clave» es un término del son y también