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