圖書館管理系統第一部分,數據庫分析。
主要是需求分析、設計概要模塊、數據庫概念結構設計(E-R圖)、數據庫邏輯結構設計(表、存儲過程、觸發器)
目錄
1. 需求分析
1.1 數據流圖
1.2 數據字典
1.3 系統流程分析
2.?系統概要模塊設計
3.?數據庫概念結構設計(E-R圖)
4. 數據庫邏輯結構設計
4.1 基本表設計
4.2?視圖的設計
4.3?完整性的設計
4.4 存儲過程設計
1. 需求分析 1.1 數據流圖1.1頂級數據流圖
基于對圖書館管理信息系統的初步需求分析結果,其頂級數據流圖如圖1:
?用戶通過終端和系統交互,普通讀者、圖書管理員、系統管理員都可以使用終端,但是他們的賬戶權限不同,登錄成功后,所能做的操作不同。交互的結果會在顯示器以圖形界面顯示。
1.1.2 一級數據流圖
一級數據流圖如圖2 :
1.1.3 各模塊數據流圖
各功能模塊的數據流圖如圖3:
表1 ?讀者注冊信息數據字典???
名字: | 讀者注冊信息 |
別名: | |
描述: | 用戶在注冊時,輸入的個人信息聚合成的類(讀者) |
定義: | 用戶名+姓名+密碼md5+身份證+電話 |
位置: | 寫入數據庫readers表 |
表2 ?讀者用戶信息數據字典
名字: | 讀者用戶信息 |
別名: | |
描述: | 用戶查詢個人信息 |
定義: | 用戶名+姓名+年齡+身份證+電話 |
位置: | 讀者個人信息查詢結果 |
表3 圖書管理員注冊信息數據字典
名字: | 圖書管理員注冊信息 |
別名: | |
描述: | 圖書管理員賬戶信息,由系統管理員插入 |
定義: | 用戶名+姓名+密碼md5+身份證+電話+入職時間+工作位置+賬戶狀態 |
位置: | 寫入數據庫managers表 |
? 表4 圖書管理員用戶信息數據字典
名字: | 圖書管理員用戶信息 |
別名: | |
描述: | 圖書管理員查詢個人信息 |
定義: | 用戶名+姓名+年齡+身份證+電話+入職時間+工作位置 |
位置: | 圖書管理員個人信息查詢結果 |
?????????????????????????????????????????????表5 書籍信息數據字典
名字: | 書籍信息 |
別名: | |
描述: | 館藏書籍的信息 |
定義: | 書籍編號+書籍名字+價格+狀態+館藏位置 |
位置: | 書籍信息查詢返回結果,數據庫books表 |
?????????????????????????????????????????????表6 意見數據 數據字典
名字: | 意見數據 |
別名: | |
描述: | 用戶提交的意見經過處理后形成的一條記錄,存入數據庫 |
定義: | 意見記錄編號+提交者用戶名+用戶提交的意見(文本)+時間+處理狀態 |
位置: | 數據庫opinions表,反饋處理界面 |
?????????????????????????????????????????????表7 意見處理結果數據字典
名字: | 意見處理結果 |
別名: | |
描述: | 對于用戶提交的意見,由圖書管理員處理后給出結果,再被意見處理模塊封裝成一條記錄,存入數據庫 |
定義: | 意見記錄編號+處理結果(文本)+處理人用戶名+時間 |
位置: | 數據庫opinion_results表 |
?????????????????????????????????????????????表8 反饋結果數據字典
名字: | 反饋結果 |
別名: | |
描述: | 處理完成的反饋,查詢顯示意見數據和意見處理結果的自然連接 |
定義: | 參考 意見數據和意見處理結果 |
位置: | 反饋記錄查詢結果 |
?????????????????????????????????????????????表9 借閱記錄數據字典
名字: | 借閱記錄 |
別名: | |
描述: | 讀者借書形成的記錄 |
定義: | 借閱記錄號+讀者用戶名+書籍編號+時間+辦理人用戶名+狀態+可借時長 |
位置: | 數據庫borrows表 |
?????????????????????????????????????????????表10 歸還記錄數據字典
名字: | 歸還記錄 |
別名: | |
描述: | 讀者歸還所借書籍形成的記錄 |
定義: | 借閱記錄號+歸還時間+辦理人用戶名+滯納金額+類型 |
位置: | 數據庫returns表 |
用戶先進行選擇,經過注冊后登錄系統,或者使用已有賬號登錄系統。進入用戶操作界面,普通讀者、圖書管理員、系統管理員有各自可以執行的操作。選擇某個操作后,系統執行并輸出結果到顯示器。系統流程圖如圖4:
通過對圖書館管理信息系統的分析,定義出系統模塊設計圖如圖5:
其中定義的功能模塊包括以下方面:
注冊模塊:進入系統前需要登錄,沒有賬號就需要注冊賬號。填寫用戶名,姓名,密碼以及身份證,手機號。驗證通過即可注冊成功。該模塊注冊只能獲得讀者賬號。
登錄模塊:用戶輸入用戶名,密碼,經過系統驗證通過后可以進入系統操作界面。不同類別的用戶都可以使用此模塊,但是進入的操作界面功能不同。
用戶操作模塊:登錄成功后,進入此模塊。分3類用戶:
第一類是讀者,讀者賬戶可以進行的操作有個人信息查詢修改、書籍信息查詢、意見反饋、借閱記錄查詢、反饋記錄查詢;
第二類是圖書管理員,圖書管理員賬戶可以進行的操作有個人信息查詢修改、書籍信息查詢、圖書管理、意見反饋處理、圖書借閱、圖書歸還、借閱延期、借閱記錄查詢、反饋記錄查詢,歸還記錄查詢;
第三類是系統管理員,系統管理員賬戶可以進行的操作是管理圖書管理員賬戶,他只進行圖書管理員的查詢、添加、修改、刪除。對于圖書的處理,由圖書管理員進行。
3.?數據庫概念結構設計(E-R圖)E-R圖 如圖6:
? 圖書管理員賬戶由系統管理員創建并管理,一個系統管理員創建多個圖書管理員,之后圖書館由圖書管理員進行管理,但是不關心圖書管理員是被誰創建。讀者可以進行登錄,然后在用戶終端查詢和修改個人信息,查詢圖書信息,借閱記錄,提交反饋,查詢反饋結果,這些是個人可以完成的,由系統去查詢數據庫并返回結果給用戶;讀者進行借書和還書需要圖書管理員幫助。總體上說,一個圖書管理員可以服務多名讀者,一名讀者可以被多個圖書管理員服務,具體的,一名讀者可以同時借多本書,一本書同時只能被一名讀者借,每一本書借書過程只能由一個圖書管理員負責。一本書還書過程由一個圖書管理員負責,這樣形成借閱表和歸還表。一名讀者可以提交多條反饋記錄,一個圖書管理員可以處理多條反饋記錄,而一條反饋記錄只由一個圖書管理員處理,形成意見反饋表和反饋結果表。而圖書管理員對圖書的增刪改查我們也不關心,不成為表。
4. 數據庫邏輯結構設計 ?4.1 基本表設計讀者用戶表 ,存放已注冊讀者用戶的賬戶信息
表11 讀者用戶表(readers)
字段名稱 | 數據類型 | 說 ??明 |
reader_name | varchar(20) | 用戶名(賬號) |
password | varchar(35) | 密碼md5 |
name | varchar(10) | 姓名 |
id_num | varchar(20) | 身份證號 |
phone_num | varchar(15) | 手機號 |
圖書管理員用戶表,存放所有圖書管理員的賬戶信息
?????????????????????????????表12 圖書管理員用戶表(managers)
字段名稱 | 數據類型 | 說 ??明 |
manager_name | varchar(20) | 用戶名(賬號) |
password | varchar(35) | 密碼md5 |
name | varchar(10) | 姓名 |
id_num | varchar(20) | 身份證號 |
phone_num | varchar(15) | 手機號 |
entry_time | date | 入職時間 |
work_position | varchar(20) | 工作位置 |
state | varchar(5) | 賬戶狀態(正常、注銷之一)(默認正常) |
意見反饋表,存放用戶的意見反饋形成的記錄
?????????????????????????????????????表13 意見反饋表(opinions)
字段名稱 | 數據類型 | 說 ??明 |
opinion_rec_num | int | 反饋記錄的編號 |
reader_name | varchar(20) | 提交者用戶名 |
opinion | varchar(100) | 反饋意見文本 |
submit_time | date | 意見提交時間 |
state | varchar(10) | 處理狀態(待處理、處理完成)(默認待處理) |
書籍信息表, 圖書館藏書的信息
?????????????????????????????????????表14 書籍信息表(books)
字段名稱 | 數據類型 | 說 ??明 |
book_num | int | 圖書在圖書館的編號 |
book_name | varchar(30) | 書籍名字 |
book_price | float | 書籍價格 |
book_state | varchar(10) | 書籍狀態(可借,不可借) (默認不可借) |
book_position | varchar(30) | 館藏位置(剛添加時暫時為空) |
意見處理結果表, 意見處理完成后,結果存入此表。
?????????????????????????????表15 意見處理結果表(opinion_results)
字段名稱 | 數據類型 | 說 ??明 |
opinion_rec_num | int | 被處理的記錄的編號 |
result | varchar(100) | 意見處理結果文本 |
transactor | Varchar(20) | 處理人的用戶名,是一個圖書管理員 |
finish_time | date | 處理完成時間 |
借閱記錄表, 讀者借閱書籍形成的記錄
?????????????????????????????????????表16 借閱記錄表(borrows)
字段名稱 | 數據類型 | 說 ??明 |
borrow_rec_num | int | 借閱記錄的編號 |
reader_name | varchar(20) | 借閱者用戶名 |
book_num | int | 被借圖書在圖書館的編號 |
borrow_time | date | 借閱時間 |
transactor | varchar(20) | 辦理人的用戶名 |
borrow_state | varchar(10) | 借閱狀態(已還,待還) |
borrow_duration | smallint | 允許借閱時長(天)(默認30) |
歸還記錄表 , 讀者歸還書籍形成的記錄
?????????????????????????????????????表17 歸還記錄表(returns)
字段名稱 | 數據類型 | 說 ??明 |
borrow_rec_num | int | 對應借閱記錄的編號 |
return_time | date | 歸還時間 |
transactor | varchar(20) | 辦理人的用戶名 |
fee | float | 滯納/賠償金額(默認空) |
kind | varchar(5) | 歸還的類型(正常、丟失、損壞) |
上述表已經優化到BC范式,沒有插入刪除更新異常。
根據E-R圖的實體聯系,關于圖書管理員管理書籍,讀者不會關心書籍是哪個管理員添加的,書籍被刪也只會知道沒有這本書,位置變了讀者也不知道,而對管理員來說,也不關心這些記錄,所以我們沒必要將這些記錄存儲,需要查詢時由系統管理員導出日志就可以了。
讀者提交意見反饋形成一條記錄,管理員處理意見反饋形成一條記錄。
讀者提交借書請求,由管理員代理執行形成一條記錄。
讀者提交還書請求,由管理員代理執行形成一條記錄。
4.2?視圖的設計?????????????????????????????????????????????表18 視圖定義
視圖名 | 作用 |
讀者用戶信息 | 讀者查詢個人信息的返回結果 |
圖書管理員用戶信息 | 圖書管理員查詢個人信息的返回結果 |
反饋結果信息 | 讀者或管理員查詢反饋的處理結果 |
歸還信息 | 讀者或管理員查詢借閱歸還記錄的返回結果 |
圖書信息(book_message) | 讀者或管理員查詢圖書記錄的返回結果(同books) |
?????????????????????????????表19 讀者用戶信息視圖(reader_message)
字段名稱 | 說 ???明 | 所來自的基本表的字段 |
reader_name | 讀者用戶名 | readers.reader_name |
name | 讀者姓名 | readers.name |
id_num | 身份證號碼 | readers.id_num |
age | 年齡 | 當前時間減去身份證的出生日期 |
phone_num | 手機號 | readers.phone_num |
?????????????????????表20 圖書管理員用戶信息視圖(manager_message)
字段名稱 | 說 ???明 | 所來自的基本表的字段 |
manager_name | 管理員用戶名 | managers.reader_name |
name | 管理員姓名 | managers.name |
age | 年齡 | 當前時間減去身份證的出生日期 |
id_num | 身份證號碼 | managers.id_num |
phone_num | 手機號 | managers.phone_num |
entry_time | 入職時間 | managers.entry_time |
work_position | 工作位置 | managers.work_position |
?????????????????????表21 反饋結果信息視圖(opinion_result_message)
字段名稱 | 說 ???明 | 所來自的基本表的字段 |
opinion_rec_num | 反饋記錄編號 | opinions.rec_num |
reader_name | 提出反饋的讀者用戶名 | opinions.reader_name |
opinion | 讀者提出的意見文本 | opinions.opinion |
submit_time | 提交時間 | opinions.submit_time |
state | 處理狀態 | opinions.state |
result | 處理結果文本 | opinion_results.result |
transactor | 處理人同戶名 | opinion_results.transactor |
finish_time | 處理完成時間 | opinion_results.finish_time |
?????????????????????????????表22 歸還信息視圖(return_message)
字段名稱 | 說 ???明 | 所來自的基本表的字段 |
borrow_rec_num | 借閱記錄編號 | borrows.borrow_rec_num |
reader_name | 借閱者用戶名 | borrows.reader_name |
book_num | 被借圖書在圖書館的編號 | borrows.book_num |
book_name | 圖書名字 | books.book_name |
borrow_time | 借閱時間 | borrows.borrow_time |
borrow_transactor | 借閱辦理人的用戶名 | borrows.transactor |
borrow_state | 借閱狀態 | borrows.borrow_state |
borrow_duration | 借閱期限 | borrows.borrow_duration |
return_time | 歸還時間 | returns.return_time |
return_transactor | 歸還辦理人的用戶名 | returns.transactor |
fee | 滯納/賠償金額 | returns.fee |
kind | 歸還時的類型 | returns.kind |
?????????????????????????????????????????????表23 ?圖書信息視圖
字段名稱 | 說 ???明 | 所來自的基本表的字段 |
book_num | 圖書編號 | books.bok_num |
book_name | 圖書名 | books.book_name |
book_price | 圖書價格 | books.book_price |
book_state | 圖書狀態 | books.book_state |
book_position | 圖書位置 | books.book_position |
?????????????????????????????????????????????表24 完整性約束
字段名 | 約束類型及描述 |
readers.reader_name | 主鍵 |
readers.password | 非空 |
readers.name | 非空 |
readers.id_num | 候選碼,長度15或18位 |
readers.phone_num | 空或11位數字 |
managers.manager_name | 主鍵 |
managers.password | 非空 |
managers.name | 非空 |
managers.id_num | 候選碼,長度15或18位 |
managers.phone_num | 非空,11位數字 |
managers.entry_time | 非空 |
managers.work_position | 非空 |
managers.state | 非空,(正常、注銷之一)(默認正常) |
books.book_num | 主鍵 |
books.book_name | 非空 |
books.book_price | 非空,非負 |
books.book_state | 非空(可借,不可借之一)(默認不可借) |
opinions.opinion_rec_num | 主鍵 |
opinions.reader_name | 外鍵,參照readers.reader_name |
opinions.opinion | 非空 |
opinions.submit_time | 非空 |
opinions.state | 非空,(待處理、處理完成其中之一)(默認待處理) |
opinion_results.opinion_rec_num | 主鍵,外鍵,參照opinions.opinion_rec_num |
opinion_results.result | 非空 |
opinion_results.transactor | 外鍵,參照managers.manager_name |
opinion_results.finish_time | 非空 |
borrows.borrow_rec_num | 主鍵 |
borrows.reader_name | 外鍵,參照readers.reader_name |
borrows.book_num | 外鍵,參照books.book_num |
borrows.borrow_time | 非空 |
borrows.transactor | 外鍵,參照managers.manager_name |
borrows.borrow_state | 非空,(已還、未還之一)(默認未還) |
borrows.borrow_duration | 非空(默認30) |
returns.borrow_rec_num | 主鍵,外鍵,參照borrows |
returns.return_time | 非空 |
returns.transactor | 外鍵,參照managers.manager_name |
returns.kind | 非空,(正常、丟失、損壞之一)(默認正常) |
?表25 觸發器? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
觸發器名 | 作用 |
insert_opinion_results | after insert 觸發器,opinion_results表,插入數據后,將opinions表對應記錄的state置為’處理完成’ |
insert_borrows | after insert 觸發器,borrows表,插入數據后,將books表對應記錄的book_state置為’不可借’ |
insert_books | before insert 觸發器,books表,,如果要插入數據book_position字段不為空,將book_state置為’可借’ |
update_books | after update 觸發器,books表,修改數據后,如果是添加館藏位置,將book_state置為’可借’ |
?????????????????????????????????????????????表26 存儲過程
存儲過程名 | 作用 |
insert_reader | 注冊驗證通過后插入讀者信息,無返回值 參數(用戶名,密碼md5,姓名,身份證號,手機號) |
insert_manager | 注冊驗證通過后插入圖書管理員信息,無返回值 參數(用戶名,密碼md5,姓名,身份證號,手機號,入職時間,工作位置) |
insert_opinion | 意見反饋模塊插入意見反饋記錄,無返回值 ??? 參數(用戶名,意見,當前時間) |
insert_book | 插入圖書記錄,無返回值 參數(書籍名字,書籍價格,館藏位置) |
insert_opinion_result | 管理員處理完成后插入意見處理結果記錄,無返回值 參數(被處理的記錄的編號,意見處理結果文本,處理人的用戶名,當前時間) |
insert_borrow | 管理員代理用戶執行圖書借閱,插入借閱記錄,無返回值 參數(借閱者用戶名,被借圖書在圖書館的編號,當前時間,辦理人的用戶名) |
insert_return | 管理員代理用戶執行圖書歸還,插入歸還記錄,返回值為滯納金額 參數(對應借閱記錄的編號,當前時間,辦理人的用戶名,類型) |
select_reader_message | 查詢讀者的個人信息,返回外模式(reader_message) 參數(讀者用戶名) |
select_manager_message | 查詢圖書管理員的個人信息,返回外模式(manager_message) 參數(圖書管理員用戶名) |
select_book_message | 查詢圖書信息,返回圖書信息(book_message) 參數(書籍名) |
select_book_by_num | 查詢圖書信息,返回圖書信息(book_message) 參數(書籍編號) |
select_pending_opinion | 查詢待處理的意見,返回待處理意見信息(pending_opinion_message) 參數() |
select_opinion | 查詢意見的主要信息,返回內容和狀態 參數(意見編號) |
select_opinion_result_message | 查詢反饋記錄,返回反饋結果信息(opinion_result_message) 參數(讀者用戶名) |
select_return_message | 查詢借閱歸還記錄,返回借閱歸還信息(return_message) 參數(讀者用戶名) |
select_borrow_by_booknum | 查詢借閱歸還記錄,返回借閱歸還信息(return_message) 參數(借閱記錄編號) |
update_reader_message | 修改讀者個人信息,無返回值 參數(讀者用戶名,新姓名,新身份證,新電話) |
update_reader_password | 修改讀者個人密碼,無返回值 參數(讀者用戶名,新密碼的md5) |
update_manager_message | 修改圖書管理員個人信息,無返回值 參數(管理員用戶名,新姓名,新身份證,新電話) |
update_manager_password | 修改圖書管理員個人密碼,無返回值 參數(管理員用戶名,新密碼的md5) |
update_manager_work | 系統管理員修改圖書管理員的工作信息,無返回值 參數(管理員用戶名,新工作位置,新賬戶狀態) |
update_book | 修改圖書信息,無返回值 參數(圖書編號,新書籍名字,新書籍價格,新書籍狀態,新館藏位置) |
delete_book | 刪除圖書,無返回值 參數(圖書編號) |
delete_manager | 刪除圖書管理員賬戶,無返回值 參數(圖書管理員用戶名) |
extend_time | 延長借閱時間,返回操作結果(成功/超期) 參數(圖書編號) |
check_reader | 檢查讀者用戶密碼,返回結果(正確/錯誤) 參數(用戶名,密碼md5) |
check_manager | 檢查圖書管理員用戶密碼,返回結果(正確/錯誤) 參數(用戶名,密碼md5) |
check_reader_sign_up | 檢查讀者注冊信息,返回結果(用戶名已存在/身份證號已被注冊/OK) 參數(用戶名,身份證號) |
check_manager_sign_up | 檢查圖書管理員注冊信息,返回結果(用戶名已存在/身份證號已被注冊/OK) 參數(用戶名,身份證號) |
至此數據庫基本設計完成,之后是使用數據庫產品進行實現
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
分享名稱:數據庫課程設計-圖書館管理系統(1.數據庫分析部分)-創新互聯
文章起源:http://newbst.com/article38/dipssp.html
成都網站建設公司_創新互聯,為您提供網站設計公司、定制開發、移動網站建設、網站營銷、動態網站、做網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