Please can someone help me out with this problem. My assignment instructions specify that DBAccess#createRecord(String) must throw DuplicateKeyException, but it does not specify the conditions under which it should be thrown. The name of the exception suggests that it should be thrown when a client attempts to create a new record that has an identical "key" to an existing record. Assuming that some combination of the record fields constitutes the key, the exception should be thrown when an attempt is made to create a new record for which those fields are identical to an existing record. This seems reasonable, but I have to decide which combination of fields represent the key. Intuition suggests that a hotel room is uniquely identified by the combination of hotel name, city and room number. The problem is that room number is not included in the URLyBird database, which seems like a serious flaw in the database design. It is hard to understand how URLyBird can sell hotel rooms without being able to tell the customer the number of the room, and I can only assume that this is a deliberate mistake. With the current fields it is quite reasonable for two records to have identical fields but still represent different rooms, most hotels will have more than one room that is identical in those terms. For this reason I have chosen never to throw this exception, and I have questioned whether room number is missing from the schema design. Have I missed something obvious or is this a reasonable approach?