Los requerimientos de información de la aplicación necesita un modelo de datos que permita el almacenamiento de información muy variada sobre las canciones. En este sentido, hay 2 entidades claramente diferenciadas:
Canciones (o pistas): Se refiere a la información intrínseca al propio archivo de audio: duración, codec o formato de audio, tasa de bits, nº de canales, frecuencia de muestreo y tamaño en disco.
Etiquetas: Se refiere a la información relacionada con la canción (o pista de audio) que se puede obtener de los metadatos del propio archivo, de una enciclopedia musical o por mediación del propio usuario. Por ejemplo: título, álbum, artistas, etc.
Dentro de la información que las etiquetas pueden almacenar, existen 2 tipos de información que tienen entidad propia por su relación con las canciones: los álbumes y los artistas.
Por tanto, el esquema de la base de datos quedará así:
Donde:
Tabla Tracks, que almacenará información de las entidadalmacen, que se refiere a las canciones o pistas de audio y tiene los siguientes campos:
ID: clave principal.
Acoustid: identificador obtenido de la base de datos de AcoustID y que servirá para comparar canciones.
Status: estado de la canción; habrán 3 estados: 1) sin resultados; 2) catalogada; 3) no catalogada.
PathDst: ubicación del archivo una vez catalogado.
Duration: duración en milisegundos.
Format: códec o formato de audio (MP3, WMA, WAV, ...).
Bitrate: tasa de bits.
Channels: nº de canales (mono o estéreo).
Samplerate: frecuencia de muestreo.
Size: tamaño en MB del archivo.
Tabla Tags, que se refiere a las etiquetas o metadatos y tiene los siguientes campos:
ID: clave principal.
TrackID: clave foránea referida a la tabla 'Tracks'.
Name: nombre de la etiqueta.
Content: contenido de la etiqueta.
Description: descripción para hacerse una idea de a qué se refiere.
Tabla TrackTags, que almacenará las relaciones n:n entre las las canciones y las etiquetas y tendrá los siguientes campos:
TrackID: clave foránea referida a la tabla 'Tracks'.
TragID: clave foránea referida a la tabla 'Trags'.
Tabla Artists, que almacenará información relaciona con los artistas y tiene los siguientes campos:
ID: clave principal.
Name: nombre del artista.
Tabla TrackArtists, que almacenará las relaciones n:n entre las las canciones y los artistas y tendrá los siguientes campos:
TrackID: clave foránea referida a la tabla 'Tracks'.
ArtistID: clave foránea referida a la tabla 'Artists'.
Tabla Albums, que almacenará información relaciona con los álbumes y tiene los siguientes campos:
ID: clave principal.
Title: título del álbum.
Tabla TrackAlbums, que almacenará las relaciones n:n entre las las canciones y los álbumes y tendrá los siguientes campos:
TrackID: clave foránea referida a la tabla 'Tracks'.
AlbumID: clave foránea referida a la tabla 'Albums'.
Los requerimientos de información de la aplicación necesita un modelo de datos que permita el almacenamiento de información muy variada sobre las canciones. En este sentido, hay 2 entidades claramente diferenciadas:
Etiquetas: Se refiere a la información relacionada con la canción (o pista de audio) que se puede obtener de los metadatos del propio archivo, de una enciclopedia musical o por mediación del propio usuario. Por ejemplo: título, álbum, artistas, etc.
Dentro de la información que las etiquetas pueden almacenar, existen 2 tipos de información que tienen entidad propia por su relación con las canciones: los álbumes y los artistas.
Por tanto, el esquema de la base de datos quedará así:
Donde: