Splitting the key in the db is certainly a good thing. I wonder though if the first part should be referencing apm_package_types - this way you would loose the ability to have generic groupings, as for example used already in the greenpeace project. E.g. for generally used error messages, text on the homepage etc. etc. I'd vote for a simple varchar not null (and can't think of a better name right now, but it would have to be called other than package_key).