首页 > 解决方案 > 当很多列可以有重复数据时如何去除冗余?

问题描述

我正在研究图书馆系统。我有一个书表,其中有 12 列,包括作者、标题、出版物等。在这 12 列中,有 2 列 book_id 和 isbn 是唯一的。当图书馆获得同一本书的 n 份副本时,唯一的列是 book_id 和 isbn。所有其他列将重复 n 次。这是不是一个糟糕的设计。有没有办法消除这种冗余?我想创建另一个表,我可以在其中唯一地存储所有减少的列,并将 book_id 和 isbn 分开。我应该这样做还是桌子就这样吗?

标签: sqldatabaseentity-relationship

解决方案


你所描述的听起来像两个不同的表:

  • books它定义了一本书的属性。
  • copies它定义了传入副本的属性。

您似乎了解书籍的属性。

的属性copies可能包括(除了对 的外键引用books

  • (健康)状况
  • 获得日期
  • 资源
  • 有关收购的其他信息

它也可能有“处理”日期。或者你可以在某种copies_transactions表格中维护它。


推荐阅读