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.