实现数据库保存不包括冗余的sapproach

时间:2013-11-06 15:21:13

标签: java database database-normalization

我正在创建一个图书馆管理系统。

在我的程序中,每个用户都可以借阅一些书籍,然后我应该将这些书籍信息(如书名,书籍isbn,借用日期)保存到我数据库的表格中。

我系统中的每个用户都有一个主键(ID),我想使用这种方法:

当用户想借书时,书籍信息应保存在我的数据库中的表格中,但现在,每行ID中的userBooksTable号码都是重复的。

有没有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

您的表格布局可能与此类似:

books
-----
id (pk)
isbn
name

user
----
id (pk)
name
...

borrow
------
userId (pk, fk)
bookId (pk, fk)
date (pk)

因此主表格将是borrow,其中包含用户借用哪个日期的图书的数据。所有列都是主键的一部分,因为用户可以在不同的日期多次借一本书(假设它在两者之间返回;))。

您可能需要更多信息(例如,如果用户一次借用多份副本或退回书籍等),但我会留给您。

或者,您可以将isbn用作图书的ID,具体取决于它是否是唯一的,例如您可以在书上找到包含isbn,name等的bookinfo表,并在books表中包含该书的一个具体副本的数据。