I don't see how that data model allows you to specify that the media is attached to anything - or would you expect that to be done elsewhere?
After my time in the midgard php CMS, i have gotten used to having media arbitrarily attached to any object - and for CMS style applications it's "a good thing".
My feedback would be, rather than having a media package, which seems somewhat limited, why not an "attachment" package - so you basically store a blob + metadata and link it to an acs_object.
Seems basically the same, but caters for every possible circumstance. Of course you would specify standard metadata to store for common media eg/ mime type for everything & height/width for images.
Thinking objectly (and ripping from midgard shamelessly), the object & api would be something like:
Class attachment {
 var $id;
 var $pid; // context in acs speak
 var $score; // for forced sort orderd
 var $name;
 var $title;
 var $location; // midgard uses file-based blobs
                // we should store the blob in the content repositary
                // does CR let us choose db vs. file system on a per blob or per package basis?
 var $mimetype;
 var $sitegroup; // package_id in acs speak
 var $author;
 var $created;
 function new();
 function delete();
 function update();
 function get();
 function open();
 function serve();
 function stat();
 function listparameters();
 function parameter();
 function searchparameters();
}
It works pretty well - the parameter functions use a system wide parameter table and allow for unlimited arbitrary key/value pair meta data to be applied, gotten and searched. In addition, the cms systems that use midgard apply standard metadata tags for things like image height/width.