Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dp3 ILS 模块功能设想 #14

Open
DigitalPlatform opened this issue Aug 4, 2019 · 3 comments
Open

dp3 ILS 模块功能设想 #14

DigitalPlatform opened this issue Aug 4, 2019 · 3 comments

Comments

@DigitalPlatform
Copy link
Owner

如题。

@DigitalPlatform
Copy link
Owner Author

DigitalPlatform commented Aug 4, 2019

借阅信息的数据结构设想

dp2 系统是利用读者库和实体库来表现借阅信息。读者记录中用 XML 元素记载这个读者当前在借的图书线索;册记录中用 XML 元素记载这一册图书被哪个读者在借。

这种结构的优点是,无论从读者记录,还是从册记录,都能直接根据 XML 元素获得借阅信息。缺点是,读者记录和册记录之间有锁定关系,双链需要努力保持完整性,会有一些维护的压力和开销。

dp3 系统可以换一种思路来表现借阅信息。第一种设想,是在读者记录和册记录之外,再建立一种在借列表关系数据库,里面每一条记录存储一个关系:哪个读者在借哪一册图书。

当借书操作时,给列表添加一个记录即可;还书操作时,从列表中删除一个记录即可。操作中可以完全不发生对读者记录和册记录的修改,便于操作快速完成。

缺点可能是,当需要获取一个读者的信息,包括在借列表的时候,需要两个动作:一个是获取读者记录;另外是对列表记录进行一次检索,列出所有和这个读者有关的列表记录。获取册信息也类似。

第二种设想,是在册记录中设计一个“借阅者”字段,如果这一册书被借阅了就填写这个字段,还掉了就清除这个字段内容。等于把设想一的列表合并到册记录中了。这个方式的优点和缺点和方式一差不多,只是发生借书还书的时候,要对册记录进行修改,做不到方式一的“对两类记录都不发生修改”那么纯粹。那么在借还操作瞬间,要锁定册记录。

如果系统设计时如果用 master database 形态表达册数据,目前我还是倾向于册记录中包含“借阅者”字段;只是在映射为 SQL 库表的时候,可以把其中的借阅者字段和相关字段(所借图书 ID)单独拿出来成为一个 SQL 表,以获得某些性能的优势(有利于写独立)。

第三种设想,建立一个借阅动作表,每一次借书和还书操作都写入一条记录。这个表同时也提供了在借图书信息功能。借书动作行里面有一个关联信息字段,在这里记录借书动作对应的还书动作的记录 ID(如果发生了还书的话)。这样,要查看一个读者当前的在借图书列表,只需要把和这个读者有关的所有借书记录中,关联信息字段为空的记录列出来即可。

@DigitalPlatform
Copy link
Owner Author

图书位置变动轨迹

未来的系统有个趋势就是越来越重视地理信息的管理。那么图书调拨迁移的轨迹,是一种非常重要的历史信息。建议在操作日志中增加一种图书位置变动的记录类型,记载这类信息。

位置变动可能因为图书移交、上架操作引起。读者借书和还书时刻也可以引起位置变动。比如读者从哪个工作台办理的借书手续;还回图书到哪个工作台。

@DigitalPlatform
Copy link
Owner Author

读者位置变动轨迹

门禁可以提供读者卡经过的信息。借书和还书操作时候,前端所在的工作台也能提供位置信息。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant