![](/img/trans.png)
[英]Relationship into table (ER-model into relational model)
[英]ER-Model for Borrowing-Lending-Network?
我计划创建我的第一个数据库,因此这将是一个新手问题。 我的数据库应该是一个借贷网络,用户可以在其中借用其他用户的产品。 创建一个用户帐户应该足以能够同时借贷。 唯一的例外应该是用户不能借用他自己提供的产品。
所以我的问题是,这两种选择中哪一种更好:
为用户提供一个可以借贷的实体。 实体名称“ USER”。 为了防止使用者借用自己的产品,借款人和捐赠人都有两个不同的实体吗?
如果我正确理解了您的问题,建议您采用第三种方法:
USER
模型=这些是可以借贷的用户 ITEM
模型=标识可以借用的项目以及谁拥有这些项目
owner_id
=引用USER
对象的ID。 HISTORY
模型=跟踪贷款历史,可能包括以下内容:
item_id
=引用了ITEM
的ID borrower_id
=引用借用该项目的USER
的ID borrowed_at
=物品借入的时间戳 returned_at
=时间返回给所有者的时间戳。 使用此模型,可以很直接地确保borower_id和item.owner_id不相同,并确保不能将同一项目同时借给两个不同的借方。
从SQL的角度来看,可以通过执行以下操作找到我不拥有的所有项(其中MY_ID是我的user.id):
SELECT * from items where owner_id != MY_ID;
如果要查找我不拥有的所有且当前未借用的物品,也许:
SELECT * from items where owner_id != MY_ID and id not in (select item_id from history where borrowed_at is not null and returned_at is null);
当然,其他语言的语法也会有所不同。
您可以使用六种不同的方式对此进行建模,但是在不了解您的用例的情况下,这就是我的起点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.