อยากสร้าง Database เก็บข้อมูล แมตซ์การแข่งขัน ฟุตบ
กระทู้เก่าบอร์ด อ.Yeadram

 4,234   6
URL.หัวข้อ / URL
อยากสร้าง Database เก็บข้อมูล แมตซ์การแข่งขัน ฟุตบ

อ่านแล้วช่วยคิดตามหน่อยครับ ว่าจะออกแบบอย่างไรดี

คือ อยากจะสร้าง Database เก็บข้อมูล แมตซ์การแข่งขันฟุตบอล

มี Table ที่จะเก็บข้อมูบ คร่าวๆ ดังนี้
-นักฟุตบอล
-ทีมฟุตบอล
-แมตซ์การแข่งขัน

โดยที่ รายงาน จะออกเป็น ใบประกบคู่การแข่งขันได้ ซึ่งจะต้องคำนวณสิ่งเหล่านี้ได้ด้วย
-คำนวณโทษใบเหลือง ใบแดง ได้
-คำนวณดาวซัลโว เรียงลำดับ คนทำประตูมากไปน้อยได้
-คำนวณตารางอันดับคะแนน จาก Table แมตซ์การแข่งขันได้


จะออกแบบ Database อย่างไรดี ให้ครอบคลุม ได้ครบถ้วน ดังกล่าวครับ

ขอบคุณล่วงหน้าสำหรับแนวคิดครับ

6 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R02181
การประมวลผล การเก็บข้อมูล การจัดการทั้งหลายทั้งปวงของโปรเจคนี้ น่าจะแยกออกเป็นสามส่วนหลักๆ

1 ส่วนงานทะเบียน
เป็นส่วนงานการเก็บ การแก้ไข สถิติ (ทีม, นักฟุตบอล, กรรมการ,ผู้จัดการ)

2. ส่วนตารางเวลา
เป็นส่วนงานที่หยิบข้อมูลจากส่วนงานทะเบียนเอามาจัดรูปแบบการแข่งขัน
- การแยกประเภทรายการการแข่งขัน แยกลีก แยกทัวร์นาเมนต์
- การจัดทีมลงในทัวร์นาเมนต์นั้นๆ การแบ่งสาย การแบ่งรอบ
- การจัดการผ่านเข้ารอบ หรือการตั้งโปรแกรมล่วงหน้าเรื่องการเข้ารอบตกรอบ หรือเรื่อง Next Matcth ของแต่ละทีม ของแต่ละสาย คือเมื่อมีผลการแข่งขันเกิดขึ้นที่ชนะไปเข้ารอบไปอย่างไร ทีมแพ้จะต้องไปพบกับทีมใดอีกหรือไม่ ส่วนนี้ต้องการให้โปรแกรมคำนวนอัตโนมัติให้อีก

3 ส่วนบันทึกการแข่งขัน
- เป็นการบันทึกสถิติการแข่งขันของแต่ละนัด (สถานที่ เวลา ผู้ควบคุมการแข่ง กรรมการ ชื่อทีม ชื่อผู้เล่นจริง ชื่อผู้เล่นสำรอง สกอร์ ลำดับเหตุการณ์ การลงโทษ หมายเหตุ)

