how to associate several authors to a custom post type

You have a few options. Either give your post type a custom permission or work within the existing permissions (such as post)

In my opinion the best way to go about this would be to set a custom capability type when you register the post type. A good one to use in your case may be ‘product’

Then you can assign the capabilities you would like.

// get the "author" role object
$role = get_role( 'designer' );

// add "edit_products" to this role object
$role->add_cap( 'edit_products' );

Now if you don’t want to assign all the capabilities manually in a custom plugin or functions.php file you can use the Members Plugin for an awesome GUI for this.

As mentioned, you could also use the core “edit_posts” instead of assigning a new capability type just depends on how much you care to limit the role. For example, if they are allowed to edit post and products or just products.

Here is a chart from the codex of capabilities:

    [edit_post]              =>  "edit_{$capability_type}"
    [read_post]              => "read_{$capability_type}"
    [delete_post]            => "delete_{$capability_type}"
    [edit_posts]             => "edit_{$capability_type}s"
    [edit_others_posts]      => "edit_others_{$capability_type}s"
    [publish_posts]          => "publish_{$capability_type}s"
    [read_private_posts]     => "read_private_{$capability_type}s"
    [delete_posts]           => "delete_{$capability_type}s"
    [delete_private_posts]   => "delete_private_{$capability_type}s"
    [delete_published_posts] => "delete_published_{$capability_type}s"
    [delete_others_posts]    => "delete_others_{$capability_type}s"
    [edit_private_posts]     => "edit_private_{$capability_type}s"
    [edit_published_posts]   => "edit_published_{$capability_type}s