我有一个与数据库架构有关的简单问题,如何检查学生是否借用了某本书,让我说我有一个表Borrowtable,我有Student_id,Book_id ....作为该表的属性,什么否则我应该添加,以便跟踪student_id是否借了一本书???
我认为要添加另一个字段,如Status作为INT字段,值为1表示借用,0表示不借用。这是好主意还是有其他方法可以做到这一点?
Thankx
Lulzim。
答案 0 :(得分:3)
您可能不需要其他列。正如名称BorrowTable
所暗示的那样,您只需存储在此表中借用 的图书。如果他们被退回或没有借用,您可以将其从此表中删除。
答案 1 :(得分:2)
针对两种情况进行了编辑
如果您无需跟踪用户的借用历史记录,则适用。借书是一次性的事件,不会被记住。
如果您的Borrowtable
包含Student_id
和Book_id
之间的地图,则无需另外一列来表明借用或未借用。
相反,您可以简单地依赖包含学生和书籍的行的存在。如果该行存在,则该书已经存在 借来的。如果该行已被删除或不存在,则该书尚未借用。
要测试任何用户是否可以借阅图书,只需检查表格中是否存在Book_id
。如果是,则该书不可用。
如果您需要跟踪用户借用的内容,请再添加两列DATETIME
类型的列,以跟踪借书日期和书籍的返回日期。
要测试图书是否可用于借阅,请使用以下查询:
SELECT Book_id FROM Borrowed WHERE Book_id=12345 AND NOW() BETWEEN Borrow_Date AND Return_Date;
如果任何行返回,则该图书目前已借用且无法使用。
答案 2 :(得分:1)
也许你应该在Borrowtable中有DateBorrowed和DateReturned的列。 您不需要位字段来指示学生是否借了这本书。对于给定的学生和书籍来说,存在的行应该足够了。
答案 3 :(得分:0)
您的表似乎是Many-to-many
表(Student
和Book
表之间)。你可以假设一个学生如果在这张表中借用了这本书(学生要么借书,要么他没有)。如果有更多可能的选项,那么您需要再添加一列并拥有StatusID
。