As a general approach, that looks like a fantastic start.
Very good pickup on the 'Copies' table - I think most people would miss that first try.
There are a few issues with the correct relationships (Foreign keys) in your many-to-many tables (Books_Authors, and Loans) - I suggest you have a look at them.
One of the questions I think you need to think about is "Do we want the data to represent the current status only, or do we also want to keep a history?"
Your answer to that will affect design - particularly around the Copies and Loans tables.
If you're only representing current status, then you probably don't need the Loans table. Instead, against each Copy, just save the User_ID and relevant dates. When it's loaned out, update the User ID and dates; when it's returned, NULL these dates.
However, if you want a history (which I'm guessing you do), then you probably need to start adding a few things
- Loans - status of loan. This could be inferred by dates (in/out) but it's often useful to have a status as well. Also, what happens when a book is lost and a person pays to have it replaced?
- Think about the PK of Loans - if someone borrows the same book multiple times (sorry - same copy of the book, multiple times over time), how will you store it?
- Copies - status. What happens when they get lost or they just get so tattered that they must be discarded? (Also other possible statuses e.g., what happens when you pre-order copies of books?)
- Copies - some way to link to the actual physical copy of the book (in libraries in the past, they were barcodes sticky-taped to the spine of the book)
A couple of other things to think about
- You book has an 'author' field and then many-to-many to authors. This is OK... but may not be what you want
- Libraries (at least in the past) used the Dewey decimal system for books? You may want to add this too.