Organizing The Custom Post Type with Taxonomies / Parent Posts

I think it could be a good idea to create two more hierarchical (category like) taxonomies, called Artists and Albums. This way, you’ll be able to query your posts based on taxonomy / term relationships.

Basically, what I’m saying is this:

  1. Artists -> custom hierarchical taxonomy
  2. List item -> custom hierarchical taxonomy
  3. Songs -> custom post type
  4. Genres -> -> custom tag taxonomy

Please refer to this link from the Codex for a better understanding:

http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

Short example taken directly from the Codex link above, below:

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'movie_genre',
            'field'    => 'slug',
            'terms'    => array( 'action', 'comedy' ),
        ),
        array(
            'taxonomy' => 'actor',
            'field'    => 'id',
            'terms'    => array( 103, 115, 206 ),
            'operator' => 'NOT IN',
        ),
    ),
);
$query = new WP_Query( $args );

UPDATE

How about creating two more custom post types, Artists and Albums, and having some metaboxes displayed on the Songs Custom Post Type (CPT) so that you can create a relationship between these ?

For example, in your Songs CPT, you could have a metabox or a custom field to hold the value for the Artists and for the Albums.

Does this make sense to you ?