《图书管理系统》数据库设计(共7页).doc
精选优质文档-倾情为你奉上数据库设计题某高校的图书管理系统需求描述如下:l 该系统有图书管理员和读者两类用户。l 实现按图书类别、ISBN、图书名称、关键词(每种图书最多可同时录入4个关键词)、出版社或作者(每种图书最多可同时录入3个作者)等手段检索图书信息;实现图书的借出和归还管理,并可对图书的借用情况进行各种查询和统计。l 图书管理员负责添加、删除和更新图书信息。所有图书实行分类管理,每一种图书属于且仅属于某一类;每一种图书由ISBN唯一标识;每一种图书可能库存多册。l 图书管理员负责添加、删除和更新读者信息。读者分教师、职工、研究生和本科生等几种类别,对于不同类别的读者可以同时借阅图书的册数不一样,图书的借期也不一样。l 读者可以按规定在一定期限内借阅一定数量的图书,同一种图书仅允许在借1册,只有图书有库存时才能借阅。读者可以预订目前借不到的图书。一旦预订的图书被归还或购买入库,系统立即通知预订者。l 读者逾期不归还图书的,每本每天按一定的标准(如0.1元/本·天)收取罚金;丢失图书的可以买相同版次的新书归还(图书管理员对归还的新书按丢失图书的信息编码入库)或按原价3倍的金额进行赔偿(图书管理员删除丢失图书的库存信息)。请完成:1分别画出借书、还书业务的处理流程。2设计该图书管理系统的E-R模型,E-R图重点是描述各实体集之间的联系,对于E-R图中的每一个实体集请通过数据字典定义它的相关属性。3将E-R模型转化为关系模式,请标出每一个关系中的主码和外码。4定义一个视图Utilization,它实现按年、ISBN汇总统计图书借阅情况,视图中包含年份、ISBN、图书名称、库存册数、借阅次数、平均每册借阅次数等属性。1.NYNYNNY结 束开 始是否继续借书?读者选择要借的书读者是否达到借书最大量?读者是否已在借该书?该书是否还有库存?办理借书手续更改相关信息是否预定?办理预定手续增加预定信息NYY图1 借书流程YYYYNNNN办理丢失图书的赔偿手续,并删除丢失图书的库存信息是否继续归还?结 束办理丢失图书所归还新书的入库手续办理归还手续修改图书库存信息办理罚款手续开 始选择要归还的图书是否逾期?是否丢失?是否买新书赔偿?图2 还书流程2. 参考解法一类似于实体集“借阅归还记录”和联系集“借阅图书”、“读者借阅”可画出实体集“预订记录”和联系集“预订图书”、“读者预订”。图书读者借阅归还记录单借阅图书读者借阅办理借书管理员处罚单处罚图书分类表分类分类读者分类表办理还书写作作者表设置关键词表3.图书分类号:Bookclass (classNo, className)图书:Book (ISBN, classNo, bookName, authorNo, keywordNo, publishingName, price, publishingDate, shopDate, shopNum, retainedNum)作者:Author (authorNo, authorName, sex, workunit)图书作者:BookAuthor (authorNo, ISBN)关键词:Keyword (keywordNo, keyword)图书关键词:BookKeyword (keywordNo, ISBN)借阅归还记录:Borrow (borrowNo, readerNo, ISBN, borrowDate, shouldDate, returnDate, borrowEmployeeNo, returnEmployeeNo)读者:Reader (readerNo, readerName, sex, identitycard, workunit, readerClassNo)读者分类:ReaderClass (readerClassNo, readerClass, borrowNumLimit, borrowTimeLimit) readerClass的取值有:”教师”、”职工”、”本科生”、”研究生”等图书管理员:Employee (employeeNo, employeeName, sex, salary)处罚单:Ticket (ticketNo, ticketClass, ticketAmount, borrowNo, ticketEmployeeNo) ticketClass的取值有:”逾期归还”、”丢失赔偿”、”丢失赔书”等2. 参考解法二一个借书单可以同时借阅多本不同的书。图书分类、读者分类、作者、关键词等同上。读者借书单预订图书读者预定管理员还书读者借书借阅图书处罚单处罚写作作者表设置关键词表借书图书分类表读者分类表分类预订单分类图书3.图书分类号:Bookclass (classNo, className)图书:Book (ISBN, classNo, bookName, authorNo, keywordNo, publishingName, price, publishingDate, shopDate, shopNum, retainedNum)作者:Author (authorNo, authorName, sex, workunit)图书作者:BookAuthor (ISBN, authorNo)关键词:Keyword (keywordNo, keyword)图书关键词:BookKeyword (ISBN, keywordNo)借书单:Borrow (borrowNo, readerNo, borrowDate, shouldDate, borrowEmployeeNo)借阅归还明细:BorrowDetail (borrowNo, ISBN, returnDate, returnEmployeeNo)读者:Reader (readerNo, readerName, sex, identitycard, workunit, readerClassNo)读者分类:ReaderClass (readerClassNo, readerClass, borrowNumLimit, borrowTimeLimit) readerClass的取值有:”教师”、”职工”、”本科生”、”研究生”等图书管理员:Employee (employeeNo, employeeName, sex, salary)处罚单:Ticket (ticketNo, ticketClass, ticketAmount, borrowNo, ISBN, ticketEmployeeNo) ticketClass的取值有:”逾期归还”、”丢失赔偿”、”丢失赔书”等4针对参照解法一的E-R模型:CREATE VIEW Utilization AsSELECT year(borrowDate) AS year, a.ISBN, bookName, shopNum, count(*) AS borrowNum, borrowNum/shopNum AS avgNumFROM Borrow AS a, Book AS bWHERE a.ISBN=b.ISBNGROUP BY year(borrowDate), a.ISBN, bookName, shopNum或(更好!)CREATE VIEW Utilization AsSELECT year, b.ISBN, bookName, shopNum, borrowNum, borrowNum/shopNum AS avgNumFROM Book AS b, ( SELECT year(borrowDate) AS year, ISBN, count(*) AS borrowNumFROM BorrowGROUP BY year(borrowDate), ISBN ) AS aWHERE a.ISBN=b.ISBN专心-专注-专业