sql - 当很多列可以有重复数据时如何去除冗余?
问题描述
我正在研究图书馆系统。我有一个书表,其中有 12 列,包括作者、标题、出版物等。在这 12 列中,有 2 列 book_id 和 isbn 是唯一的。当图书馆获得同一本书的 n 份副本时,唯一的列是 book_id 和 isbn。所有其他列将重复 n 次。这是不是一个糟糕的设计。有没有办法消除这种冗余?我想创建另一个表,我可以在其中唯一地存储所有减少的列,并将 book_id 和 isbn 分开。我应该这样做还是桌子就这样吗?
解决方案
你所描述的听起来像两个不同的表:
books
它定义了一本书的属性。copies
它定义了传入副本的属性。
您似乎了解书籍的属性。
的属性copies
可能包括(除了对 的外键引用books
)
- (健康)状况
- 获得日期
- 资源
- 有关收购的其他信息
它也可能有“处理”日期。或者你可以在某种copies_transactions
表格中维护它。
推荐阅读
- c# - MVC + WebApi。授权和认证
- encryption - javacardx AES 加密不等于 javax AES 解密
- mysql - Oracle 中是否有与 WITH 关键字等效的 MySQL
- firebase - Firestore 定价 - 实时更新侦听器计为一次读取或数据更改次数
- markdown - 降价中是否可以有非标题锚?
- python - python中treeview中使用bbox的示例
- angular - ngOnInit() 中的 router.navigate 在页面重新加载时不起作用
- python - 使用moviepy连接电影剪辑的更快方法?
- wordpress - 向 Woocommerce 用户我的帐户页面添加高级自定义字段
- angular - 如何在 Typescript 的泛型方法中获取 T 的类型?