Just to be clear, as far as I can see, you haven't talked about surrogate keys which is different from composite keys. The idea of surrogate is to have a key which has no relation to the real data, it only serves as an identifier, nothing more. What comes to usability in your design, I've never seen a situation where surrogate wouldn't be usable, but I'm not familiar with your case.