Best way to do this would be either 2 or 3 lists.
- The first one would be the category.
- The second one the book, tied to the category via lookup.
- The third would be the person that it is checked out to, which would
be tied to the book via lookup, and the category via lookup.
You could do all of this using Infopath and using filters with secondary data connections on the book and category.
Then if you are using active directory, use people picker to put the name in on who is checking it out. Have the status as Checked In
Checked Out
and "Removed from circulation" (never delete items until your sure it's gone).
Index your category, your status, your books, etc. You can then have a check out date, and the a check in date, and then have a workflow on the chart that would notify the user if the item goes overdue, or is about to become overdue.
The only issue that I see on it is requesting holds. I am unable to give guidance on that one.