May I quote the the instruction.html to you (no ridicule, I mean it as an honest hint):
This document deliberately leaves some issues unspecified, and some problems unraised. Your ability to think through these issues, in the face of realistically imperfect specifications, and come to a tenable solution is something upon which you are being graded.
My solution is not the raise DuplicateKeyException at all. I have not yet passed so I might be wrong.
I didn't throw a DuplicateKeyException from create method, because there is simply no appropriate key. In a hotel there can be more than 1 room available for the same night with the same characteristics. So when room numbers will be added to the database file, it makes sense to throw the DuplicateKeyException, but at this moment it doesn't. Of course I documented this decision in choices.txt