1、第 11章数据库应用系统设计案例11.1 图书馆管理系统的设计 本例以图书馆管理系统为例说明如何开发数据库应用程序。11.1.1 需求分析 图书馆是这样的部门,馆中收藏大量图书供读者借阅,其中图书可分成不同的类别,如自然科学类,社会科学类等;借阅者可分为老师和学生。不同的借阅者最多可借的书的数量和期限不同,如教师最多可借 10本,期限为 3个月,学生最多可借 2本,期限为 1个月,无论老师和学生借阅超期还要进行罚款处理。 11.1.2 概念结构设计图书馆管理系统的 E-R图读者图书借阅日期 mnpq金额日期罚款读者借书证号读者姓名 性别是否有超期读者实体与其属性读者类别图书条形码号 书名 作者
2、 出版社图书实体与其属性出版日期 书的类别图书编号借阅状态 借阅次数11.1.3 逻辑结构设计 读者( 借书证号 ,读者姓名,性别,读者类别,是否有超期) 图书( 条形码号 ,图书编号,书名,作者,出版社,出版日期,书的类别,借阅状态,借阅次数 ) 借阅( 借书证号,条形码号,借出日期 ,归还日期) 罚款( 借书证号,条形码号,处罚日期 ,超期天数,罚款金额 ) 另外,为了保证系统的安全性,采用了登录的措施,用户名和密码存放在密码表中。 密码表( 用户名 ,密码) 11.1.4 规范化分析 除 罚款 关系外,其它 4个关系模式中主码是本模式的唯一决定因素,所以这 4个关系模式都属于 BCNF
3、. 但是在 罚款 关系中,罚款金额 =日罚款额 超期天数,所以 超期天数 罚款金额,而 超期天数 ( 借书证号,条形码号,处罚日期),所以 (借书证号,条形码号,处罚日期 ) 罚款金额,存在传递函数依赖,所以 罚款 关系属于 2NF,存在冗余现象。 读者往往既关心超期天数,又关心罚款金额,所以 “罚款金额 ”是必要的冗余。 11.1.5 在 SQL Server 2000 中创建数据库 图书表的结构字段名 数据类型 长度 条形码号 char 13 图书编号 char 10 书名 varchar 20 作者 varchar 20 出版社 varchar 50 出版日期 datetime 8 类别 char 10 借阅状态 char 4 借阅次数 smallint 2 读者表的结构字段名 数据类型 长度 借书证号 char 10 读者姓名 varchar 20 性别 char 2 读者类别 char 1 是否有超期 char 1