借贷网络的ER模型?

时间:2015-01-06 00:26:19

标签: database entity conceptual

我计划创建我的第一个数据库,这将成为一个新手问题。我的数据库应该是借阅借贷网络,用户可以借用其他用户的产品。创建一个用户帐户应该足以能够借入和借出同一时间。唯一的例外是用户不能借用他自己提供的产品。

所以我的问题是这两个选项中哪一个更好:

为用户提供一个可借入和借出的实体。实体名称" USER"。 为借款人和提供者设两个不同的实体,以防止用户借用他自己的产品?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,我会推荐第三种方法:

  • USER model =这些是可借入或借出的用户
  • ITEM model =这标识了可以借用的项目以及拥有它们的人员
    • owner_id =引用USER对象的ID。
  • HISTORY model =跟踪贷款历史记录,可能包含以下内容:
    • item_id =引用ITEM
    • 的ID
    • borrower_id =引用借用该项目的USER的ID
    • borrowed_at =借用物品的时间戳
    • returned_at =将时间返回给所有者的时间戳。

使用此模型可以直接确保borrower_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);

当然,其他语言的语法也不同。

您可以通过六种不同的方式对此进行建模,但在不了解您的用例的情况下,这就是我要开始的地方。