Correct relations to Loans table?

683 Views Asked by At

enter image description here

Hello stackers!

Ive made a library databse, i was wondering.. i am making one-to-one relation between Copies and Loans. and one-to-many relation from Users to Loans.

Since a copy of a book only should be allowed to be assigned one loan at a time, and a loan should only be able to containt one copy of a book. if they rent other books, its multiple loans.

and a user should be able to make multiple loans, but a loan can only be assigned one specific user.

is my current relations between these three tables correct? if not, i would love to know how to fix it, and the reason to my failed logic on the issue.

thank you in advance!

2

There are 2 best solutions below

0
On BEST ANSWER

Following on from the earlier answer. If you add a User_Roles table it could/(will) prevent you from falling into the membership trap. If you assume a user with the Admin role can perform every function a user with only Basic role, then every function which requires role-checking has to have a list of acceptable roles (Admin + Basic). Many times it is more efficient to just directly assign all the different roles, i.e. Basic AND Admin, to individual users. Then when a feature requires Basic role-authorization all users can treated the same way. It's simpler in the long run.

The Loans table has a number of issues. First, there's no primary key, to be consistent with the rest of your design, it could be a LoanID. CopyID should a foreign key to the Copies table (maybe that's what is currently drawn).

One 'advanced' or modern approach to your data model could be to use a temporal table to model the Copies. Since a single copy may only be lent out 1 time, properties of the loan could be add to the Copies table. Then anytime a change is made the System Version'ed Copies table the Copies_history table would automatically keep a full accounting of all prior loan activity.

1
On

The model looks good to me. You may need to apply some in the logic to enforce a user to have only one loan with same copy of a book.

A user will be able loan a copy over and over again ? then the relationship to loan to copy 1:M