【问题标题】:Db design for library management system (autharization of different users and keeping the date of the order) [closed]图书馆管理系统的数据库设计(不同用户的授权并保持订单日期)[关闭]
【发布时间】:2021-04-01 21:43:05
【问题描述】:

在数据库课程的作业中,我要为图书馆管理系统做一个数据库设计。项目描述中有 2 个单独的部分我不明白。

首先,我们有不同的用户类型,称为库管理员 (lm) 和普通用户 (ru)。这两类用户也有不同的特点。比如ru.s只能看到自己的借阅信息,而lm.s可以看到所有用户的借阅信息。此外,ru.s 无权向系统添加书籍,而 lm.s 可以向系统添加新书籍。我的第一个问题是关于我刚刚列出的与授权相关的属性是否可以保留在数据库中。或者这些授权功能是否是在实现网站时需要为每种用户类型创建并添加到不同页面的功能?如果这些要在网站上确定,我如何确定没有 ru 发送过未经授权的查询?

我不明白的第二部分是,在保留俄罗斯的借阅信息的同时,我是否需要保留三个单独的信息,例如“借书日期”、“应归还图书日期”和“书的日期被带回来了”?因为每本书的借阅期限是固定的,设置为1个月。所以对我来说,只记录借书的日期似乎就足够了。因为这个日期加上1个月,已经可以算出还书的日期了。

此外,即使我认为我应该记录还书的日期,但当用户只是借书而尚未归还时,此信息将为空。据我所知,在数据库中保留空部分意味着糟糕的设计。所以我不明白如何解决这些问题,在此先感谢您的帮助。

【问题讨论】:

  • 我们预计贷款会被退回。 null 没有任何问题,尤其是在预期比率为 1 的情况下。

标签: mysql sql database entity-relationship


【解决方案1】:

是的,您可以在数据库中保留授权所需的属性,或者您可以使用在其他地方实现的功能,例如代理服务器、Web 服务器或现有库(例如 pam 等)。这些是设计选择,可能需要权衡取舍。

是的,如果您正在学习数据库建模,我不会存储冗余信息。也就是说,如果将固定的 1 个月更改为 2 个月,而您可能还有一些未付的书籍,会发生什么情况?

一种完全不同的建模方式是记录发生的事件。 (今天,用户 a,借来的,书 b),(上周五,用户 a,归还,书 c)等。然后您构建视图或物化表来反映您希望如何查看数据。这称为事件溯源,如果您拆分应用程序的读写部分,command and query responsibility segregation pattern

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2014-05-17
    • 2021-04-08
    • 2010-09-22
    • 2012-12-10
    相关资源
    最近更新 更多