2 Parts:
1. History
2. Permissions
For the history part there is an easy way that will *sort of* do what you need. And there is a more involved way that requires some custom coding. The easy way is to enable dataface's built-in history feature:
http://framework.weblite.ca/documentation/how-to/history-howtoThis will track all changes including changes to the borrower of the book.
The hard way would involve creating a separate table called "borrowers" (or something like it) to track who borrows the books, etc.. and make a custom action to insert a new record when someone wants to borrow a book.
Your permissions will depend on the way you implement the borrowing feature. If you keep the borrower info in the books table then you will need to adjust the getPermissions() method in the tables/books/books.php file to allow all logged in users to edit the book. Then add %fieldname%__permissions() methods for each of the individual fields to deny edit access to all users except the admin and owner.
See the following tutorials for info on Dataface permissions:
http://framework.weblite.ca/documentation/tutorial/getting_started/permissionshttp://framework.weblite.ca/documentation/manual/delegate_classes/delegate_class_permissionshttp://framework.weblite.ca/documentation/tutorial/submission_forms/permissions A cleaner way to do this is to just create a custom action (say "checkout") to handle the checking out of a book, so that the user just has to click a button to check out the book.
See the following tutorials for info on actions:
http://framework.weblite.ca/documentation/tutorial/getting_started/dataface_actionshttp://framework.weblite.ca/documentation/tutorial/getting_started/dataface_actions_2The more pure solution is to separate the borrowers out into another table and the create a custom action to allow users to check out the books... and probably create a relationship from the books to the borrowers table so you can see the borrowers history. But as always, there are 800 ways to skin this cat.
-Steve