sql—当许多列可以有重复数据时,如何消除冗余?

blmhpbnm  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(405)

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

klr1opcd

klr1opcd1#

我想你应该用两张不同的table。
在一个表中,您可以存储像book\u id、isbn\u id这样的唯一键,而在另一个表中,您可以使用这些book\u id或isbn\u id中的一个作为引用外键。或者,您也可以在第一个表中创建一个自动递增id,以便外键引用第二个表。
在第二个表中,您可以保留第一个表中的所有其他10列+1列作为参考。
这将有助于保持冗余,而且如果将来要扩展数据库表,第一个表也可以用于Map。

brtdzjyr

brtdzjyr2#

你所描述的听起来像两张不同的table: books 它定义了一本书的属性。 copies 定义传入副本的属性。
你似乎理解书的属性。
的属性 copies 可能包括(除了外键引用 books )
条件
取得日期
来源
其他收购信息
它也可能已经“处理”了日期。或者你可以在一个 copies_transactions 某种table。

相关问题