江明 何紹平 龍建宇 李濤 韋美雁
摘要:信息化時代的各行各業(yè)都傾向于把服務(wù)和管理工作通過信息化系統(tǒng)來完成,以提高服務(wù)效率和服務(wù)質(zhì)量,例如該瑜伽館約課系統(tǒng)。文章闡述了系統(tǒng)的需求分析、概念模型及邏輯模型設(shè)計、數(shù)據(jù)庫優(yōu)化、事務(wù)設(shè)計等,詳細介紹了MySQL數(shù)據(jù)庫技術(shù)在其中的應用。該系統(tǒng)為瑜伽館會員約課以及管理員排課、統(tǒng)計各項數(shù)據(jù)提供了技術(shù)支持,實現(xiàn)了小型企業(yè)的信息化管理。
關(guān)鍵詞:約課系統(tǒng);MySQL;概念模型;數(shù)據(jù)庫優(yōu)化;事務(wù)
中圖分類號:G250.74 文獻標識碼:A 文章編號:1006-8228(2020)08-53-04
0 引言
隨著當今計算機和通信網(wǎng)絡(luò)的技術(shù)迅速發(fā)展,各行業(yè)的服務(wù)也要求越來越高效和精準,為了幫助瑜伽從業(yè)人員完善對會員的服務(wù),特別研發(fā)了基于微信小程序[1-2]的瑜伽館約課管理系統(tǒng)。為了保證該系統(tǒng)正常高效地運行,并保證數(shù)據(jù)安全,建立一個穩(wěn)定、安全、易擴容、效率高的數(shù)據(jù)庫系統(tǒng)非常重要。
1 系統(tǒng)分析與設(shè)計
1.1 需求分析
為了明確瑜伽館約課系統(tǒng)的功能需求和數(shù)據(jù)處理需求,我們采用結(jié)構(gòu)化分析(Strctured Analysis,SA)方法[3]進行分析,采用DFD(Data Flow Diagram)工具[3]進行建模,我們得到了約課系統(tǒng)的頂層和中間層多個數(shù)據(jù)流圖,其中用戶驗證、約課信息兩個中間層數(shù)據(jù)流圖如圖1、圖2所示。
圖1是用戶登錄過程中數(shù)據(jù)流向示意圖。瑜伽約課系統(tǒng)是通過微信官方API接口來獲取用戶身份信息(即用戶的微信ID),從而保證用戶的惟一性和安全性。當用戶第一次進入微信小程序時,系統(tǒng)要求綁定個人信息,綁定成功后,用戶可以直接進入小程序。
約課系統(tǒng)的核心功能是為學員提供約課服務(wù),因此,理順各用戶和課程之間的業(yè)務(wù)邏輯十分重要。圖2是約課信息數(shù)據(jù)流圖,通過圖2我們可以了解到,系統(tǒng)需要存儲和處理的數(shù)據(jù)有學員、教練、用戶、課程、選課、簽到等信息。
1.2 系統(tǒng)功能設(shè)計
通過分析,我們首先明確了系統(tǒng)的總體目標:建立一個瑜伽館約課管理系統(tǒng),實現(xiàn)會員約課、管理員排課、發(fā)布課表等功能,從而幫助瑜伽館老板通過該微信小程序更好的為客戶服務(wù)。
同時,也明確了系統(tǒng)功能需求即:系統(tǒng)用戶分為學員、教練、管理員;學員可以查詢課表、約課、取消約課等;教練可以查詢課表、授課記錄、簽到;管理員負責學員和教練的注冊、周課表安排、課表發(fā)布等。此外,也希望通過該平臺能發(fā)布瑜伽館推薦的商品信息等。綜合起來,我們的系統(tǒng)可以從如下幾個角度來描述:用戶管理、課程管理、場館管理、商城管理。從而,我們獲得了系統(tǒng)主要功能模塊圖,如圖3所示。
1.3 數(shù)據(jù)庫設(shè)計
通過需求分析,我們已經(jīng)了解到系統(tǒng)的信息需求和處理需求,也就是我們需要通過數(shù)據(jù)庫系統(tǒng)來提供什么信息,數(shù)據(jù)處理如何進行,這些信息應如何存儲在數(shù)據(jù)庫中等。數(shù)據(jù)庫設(shè)計[4-5]是為了實現(xiàn)數(shù)據(jù)的存儲和管理,我們構(gòu)建了該系統(tǒng)的概念模型,其中包含的主要實體有教練、學員、場館、課程、教室、時間段等實體,其E-R圖如圖4所示。
根據(jù)E-R圖以及結(jié)合本系統(tǒng)的實際需求,我們在進行邏輯模型設(shè)計時,共設(shè)計了15張表,下面對一些重要的表進行簡單介紹。
(1) user表(用戶表)
考慮到教練、學員、管理員很多屬性都是相同的,為了節(jié)約空間,我們把三者結(jié)合,用user來表示。為了區(qū)分它們是不同的用戶,特增加一個屬性type,同時增加屬性openID對應用戶的微信ID.故有:user(user_id,openld, user_name, user_sex, user_tel, user_age, address,type)。該表候選碼有user_id, openld,主碼為user_ id。該模式符合BCNF范式。
(2) Student表(學員表)
User可以表示各用戶之間共同屬性,而對于不同用戶所具有的特殊屬性它無法表達,例如學員,系統(tǒng)需要記錄學員用戶取消約課的次數(shù)(惡意取消約課次數(shù)達到5次,將凍結(jié)其賬號,在凍結(jié)期限內(nèi),將不能約課)、賬號凍結(jié)時間和解除凍結(jié)時間、被凍結(jié)次數(shù)等,為此,我們設(shè)計了表student。
student( student_id, canceLdate_times, account_freeze_time, account_ remove_time, account_freezed_times)。 其中student_id的數(shù)據(jù)參照user表的user id。
因此,學員的信息需要通過user表和student表共同呈現(xiàn)。
(3) place表(場館表)
場館表使得整個系統(tǒng)管理更加明確,將系統(tǒng)劃分成場館為單位,教練和學員都有他惟一的所屬場館。place(place_id, place_name,address, phone)
(4) room表(教室表)
room(room_id,room name,place_id,type,capacity),其中place_id參照場館表中的place_id
(5) course_store表(課程表)
課程表,指的是瑜伽館所開設(shè)的課程,它存儲課程的編號,課程的名稱、課程引入時間、課程簡介等。course—store(store_id, store_name, strore_time,desc)。
(6) time_range表(時間段表)
為了排課方便,我們設(shè)置一個時間段表,time_range(time_range_id, start_time, end_time)。
(7) time_range_room表(教室空閑時間表)