图书馆管理系统的数据库设计(不同用户的授权和保持订单的日期)

Db design for library management system (autharization of different users and keeping the date of the order)

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

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

第二个不明白的是,在保留ru.s的借阅信息的同时,是否需要保留“借书日期”、“借书日期”等三个单独的信息?被归还”和“书被带回的日期”?因为每本书的借阅期限是固定的,定为1个月。所以我似乎只记录借书的日期就足够了。因为在这个日期上加上1个月,已经可以算出还书日期了。

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

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

是的,如果你是研究数据库建模的,我不会存储冗余信息。也就是说,如果将固定的 1 个月更改为 2 个月,而您可能有一些图书未结清,会发生什么情况?

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