Mysql – Does this normalized model for artist music records make sense

MySQLnormalization

I want to make a database about one artist's music records… CD, Vinyl, Cassette, 8 Track, Singles, Ep, Lp, etc…

I believe I have a good normalized model that will achieve my needs, however before creating the database, I want to ask the experts so that my model is solid from the start.

Here are some models that I'm looking to implement:

ALBUM (Vinyl)
-------------
**VINYL**
SIDE A
   1. Track name
   2.. Track name
   3. Track name
   ...
SIDE B
   1. Track name
   2. Track name
   3. Track name
   ...


ALBUM (Double Vinyl)
-------------
**VINYL 1**
SIDE A
   1. Track name
   2. Track name
   3. Track name
   ...
SIDE B
   1. Track name
   2. Track name
   3. Track name
   ...

**VINYL 2**
SIDE A
   1. Track name
   2. Track name
   3. Track name
...
SIDE B
   1. Track name
   2. Track name
   3. Track name
   ...


ALBUM (CD)
-------------
**CD**
   1. Track name
   2. Track name
   3. Track name
   ...

   Extra Tracks
   11. Track name
   12. Track name
   ...


ALBUM (Compilation)
-------------
**CD 1**
   1.Track name
   2. Track name
   3. Track name
   ...
**CD 2**
   1.Track name
   2. Track name
   3. Track name
   ...
**DVD**
   1. Track name
   2. Track name
   3. Track name
   ...

ALBUM (8 Track)
-------------
**8 TRACK**
Program 1
   1. Track name
   2. Track name
   3. Track name
   ...

Program 2
   1. Track name
   2. Track name
   3. Track name
   ...

Program 3
   ...
Program 4
   ...

ALBUM (Cassette)
-------------
**CASSETTE**
SIDE A
   1. Track name
   2. Track name
   3. Track name
   ...

SIDE B
   1. Track name
   2. Track name
   3. Track name
   ...

Basically, there are albums that contain discs that contain tracks. 1 album can have multiple discs and 1 disc can only be part of one album. 1 disc can have multiple tracks and 1 track can be in multiple discs.

This is a basic normalized model I came up with. Is this a good foundation?

album (album_id, name, description, date_released, ...)

disclabel (disclabel_id, disclabel)
disc (disc_id, album_id, disclabel_id, description, position)

song (song_id, name, duration, lyrics, ...)

disclocation (disclocation_id, disclocation, position)
disctrack (disc_id, disclocation_id, song_id, tracknumber)

Best Answer

Here's an example of similar Data Model: http://www.databaseanswers.org/data_models/cd_collection/index.htm

This model has a lot of clarity than what you have describe. Take a look.