我正在研究一个图书馆系统。我有一个图书表,其中有12列,包括作者,标题,出版物等。在这12个有2列图书id和isbn是唯一的。当一个图书馆得到同一本书的n个副本时,唯一唯一唯一的列是图书id和isbn。所有其他列将重复n次。这是个糟糕的设计吗。有没有办法消除这种冗余?我想创建另一个表,在那里我可以唯一地存储所有冗余列,并将图书id和isbn分开。我应该那样做吗?还是这张table就这么好?
我正在研究一个图书馆系统。我有一个图书表,其中有12列,包括作者,标题,出版物等。在这12个有2列图书id和isbn是唯一的。当一个图书馆得到同一本书的n个副本时,唯一唯一唯一的列是图书id和isbn。所有其他列将重复n次。这是个糟糕的设计吗。有没有办法消除这种冗余?我想创建另一个表,在那里我可以唯一地存储所有冗余列,并将图书id和isbn分开。我应该那样做吗?还是这张table就这么好?
2条答案
按热度按时间klr1opcd1#
我想你应该用两张不同的table。
在一个表中,您可以存储像book\u id、isbn\u id这样的唯一键,而在另一个表中,您可以使用这些book\u id或isbn\u id中的一个作为引用外键。或者,您也可以在第一个表中创建一个自动递增id,以便外键引用第二个表。
在第二个表中,您可以保留第一个表中的所有其他10列+1列作为参考。
这将有助于保持冗余,而且如果将来要扩展数据库表,第一个表也可以用于Map。
brtdzjyr2#
你所描述的听起来像两张不同的table:
books
它定义了一本书的属性。copies
定义传入副本的属性。你似乎理解书的属性。
的属性
copies
可能包括(除了外键引用books
)条件
取得日期
来源
其他收购信息
它也可能已经“处理”了日期。或者你可以在一个
copies_transactions
某种table。