你好堆垛机!
我已经建立了一个图书馆数据库,我想知道.. 我正在副本和贷款之间建立一对一的关系。以及从用户到贷款的一对多关系。
由于一本书的副本一次只能被分配一个贷款,而贷款应该只能包含一本书的副本。如果他们租用其他书籍,它的多重贷款。
并且一个用户应该可以进行多笔贷款,但是一笔贷款只能分配给一个特定的用户。
我目前这三个表之间的关系是否正确?如果没有,我很想知道如何解决它,以及我在这个问题上逻辑失败的原因。
先感谢您!
你好堆垛机!
我已经建立了一个图书馆数据库,我想知道.. 我正在副本和贷款之间建立一对一的关系。以及从用户到贷款的一对多关系。
由于一本书的副本一次只能被分配一个贷款,而贷款应该只能包含一本书的副本。如果他们租用其他书籍,它的多重贷款。
并且一个用户应该可以进行多笔贷款,但是一笔贷款只能分配给一个特定的用户。
我目前这三个表之间的关系是否正确?如果没有,我很想知道如何解决它,以及我在这个问题上逻辑失败的原因。
先感谢您!
模型对我来说很好看。您可能需要在逻辑中应用一些内容,以强制用户只有一次贷款和同一本书的副本。
用户可以一次又一次地借出一个副本吗?然后关系到贷款复制1:M
继之前的答案之后。如果您添加一个 User_Roles 表,它可能/(将)防止您陷入会员陷阱。如果您假设具有 Admin 角色的用户可以执行只有 Basic 角色的用户的每个功能,那么需要角色检查的每个功能都必须具有可接受的角色列表(Admin + Basic)。很多时候,直接将所有不同的角色(即基本和管理员)分配给各个用户会更有效。然后,当一项功能需要基本角色授权时,所有用户都可以以同样的方式对待。从长远来看,它更简单。
Loans 表有许多问题。首先,没有主键,为了与您的设计的其余部分保持一致,它可以是 LoanID。CopyID 应该是 Copies 表的外键(也许这就是当前绘制的内容)。
数据模型的一种“高级”或现代方法可能是使用时态表对副本进行建模。由于单个副本只能借出 1 次,因此可以将借出的属性添加到 Copies 表中。然后,无论何时对 System Version'ed Copies 表进行更改,Copies_history 表都会自动保留所有先前贷款活动的完整记录。