許俊
摘要:詳細(xì)描述乒乓球比賽報(bào)名數(shù)據(jù)庫(kù)的需求、數(shù)據(jù)字典,設(shè)計(jì)了關(guān)系型數(shù)據(jù)庫(kù)表的結(jié)構(gòu),在MySQL中實(shí)現(xiàn)了視圖查詢整體名單,存儲(chǔ)過(guò)程導(dǎo)出整體名單為excel文件,為項(xiàng)目的開發(fā)提供了后臺(tái)數(shù)據(jù)支撐。
關(guān)鍵詞:乒乓球報(bào)名;數(shù)據(jù)庫(kù);設(shè)計(jì)實(shí)現(xiàn)
中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2019)05-0016-03
在以往的乒乓球比賽準(zhǔn)備階段,參賽選手、團(tuán)體的報(bào)名數(shù)據(jù)由人工填寫在紙張表格后手工錄入電腦,或者用QQ、微信收集,再?gòu)?fù)制到電子表格,對(duì)報(bào)名的原始數(shù)據(jù)整理加工,大量工作是手工整理,統(tǒng)計(jì)分析,耗時(shí)又低效,數(shù)據(jù)可靠性差,因此需要統(tǒng)計(jì)精確、格式規(guī)范的報(bào)名數(shù)據(jù)為科學(xué)管理比賽賽程、編排、抽簽、管控賽場(chǎng)秩序提供支撐,也是乒乓球比賽準(zhǔn)備工作高效率信息化的基礎(chǔ)信息來(lái)源。本文所述乒乓球比賽報(bào)名系統(tǒng)基于大數(shù)據(jù)技術(shù),對(duì)大量數(shù)據(jù)的集中存儲(chǔ)、使用共享管理,查詢精準(zhǔn)靈活,穩(wěn)定可靠,將報(bào)名信息整理成整體報(bào)名名單或分組報(bào)名名單,導(dǎo)出為Excel格式,為賽事助手提供參賽選手的報(bào)名名單信息,是整個(gè)賽事的賽程編排、抽簽入位、比賽排陣、比賽控場(chǎng)、生成秩序冊(cè)、生成查詢比賽進(jìn)度、查詢比賽成績(jī)、排名等環(huán)節(jié)信息化管理的數(shù)據(jù)來(lái)源。本文對(duì)乒乓球比賽報(bào)名系統(tǒng)的數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)。
1 乒乓球比賽報(bào)名的需求
1.1 參與者
系統(tǒng)管理員:創(chuàng)建、維護(hù)管理所有賽事的比賽名稱、初始化比賽項(xiàng)目,審核賽事消息的合法、合理性等。創(chuàng)建、修改、刪除賽事管理員。是系統(tǒng)的最高級(jí)別、無(wú)限制完全權(quán)。例如報(bào)名系統(tǒng)的網(wǎng)管員、信息員、技術(shù)支持員。
賽事管理員:創(chuàng)建、修改參賽隊(duì)管理員。管理本賽事的時(shí)間、地點(diǎn)、報(bào)名起止時(shí)間、設(shè)置比賽項(xiàng)目等信息,查詢賽事報(bào)名信息,報(bào)名信息統(tǒng)計(jì)匯總。創(chuàng)建各參賽隊(duì)隊(duì)名、設(shè)置領(lǐng)隊(duì)。審核各參賽隊(duì)的基本資料。查看全體報(bào)名運(yùn)動(dòng)員個(gè)人基本資料、參賽項(xiàng)目。指定團(tuán)體賽的種子號(hào)。導(dǎo)出參賽名單。下載裁判員、參賽隊(duì)團(tuán)、參賽選手基本資料。例如乒乓球協(xié)會(huì)主席、比賽主辦方技術(shù)官員。
參賽隊(duì)管理員:創(chuàng)建、修改本參賽隊(duì)隊(duì)名、設(shè)置領(lǐng)隊(duì)、教練。創(chuàng)建、修改、刪除本隊(duì)各團(tuán)體名稱、數(shù)量。查看、審核本隊(duì)報(bào)名運(yùn)動(dòng)員個(gè)人資料、參賽項(xiàng)目。本隊(duì)團(tuán)體選手人員項(xiàng)目的組團(tuán),指定隊(duì)員的隊(duì)內(nèi)技術(shù)號(hào)。例如各運(yùn)動(dòng)隊(duì)領(lǐng)隊(duì)、教練。
運(yùn)動(dòng)員:注冊(cè)、修改自己的注冊(cè)信息,報(bào)名與取消報(bào)名。
1.2 業(yè)務(wù)用例
包括乒乓球比賽報(bào)名系統(tǒng)整體業(yè)務(wù)用例圖,及參賽隊(duì)管理包用例圖、賽事管理包用例圖。
注冊(cè)個(gè)人信息:運(yùn)動(dòng)員填寫注冊(cè)信息,真實(shí)姓名、性別、年齡、單位、身份證號(hào)、郵箱、手機(jī)號(hào)碼、密碼、確認(rèn)密碼,注冊(cè)進(jìn)乒乓球比賽報(bào)名系統(tǒng)。
報(bào)名比賽:運(yùn)動(dòng)員填寫必須信息 ,類別、比賽項(xiàng)目、隊(duì)、團(tuán)體。參加某項(xiàng)乒乓球賽事。
取消報(bào)名:運(yùn)動(dòng)員取消已經(jīng)報(bào)名的賽事,不參加比賽。
創(chuàng)建賽事:系統(tǒng)管理員創(chuàng)建某項(xiàng)乒乓球賽事的名稱。系統(tǒng)接受提交的賽事名稱,自動(dòng)生成唯一的賽事編號(hào)。
初始化比賽項(xiàng)目:初始化新創(chuàng)建的賽事的比賽項(xiàng)目。比賽項(xiàng)目預(yù)設(shè),MS男單、MD男雙、MT男團(tuán)、WS女單、WD女雙、WT女團(tuán)、XD混雙、XT混團(tuán)。
設(shè)置比賽項(xiàng)目:賽事管理員設(shè)置、修改比賽項(xiàng)目的類型、名稱。
添加參賽隊(duì)管理員:賽事管理員添加某個(gè)參賽隊(duì)的管理員,使參賽隊(duì)管理員能夠、只能夠管理本隊(duì)。
創(chuàng)建修改參賽團(tuán)、隊(duì):參賽隊(duì)管理員創(chuàng)建或修改本隊(duì)的團(tuán)體名、隊(duì)名。
查詢、統(tǒng)計(jì):賽事管理員查看全體報(bào)名運(yùn)動(dòng)員個(gè)人基本資料、參賽項(xiàng)目,分類別統(tǒng)計(jì)匯總報(bào)名信息。
導(dǎo)出參賽名單:賽事管理員導(dǎo)出某比賽的參賽隊(duì)、團(tuán)、個(gè)人名單為Excel格式文件。
2 乒乓球比賽報(bào)名的數(shù)據(jù)字典
分析乒乓球比賽報(bào)名系統(tǒng)的參與者和業(yè)務(wù)用例,設(shè)計(jì)數(shù)據(jù)庫(kù)字典。
2.1 運(yùn)動(dòng)員實(shí)體
運(yùn)動(dòng)員真實(shí)姓名:字符型,長(zhǎng)度10。性別:字符型,長(zhǎng)度2。年齡:整數(shù)。身份證號(hào):字符型,長(zhǎng)度18。手機(jī)號(hào)碼:字符型,長(zhǎng)度11。用戶名:用戶登錄系統(tǒng)的名稱,唯一值,字符型,長(zhǎng)度10。密碼:字符型,長(zhǎng)度6。照片文件:運(yùn)動(dòng)員照片的文件名稱,字符型,長(zhǎng)度100。郵箱:注冊(cè)人員的電子郵箱。字符型,長(zhǎng)度20。
2.2 賽事實(shí)體
賽事編號(hào):每次賽事的唯一代號(hào),整數(shù)。賽事名稱:每個(gè)賽事的具體名稱,字符型,長(zhǎng)度20。賽事開始時(shí)間:賽事開始比賽的時(shí)間,日期型。賽事結(jié)束日期:結(jié)束比賽的時(shí)間,日期型。報(bào)名開始日期:某項(xiàng)賽事開始接收運(yùn)動(dòng)員、團(tuán)體報(bào)名的時(shí)間,日期型。報(bào)名結(jié)束日期:某項(xiàng)賽事報(bào)名的截止時(shí)間,日期型。
2.3 比賽類別實(shí)體
類別編號(hào):比賽的分類編號(hào),整數(shù)型,唯一值。類別名稱:每個(gè)組別的具體名稱,字符型,長(zhǎng)度20。
2.4 比賽項(xiàng)目實(shí)體
項(xiàng)目編號(hào):每個(gè)單項(xiàng)比賽的唯一編號(hào),整數(shù)。賽事編號(hào):比賽項(xiàng)目從屬的完整編號(hào),從賽事實(shí)體的賽事編號(hào)取值,整數(shù)。項(xiàng)目代碼:每個(gè)項(xiàng)目的唯一編碼,字符型,長(zhǎng)度2。項(xiàng)目名稱:每個(gè)單項(xiàng)的具體名稱,字符型,長(zhǎng)度4。比賽單項(xiàng)的代碼與名稱對(duì)應(yīng)關(guān)系是,MS男單、MD男雙、MT男團(tuán)、WS女單、WD女雙、WT女團(tuán)、XD混雙、XT混團(tuán)。
2.5 參賽隊(duì)實(shí)體
賽事編號(hào):參賽隊(duì)參加的賽事編號(hào),參考賽事實(shí)體的編號(hào)。參賽隊(duì)編號(hào):參賽比賽的代表隊(duì)編號(hào),整數(shù)。參賽隊(duì)名稱:字符型,長(zhǎng)度20。領(lǐng)隊(duì):字符型,長(zhǎng)度50。教練:字符型,長(zhǎng)度50。
2.6 參賽團(tuán)體實(shí)體
參賽隊(duì)編號(hào):團(tuán)體比賽中參賽團(tuán)體所屬的參賽隊(duì)編號(hào),整數(shù),取值自參賽隊(duì)實(shí)體。團(tuán)體編號(hào):參賽團(tuán)體的唯一代號(hào),整數(shù)。團(tuán)體名稱:參賽團(tuán)體的具體名稱,字符型,長(zhǎng)度20。團(tuán)體種子號(hào):團(tuán)體比賽中,某個(gè)團(tuán)體的排列種子號(hào)碼,正整數(shù)。
2.7 參賽隊(duì)管理員實(shí)體
賽事編號(hào):參賽隊(duì)的管理員所管理的某項(xiàng)賽事的編號(hào),整數(shù),取值自賽事實(shí)體。參賽隊(duì)編號(hào):參賽隊(duì)的管理員所管理的參賽代表隊(duì)編號(hào),整數(shù),取值自參賽隊(duì)實(shí)體。用戶名:管理參賽隊(duì)的用戶,字符型,長(zhǎng)度10,取值自運(yùn)動(dòng)員實(shí)體。
2.8 賽事管理員實(shí)體
賽事編號(hào):賽事管理員所管理的某項(xiàng)賽事的編號(hào),整數(shù),取值自賽事實(shí)體。用戶名:管理賽事的用戶,字符型,長(zhǎng)度10,取值自運(yùn)動(dòng)員實(shí)體。
2.9 報(bào)名表實(shí)體
賽事編號(hào):運(yùn)動(dòng)員報(bào)名參加的某項(xiàng)賽事的編號(hào),整數(shù),取值自賽事實(shí)體。級(jí)別編號(hào):運(yùn)動(dòng)員參與的比賽組別編號(hào),整數(shù),取值自組別實(shí)體。比賽項(xiàng)目編號(hào):運(yùn)動(dòng)員報(bào)名的比賽項(xiàng)目代號(hào),整數(shù),取值自比賽項(xiàng)目實(shí)體。參賽隊(duì)編號(hào):運(yùn)動(dòng)員所屬的代表隊(duì)編號(hào),整數(shù),取值自參賽隊(duì)實(shí)體。團(tuán)體編號(hào):運(yùn)動(dòng)員參加團(tuán)體比賽的所屬團(tuán)體代號(hào),整數(shù),取值于團(tuán)體實(shí)體。用戶名:運(yùn)動(dòng)員在系統(tǒng)中的唯一名稱,取值于運(yùn)動(dòng)員實(shí)體。隊(duì)內(nèi)技術(shù)號(hào):運(yùn)動(dòng)員在該隊(duì)的技術(shù)編號(hào),整數(shù)。種子號(hào):運(yùn)動(dòng)員參加單項(xiàng)比賽的種子編號(hào),整數(shù)。
2.10 系統(tǒng)管理員實(shí)體
用戶名:系統(tǒng)管理員登錄的名稱,字符型,長(zhǎng)度20。密碼:系統(tǒng)管理員登錄系統(tǒng)的密碼,字符型,長(zhǎng)度10。
3 表結(jié)構(gòu)設(shè)計(jì)
乒乓球比賽報(bào)名系統(tǒng)有10個(gè)實(shí)體:category比賽類別、competition賽事、competition_item賽事項(xiàng)目、enrolllist報(bào)名、item項(xiàng)目、match_administrator賽事管理員、party團(tuán)體、player選手、team運(yùn)動(dòng)隊(duì)、team_administrator運(yùn)動(dòng)隊(duì)管理員,系統(tǒng)采用關(guān)系型數(shù)據(jù)庫(kù),其中部分實(shí)體的結(jié)構(gòu)如下。
4 乒乓球比賽報(bào)名的數(shù)據(jù)庫(kù)實(shí)現(xiàn)
報(bào)名數(shù)據(jù)庫(kù)ttmatch在MySQL8.0具體實(shí)現(xiàn)了表、視圖、存儲(chǔ)過(guò)程的創(chuàng)建。
4.1 視圖的實(shí)現(xiàn)
創(chuàng)建團(tuán)體報(bào)名名單視圖vw_wholelist_team,單打報(bào)名視圖vw_wholelist_single,雙打報(bào)名視圖vw_wholelist_double,整體報(bào)名名單視圖vw_wholelist,包括單打、雙打、團(tuán)體比賽的完整名單。
團(tuán)體報(bào)名名單視圖:
create VIEW vw_wholelist_team
AS
select c.categoryName AS 組別,
i.itemCode AS 項(xiàng)目,
t.teamName AS 隊(duì)名,
p.groupName AS 姓名/團(tuán)體名,
ply.sex AS 性別1,
ifnull(NULL,'') AS 隊(duì)名2,
ply.realName AS 成員,
ply.sex AS 性別2,
ifnull(e.techID,'') AS 隊(duì)內(nèi)技術(shù)號(hào),
ifnull(p.groupSeed,'') AS 種子號(hào)
from (((((enrolllist e join category c on((e.categoryID = c.categoryID)))
join item i on(((i.itemCode = e.itemCode) and (i.itemCode in ('mt','wt','xt')))))
join team t on((t.teamID = e.teamID)))
join party p on((p.groupID = e.groupID)))
join player ply on((ply.userName = e.userName)))
整體報(bào)名名單視圖:
CREATE VIEW vw_wholelist AS
SELECT vw_wholelist_team.* FROM vw_wholelist_team
UNION
SELECT vw_wholelist_single.* FROM vw_wholelist_single
UNION
SELECT vw_wholelist_double.* FROM vw_wholelist_double
4.2 創(chuàng)建存儲(chǔ)過(guò)程
創(chuàng)建存儲(chǔ)過(guò)程up_export_wholeList,導(dǎo)出整體報(bào)名名單為xls文件。
CREATE PROCEDURE up_export_wholeList(out outXLSFile varchar(1000))
begin
declare
outfileName varchar(1000);
set outfileName= concat('d:/ttmatch/','wholeList' ,cast(now()+0 as char), cast('.xls' as char)) ;
SET @sqlstr = concat("select * into outfile '", outfilename , "' CHARACTER SET gbk from vw_wholelist");
set outXLSfile=@sqlstr;
PREPARE stmt1 FROM @sqlstr ;
EXECUTE stmt1 ;
end
參考文獻(xiàn):
[1] 張瑛秋.國(guó)際乒乓球比賽微電腦報(bào)名系統(tǒng)的研制[J].北京體育大學(xué)學(xué)報(bào),1997(1).
[2] 劉淑芳.關(guān)于國(guó)際乒乓球比賽接受報(bào)名工作的改革設(shè)想[J].中國(guó)體育科技,1998(8).
【通聯(lián)編輯:張薇】