-ถ้าเราแยกส่วนงานออกเป็นระบบตามนี้ แล้วเจาะเข้าไปพิจารณาทีละส่วนงาน คุณก็จะสามารถวางแผน database ได้คร่าวๆ แล้วว่าจะใช้กี่ตารางตารางอะไรบ้าง มีตารางบางอย่างต้องแบ่งเป็น Main เป็น Sub
-ตารางบางตารางสามารถตอบสนอง สามารถรองรับงาน หรือสามารถส่งข้อมูลเขาไปให้ ได้ทั้งสอง หรือสามส่วนงาน
-แต่บางตารางเราก็สร้างมันขึ้นมาเฉพาะกับส่วนงานเท่านั้น
เท่าที่ดูคร่าวๆ ตามส่วนที่ผมแยกออกมา ผมคิดว่า เราสามารถนำข้อมูล(ที่ถ้าได้มีการบันทึกแล้ว) มาแสดงเป็นรายงานได้ทุกอย่างตามที่คุณต้องการ และมันยังสามารถออกรายงานอื่นๆ ที่คุณยังไม่ได้เอ่ยมา ได้อย่างเป็นระบบอย่างน่าอัศจรรย์ใจอีกด้วย เช่น
- สามารถรู้ได้ว่า ผู้เล่นคนใดของทีมใดลงเล่นมากที่สุด หรือไม่เคยได้ลงเล่นเลยมีแต่ชื่อ
- กรรมการคนใดลงตัดสินมากครั้งที่สุด
- ทีมใดใช้ผู้เล่นหลากหลายที่สุดหรือเปลี่ยนตัวสำรองน้อยที่สุด
- ทีมใดมีประวัติเล่นลูกฮึดได้มากที่สุด (คือโดนนำก่อนแล้วจบด้วยการชนะ)

อ่ะ....มันแค่แนวคิดครับ .. ยังไม่ลองนำไปวางโฟลว์
ถ้าคิดว่ามันเวอร์ค หรือเหมาะ ขอค่าแนวคิดด้วยนะครับ อิอิ
ถ้าคิดว่ามันไม่เหมาะ มันเยอะมันยากหรือมันไม่ครบถ้วน หรืออะไรก็แล้วแต่ ที่มันออกจะเป็นเชิงลบ ก็.. อย่าถือสานะครับ มันก็แค่จินตนาการของข้าน้อย อิอิ
2 @R02190
แล้วแบบนี้ ควรมี Table อะไรบ้างครับ

ผมมีข้อมูลบอลไทยพวกนี้ ซึ่งจะใช้ ACCESS จัดเก็บ และสร้างเป็นรายงาน

แต่กับ ออกแบบ Database ไม่เป็น

จึงอยากให้คนที่เป็นช่วยออกแบบให้ที

Table นักฟุตบอล ควรมี Field อะไรบ้าง
Table ทีมฟุตบอล ควรมี Field อะไรบ้าง
Table แมตซ์การแข่งขัน ควรมี Field อะไรบ้าง

หรือควรมี Table อะไรเพิ่มเติมมากกว่านี้

ขอให้ช่วยชี้แนะทีครับ นี้เป็นข้อมูลที่สำคัญ ต่อวงการฟุตบอลไทยบ้านเราเลยทีเดียว

จะได้มีสถิติเหมือน เมืองนอกเขาซะที
3 @R02191
ถ้าเป็นข้อมูลจริงของสมาคมฟุตบอลไทย
เป็นของหน่วยงานไหนครับ สมาคมฟุตบอลไทย หรือองค์กรใดๆ ก็ตามที่เป็นเจ้าภาพ ไทยฯลีกน่ะ ใช่หรือเปล่าครับ
ก่อนนี้ไม่เคยมีการจัดการกับข้อมูลเหล่านี้มาก่อนเหรอครับ ไม่อยากจะเชื่อเลยแฮะ

1. งานนี้มันงานค่อนข้างที่จะต้องการความละเอียดในข้อปลีกย่อย
ถ้าออกแบบได้ดี มันจะประมาณว่า เล็กพริกขี้หนูเลยล่ะครับ คือมันจะใช้ตารางไม่เยอะแต่ความสามารถมันจะแยะ
2. เรื่องการออกแบบตารางมันต้องขึ้นอยู่กับความเข้าใจด้วยว่า แต่ละฟิลด์ที่เราสร้างขึ้น เอาไว้ทำอะไร บางฟิลด์เราไม่ได้สร้างขึ้นเพื่อจัดการกับข้อมูล แต่เราสร้างขึ้น เพือ่ให้ง่ายต่อการเขียนโค้ด หรือง่ายต่อการจัดการผ่านฟอร์ม
นี่แหละครับ ฟิลด์พวกนี้แหละที่บอกกันได้ยาก เพราะบอกไปแล้วบางทีผู้ฟังก็ไม่ได้นำไปใช้ หรือเอาไปใช้ไม่ถูกจังหวะเวลา และถ้าไม่มีฟิลด์พวกนี้ บางครั้ง ระบบงานสามส่วนตามที่ยกตัวอย่างแนวคิดให้ไปก่อนหน้านี้น่ะ มันจะสับสนกัน พลอยทำให้เราต้องคอยเพิ่ม ตาราง เพิ่มคิวรี่ขึ้นมาใหม่ๆ อีก (เมือ่ไปเจอทางตัน)
4 @R02192
ผมตั้งสมมติฐานว่า นี่คือการเก็บข้อมูล และจัดการข้อมูลของ สมาคมไทยลีกนะครับ

งานส่วนทะเบียน
- ตารางบุคคล (เก็บข้อมูลบุคคลที่เกี่ยวข้องทั้งหมดนักกีฬา กรรมการ ผุ้จัดการแข่งขัน ผู้ใช้โปรแกรม ผู้อัพเดตข้อมูล เก็บในนี้ทั้งหมด ใช้ฟิลด์แยกประเภทเอา)
- ตารางประเภทบุคคล (ก็เกี่ยวเนื่องกับตารางก่อนนี้
- ตารางสถานที่ (เก็บข้อมูลสนามแข่งทั้งหมด ที่ ไทยลีกสามารถใช้ได้ทั้งสนามใหญ่ สนามเล็ก สนามเช่าสนามซื้อ สนามกลาง สนามซ้อม สนามของ acadamy ในสังกัด สนามอะไรๆ เก็บหมด)
- ตารางแยกประเภทสถานที่ (ก็เกี่ยวข้องกับตารางก่อนนี้)
- ตารางสโมสรสมาชิก (เก็บทุกๆ สโมสรที่จดทะเบียนถูกต้อง ในสังกัด ก่อตั้งโดยใคร มีเงินทุนเท่าไหร่
    ทีมชุดใหญ่มีมั้ย เก็บboolean หรือเก็บรหัสทีม
     ทีมชุดสำรองมีมั้ย เก็บ boolean หรือเก็บรหัสทีม
     ทีมหญิงมีมั้ย, ทีมเยาวชนมีมั้ย , ทีมฟุตซอลมีมั้ย)
- ตารางหลัก-ทีม (มีฟิลด์รหัสทีม, มีฟิลด์บอกว่ารหัสทีมนี้ใช้สำหรับทั่วนาเมนต์ใด, มีรหัสบุคคลใดเป็นโค้ช ,รหัสบุคคลของอะไรๆ ที่เกี่ยวข้องอื่นๆ)
- ตารางย่อย-ทีม (เก็บรหัสทีม เก็บรหัสบุคคล-นักกีฬา ไม่ต้องแยกนะว่าตัวจริงหรือตัวสำรอง เพราะตารางนี้เก็บงานทะเบียนเท่านั้น ถ้าจะแยกตัวจริงตัวสำรองต้องไปดูในส่วนงาน สถิติ)



งานส่วนทัวร์นาเมนต์
- เก็บส่วนหัวของทัวร์นาเม้นต์ (มีรายการอะไรที่อยู่ภายใต้การดูแลของ สมาคมบ้างเก็บหมด ไทยลีก, สิงห์ลีก, บอลเยาวชน, ลีก2, ลีกสำรอง, ลีกหญิง, ลีกเด็กๆ, FA คัพ, ถ้วยก. ถ้วยข ถ้วย ค. เอาหมด)
- เก็บรายละเอียดของทั่วนาเมนต์(ว่าเริ่มเมือ่ไหร่ จบเมือ่ไหร ใช้สนามอะไรบ้าง มีทีมเข้าร่วมกี่ทีม ทีมอะไรบ้าง จากไหนบ้าง มีสนามเหย้าเยือนหรือเปล่า ตั้งรหัสลำดับการแข่งขัน แมตซ์ที่1 รอบแบ่งสาย กล่มB ใช้รหัสว่า M01B001 เป็นต้น)
- สร้างตารางเฉพาะ(โดยการเขียนโค้ด)เพื่อบันทึกโปรแกรมการแข่งขันของทั่วนาเมนต์นั้นๆ (ตารางนี้จะถูกสร้างขึ้นอัตโนมัติเมื่อมีการสร้างทัวร์นาเมนต์ใหม่) ในนี้จะเก็บ ตารางว่า แมต์แรก ใครเจอกับใคร แมตซ์สองใครเจอกับใคร วันที่เท่าไหร่ ที่สนามไหน ใครจะดูแลการแข่งขัน (ถ้าแฟนบอลไล่ตีกันใครมีอำนาจระงับการแข่ง) ใครเป็นกรรมการ (optional = ใครจะดูแลเรื่องความปลอดภัย ใครดูแลเรือ่งตั๋ว) บุคคลทั้งหมดที่กล่าวถึงในตารางนี้ เราเอามาใช้แค่ระหัสเท่านั้น ข้อมูลจริงๆ ต้องเก็บเข้าใปในส่วน งานทะเบียนทั้งหมด (ต้องจับมือใครสักคนมาดมให้ได้ ในกรณีมีเหตุผิดพลาดเกิดขึ้น) บุคคลที่เกี่ยวข้องทั้งหมดต้องสืบประวัติได้จากโปรแกรมของเรา
ตารางนี้จะมีฟิลด์หลัก คือ รหัสการแข่งขัน ทั้งโปรแกรมของเรา ไม่ว่าจะพูดถึงการแข่งรายการไหนๆ ก็ตาม จะมีรหัสประจำแมตซ์ของใครของมัน ไม่ซ้ำกันแม้จะผ่านไปแล้วกี่ปีก็ตาม ถ้ามีการสืบค้นประวัติการแข่งแมตซ์ไหนๆ ก็ใช้แค่ระหัสก็ค้นได้ ดังนั้นรหัสอาจต้องเก็บหลายๆ หลักหน่อย แต่ละหลักมีความหมายในตัวของมันเอง

งานส่วนบันทึกข้อมูลสถิติ
ตาราง MainStat เก็บข้อมูลสถิติของการแข่งขันแมตซ์นั้นๆ ซึ่งเป็นสถิติแบบภาพรวม หรือมหภาค เช่น
แมตซ์นั้นมีผู้ชมเท่าไหร่ สภาพดินฟ้าอากาศเป็นอย่างไร สัมคมรอบข้างเป็นอย่างไร มีประท้วงไหม มีอุบัติเหตุมั้ย สนามเปียกแฉะหรือไม่ มีคนช็อค มีคนตายมีบาดเจ็บหรือไม่ ทีมที่แข่งขันมาตรงเวลาหรือไม่ ประธานผู้จัด มาตรงเวลาหรือไม่ เวลาเริ่มแข่งตรงตามเป้าหมายหรือไม่ เร็วกว่ากี่นาที ช้ากว่ากำหนดกี่นาที เพราะอะไร เพราะประธานและผู้จัดต่างเป็นคนไทย ก็เลยเอ้อระเหยลอยชายไม่รับผิดชอบต่อผู้ชม ปากนัดว่าเตะ 1600 แต่ได้เริ่มเตะจริงๆ ปาเข้าไป 1615 หรือไม่อย่างไร

ตาราง DetailSTAT
เก็บรายละเอียดในเกมส์เป็นหลักประมาณว่า นาทีต่อนาที เช่น
-MatchID
-TMunute
-ยิงประตู (boolean)
-ทำเข้าตัวเอง(boolean)
-รับใบเหลือง (boolean)
-รับใบแดง(boolean)
-รหัสบุคคล(default null)
-รับบาดเจ็บ (boolean)
-เปลี่ยนเข้า(boolean)
-เปลี่ยนออก(boolean)
กรณีผู้จัดการถูกไล่ออกจากสนาม ให้กรอกเสมือนผู้เล่นถูกไล่ออกจากสนาม

ตาราง STAT ทั้งสองตารางนี้ ตามหลักการที่เหมาะ ควรจะมีประจำทัวนาเมนต์ แต่ถ้านโยบายของทางสมาคม เป็นเหมือนๆ กับ EUFA คือค่อนข้างจะก้าวก่ายเกี่ยวพันกันกับทัวร์นาเมนต์อื่นๆ เช่น โดนใบแดงห้ามแข่งทุกรายการ เป็นเวลา สองเดือน
แบบนี้ เราคงต้องยอมให้ ตาราง Stat เป็นตารางที่ต้องใช้ร่วมกันสำหรับ ทุกๆ ทัวร์นาเมนต์ เพื่อการคิวรี่ข้ามทัวร์นาเมนต์ ที่ง่าย ว่าใครโดนใบแดง โดนใบเหลืองไปกี่ใบบ้าง อะไรประมาณนี้

แค่คิดออกมานี่ก็ยาวมากๆ เลยล่ะครับ
เอาแบบว่า ให้มันได้มาตรฐานสากลนะครับ อิอิ มันคงยังไม่ครบถ้วนเท่าไหร่หรอกครับ แต่คิดว่า เมือ่ได้ลงมือเริ่มทำเริ่มเขียนไปแล้ว หรือเริ่มใช้ไปแล้ว อาจจะได้เจอได้เห็นว่า ควรจะเพิ่มอะไรเข้าไปอีก

ที่เขียนมายาวๆ เนี่ยใครว่างๆ จะนำแนวคิดไปลองสร้าง ชุดโปรแกรมสำเร็จ แล้วขายบ้างครับ อิอิ หรือจะลองเอาไปปรับแนวคิด แล้วลองสร้างมาขายก็ได้นะครับ สำหรับคนเขียนคล่อง หรือออกแบบคล่องๆ ผมอยากให้เขียนแล้วไปเสนอขายให้ สมาคมฯ จังเลย อยากให้ บอลไทยมีระบบที่ดูดีๆ น่าเชื่อถือ น่าศรัทธาครับ
5 @R02193
ผมงงตั้งแต่ งานส่วน ทัวส์นาเม้น พยายาม อ่านหลายรอบอยู่ แต่ก็ยังงงๆ อาจจะเพราะไม่ได้เข้าเรื่อง ดาต้าเบส เท่าไรหนัก

ซึ่งผมขอบคุณ คุณมาก ที่ช่วยเหลือ ในแนวคิดได้เป็นอย่างดี

ซึ่งส่วนแรก ผมอ่านแล้ว เข้าใจค่อนข้างดีเลยทีเดียว และเป็นประโยชน์ในการทำเป็น ฐานข้อมูล ACCESS ต่อไป

แต่ผมก็อยากเห็นภาพชัดกว่านี้ หากว่าไม่รบกวนเกินไป ช่วยทำเป็นรูป ER-DIAGRAM ให้ดู จะรบกวนเกินไปรึเปล่า

(ผมอาจจะมีความรู้เรื่องพวกนี้ไม่มาก แต่ก็พยายามศึกษาอยู่ ทำด้วยใจรักจริงๆครับ)

ปล. ตอนนี้ ผม Design Database ใน ACCESS คร่าวๆ แล้ว ว่างๆ เด๋วจะเอารูปมาให้ดู (ได้ไอเดีย จากคุณนั้นแหละครับ ขอบคุณครับ)
6 @R02218
งานส่วนทัวร์นาเมนต์ที่ว่ายังไม่ค่อยเข้าใจนัก ให้ลองนึกภาพตามนะครับ
เคยให้ผัง หรือชาร์ตการแข่งใช่ไหมครับ ที่มีการลากเส้น จากรอบแรก ขึ้นไปจนสุดรอบสุดท้าย
ทีมใดชนะ เรา หรือใครก็ตามที่ได้รับมอบหมาย ก็จะเป็นคนไปลากจากชื่มทีมนั้น ขึ้นไป เลี้ยวซ้ายเลี้ยวขวาก็ว่าไป
เมื่อลากขึ้นไปก็เป็นการเข้าสู่รอบ และในรอบนั้น จะเจอกับทีมอะไร เราจะสามารถรู้ได้
แต่ทีนี้พอเรามาทำเป็น Access มันไม่มีคนมาลากเส้นให้นะครับ เราจึงต้องโปรแกรมเอาว่า เมื่อผลการแข่งขัน ณ คู่ปัจจุบันออกมาแล้ว Access จะต้องบอกได้ทันทีว่า ทีมใดตกรอบ ทีมใดเข้ารอบ เข้ารอบแล้วจะไปเจอทีมใด
ซึ่งจริงๆ แล้วถ้าในทัวร์นาเมนต์นั้นๆ มีทีมที่เข้าแข่งขันน้อย เราอาจจะแมน่วล ตรงจุดนี้ก็ได้ แต่มันก็ไม่สมเหตุสมผลล่ะครับ เพราะไหนๆ เราก็ให้โปรแกรมมันทำงานแล้วเราก็ควรมอบภาระให้มันไปเลย

คิดกันง่ายๆว่า
โปรแกรมของเราต้องบอกได้เสมอ
ถ้าเมื่อ ทีม"น้ำเงิน" ชนะ ชือทีม "น้ำเงิน" นี้จะไปปรากฎอยู่ตรงตำแหน่งใดของชาร์ตนั้น
หรือถ้ามีการคิดสกอร์เหย้า-เยือน ยิ่งแล้วใหญ่เลยครับ โปรแกรมต้องบอกได้ทันที เมื่อผลการแข่งขัน (แมตช์ทีสองระหว่าง เชลซีกับบาร์ซ่า) จบลงที่สกอร์ เสมอ 1-1 ทีมใดได้เข้ารอบ

เพราะเราจะโปรแกรมให้ user มีหน้าที่กรอกแค่ผลการแข่งขันเท่านั้น (1-1) ที่เหลือโปรแกรมจะแจ้งจะจัดให้เราอัตโนมัติครับ


การวางทิศทางล่วงหน้าว่าถ้าให้โปรแกรมมันลากชาร์ต เราก็ต้องวางแนวไว้ให้มัน ว่ามันต้องเลี้ยวซ้ายหรือเลี้ยวขวา ถูกต้องไหม่ครับ

เช่นผู้ชนะจากคู่ที่ 1
คุณต้องการให้ไปเจอกับผู้ชนะจากคู่ที่เท่าไหร่
เพราะมันไม่จำเป็นหรือตายตัวเสมอไปที่จะต้องให้ไปเจอผู้ชนะจากคู่ที่สอง ทั้งนี้อาจเนื่องมาจาก เวลา สถานที่ หรือความได้เปรียบเสียเปรียบอื่นๆ ที่ใตร่ตรองแล้ว
นั่นแหละครับ โปรแกรมหรือกำหนดการณ์ตรงส่วนนี้แหละครับ ที่ผมเรียกมันว่า ส่วนงาน ทัวร์นาเมนต์

หรือ.... ผมว่าเรื่องนี้น่าจะใกล้เคียงกันนะครับ ....http://thai-access.com/yeadram_view.php?topic_id=316
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2772s