ปรับ ER Diagram
Sunday, May 6, 2018
My Group Project (Week 12)
ซึ่งโปรเจคที่จะเลือกจะทำเป็น E-Sport Tournament Website
ทำไมถึงเลือกทำงานนี้
- เราจัดทำเว็บไซต์ที่เกี่ยวกับการแข่งขัน E-Sport เพราะเราสนใจในด้านนี้
- เนื่องจากในประเทศไทย ยังไม่มีเว็บไซต์ที่เป็นปฏิทินการแข่งขันหรือแสดงผลการแข่งขันที่เป็นทางการในไทย ดังนั้นเราจึงตัดสินใจทำมัน และหวังว่าจะได้นำไปใช้จริง
มี Content อะไรบ้าง
- ตาราง/ปฏิทินการแข่งขัน
- คะแนนการแข่งขันรวม
- ทีมการแข่งขัน
- อื่นๆ ….
ใช้เครื่องมืออะไรบ้าง
- Javascript
- Node.js
- AngularJS
- HTML5
- MySQL
ออกแบบระบบ
- ระบบจะแบ่งเป็นสองฝั่ง
- โดยฝั่งแรกเป็นฝั่งแสดงผลข้อมูลการแข่งขันต่างๆ
- แสดงตาราง/ปฏิทินการแข่งขัน + ผลการแข่งขันในแมตช์นั้น
- แสดงตารางคะแนนรวมทั้งหมด
- อีกฝั่งเป็นส่วนของที่ผู้ใช้ต้อง Login เข้าระบบเพื่อกรอกคะแนนหรือเพิ่มการแข่งขันในปฏิทิน เป็นต้น
- ระบบที่จัดทำนั้นมี Reference จากการแข่งขัน Overwatch League
- โดยกติกาต่างๆ ศึกษาได้ที่นี่ เพิ่มเติม
ER Diagram
สิ่งที่ผมได้ไปทดลอง
Monday, April 9, 2018
Bitcoin and Blockchain (Week 11)
What is BitCoin ?
Bitcoin อ่านว่าบิทคอยน์ คือสกุลเงินในรูปแบบของดิจิทัล ถูกสร้างขึ้นมาด้วยภาษาคอมพิวเตอร์ ไม่มีใครเป็นเจ้าของ Bitcoin ไม่มีรูปร่างและไม่สามารถจับต้องได้เหมือนธนบัตรหรือเหรียญเงินบาท Bitcoin ถูกสร้างขึ้นมาด้วยกลุ่มนักพัฒนาเล็กๆกลุ่มหนึ่งตลอดจนบริษัทใหญ่ๆทั่วโลก โดยระบบของ Bitcoin ถูกรันโดยคอมพิวเตอร์ของผู้ใช้งานทั่วโลก โดยใช้ระบบซอฟต์แวร์ในการถอดสมการคณิตศาสตร์
Why they choose BitCoin ?
บิทคอยน์เกิดจากแนวคิดที่ว่ามีคนต้องการระบบเงินใหม่ที่ไม่ถูกตรวจสอบขึ้นมา จากเดิมที่มีระบบธนาคารกลางเป็นผู้ดูแล และมีหน้าที่กำหนดมาตรฐาน รวมถึงมูลค่าของเงิน ทำให้ธุรกรรมทางการเงินทุกอย่างที่เกิดขึ้นอยู่ในสายตาของธนาคารกลางนั้นเอง แต่กระบวนการเหล่านี้อาจจะไม่ค่อยถูกใจบรรดาธุรกิจใต้ดิน เพราะต้องระบุตัวตน เวลาโอนเงินก็ต้องผ่านตัวกลาง ทำให้ถูกตรวจสอบได้ง่ายHow does BitCoin work ?มีโปรแกรมเมอร์ชาวญี่ปุ่นคนหนึ่งที่ใช้นามแฝงว่า ซาโตชิ นากาโมโต้ ได้สร้างระบบที่เรียกว่า “Blockchain” ออกมา ซึ่งเป็นระบบเพื่อป้องกันการเกิดภาวะเงินเฟ้อและเสื่อมค่าลงอย่างรวดเร็วของสกุลเงินดิจิทัล จากการปั๊มเงินออกมาเรื่อย ๆ ได้ตามใจชอบ โดยนำระบบการทำงานของอัลกอริทึมมาใช้ แล้วกำหนดปริมาณเงินในระบบไว้ไม่ให้เกิน 21 ล้านหน่วย ทำให้บิทคอยน์เริ่มเป็นที่นิยมมากขึ้น เนื่องจากมีระบบป้องกันเงินเฟ้อนั่นเอง
What is blockchain ?
Blockchain คือเทคโนโลยีอัจฉริยะ ที่บันทึกข้อมูลในรูปแบบของ Block และแต่ละ Block จะบรรจุไว้ด้วยข้อมูลในรูปของ Hash (สมการทางคณิตศาสตร์ชนิดหนึ่ง หรือการเข้ารหัสนั่นเอง) ที่ต้องใช้กำลังการประมวลผลของชิปคอมพิวเตอร์ในการแก้สมการ เพื่อทำให้เกิดธุรกรรมขึ้น
เป็นระบบกระจายการเก็บข้อมูลไปหลายๆ คนที่อยู่ในระบบเดียวกัน ทุกคนในระบบ จะมีข้อมูลชนิดเดียวกัน และ ตรวจสอบกันเองเสมอ ปลอมแปลงได้ยาก ทำให้สะดวก, รวดเร็ว,ปลอดภัย, ลดการใช้ทรัพยากร
How does blockchain work ?
จุดเด่นของ Blockchain นั้น คือ ข้อมูลธุรกรรมจะไม่ขึ้นอยู่กับใครคนใดคนหนึ่ง แต่อาศัยการยืนยันความถูกต้องจากทุกคน แต่หากต้องกระทำธุรกรรมการเงินจะต้องใช้ Private Key ที่อยู่กับเจ้าของและ Public Key ที่อยู่กับคนอื่นในการถอดรหัส
ปัญหาที่พบ
อธิบายการทำงานของ Blockchain ผิด เพราะไม่เข้าใจการทำงานของมัน วิธีแก้นั้น คือ ลองถามเพื่อนที่เข้าใจดู อาจช่วยเราได้
Tuesday, March 27, 2018
แปล Basics of Functional Dependencies and Normalization for Relational Databases (Week 11)
แนวทางที่ 1
- ออกแบบ Relation schema ที่ง่ายต่อการเข้าใจ่
- อย่ารวม attribute จาก multiple entity และ relationship type มากับ single relation
- จากภาพเป็นส่วนของ Employee ที่เพิ่ม Dname, Dmgr_ssn (เกิดจากการผสมของ distinct real-world entities ของ employees กับ department)
- มีข้อมูลที่ซ้ำกันใน EMP_DEPT ซึ่งส่งผลทำให้พื้นที่ในการจัดเก็บข้อมูล ซึ่งแก้โดยการ Update anomalies (EMPLOYEE x DEPARTMENT)
ชนิดของการ Update anomalies มี
- Insertion
- Deletion
- Modification
Insertion Anomalies
- เมื่อเพิ่ม tuple ใหม่ลงไปใน employee ที่ทำงานใน department มี Dnumber คือ 5 แล้ว attitbute value of department ทั้งหมดที่เป็น 5 เป็น consistent
- ถ้าลบ employee ที่อยู่ตัวสุดท้ายแล้ว ข้อมูลที่อยู่ department เดียวกันก็จะถูกลบด้วย เช่น หากลบ Borg แล้วจะลบ Headquarters ด้วย
Modification Anomalies
- หากเปลี่ยน manager ของ department 5 เราต้อง update ค่าใน tuple ของ employee ทั้งหมดที่ทำงานใน department นี้ แล้ว Database จะเปลี่ยนเป็น inconsistent
แนวทางที่ 2
- ออกแบบ base relation schema ที่ไม่มีการ update anomalies
- ถ้ามี anomalies (เพื่อเพิ่มประสิทธิภาพในการ query) ให้สังเกตและตรวจสอบให้แน่ใจว่าโปรแกรมนั้นมีการ Update ที่ถูกต้องหรือไม่
แนวทางที่ 3
- หลีกเลี่ยงการวาง Attribute ที่อยู่ใน base relation ซึ่งมีค่าส่วนใหญ่เป็น NULL
- หากหลีกเลี่ยงเกิด NULL ไม่ได้ ให้ Make sure ว่าใช้ในกรณีพิเศษเท่านั้น ไม่ใช้กับ tuple หลัก
- เช่น ถ้า 15% ของ employee เป็น individual offices => ให้ทำการสร้าง attribute ชื่อ Office_number ใน EMPLOYEE relation
แนวทางที่ 4
- การออกแบบ relation schema นั้นเราสามารถ join เงื่อนไขบน attribute ได้ตามความเหมาะสม (primary key, foreign key) ซึ่งการันตีได้ว่าไม่มี tuple นอกเงื่อนไขโผล่ขึ้นมา เพราะหากมีการหลีกเลี่ยง relation ที่มีการจับคู่ attribute ต่างๆ (foreign key, primary key) อาจทำให้เกิดการสร้าง Tuple นอกเงื่อนไขขึ้นมาได้
Monday, March 26, 2018
ทดสอบประสิทธิภาพของ DBMS กัน (Week8)
ในการทดสอบ DBMS นั้นเราได้ทำการทดสอบบนเครื่องคอมพิวเตอร์หนึ่งเครื่องแล้วใช่ข้อมูลไปจำนวน 10 ล้านแถว แล้วทดสอบ DBMS หลายตัว ซึ่งคอมพิวเตอร์ที่ใช้มีสเปค ดังนี้
สรุปผล
- Intel Core i7-6700HQ (2.60 - 3.50 GHz)
- NVIDIA GeForce GTX 950M (4GB GDDR5)
- 8 GB DDR4
- 1 TB 7200 RPM
- ใช้ Virtual Machine : RAM 2 GB, CPU 2 Processor
ซึ่งค่าที่เราจะนำเปรียบเทียบนั้นมี
- ความเร็ว
- ขนาดของ DBMS
ผลที่ได้เป็น ดังนี้
| ตารางผลการทดสอบ |
| กราฟผลการทดสอบ |
- SQLite มีความเร็วในการ insert ข้อมูลเร็วที่สุด และกินพื้นที่น้อยที่สุด
- MySQL มีความเร็วในการ insert ข้อมูลช้าที่สุด และกินพื้นที่มากที่สุด
ปัญหาที่พบ
- เนื่องจากลองทดสอบ DBMS ในเครื่องหลักแล้ว ส่งผลทำให้โปรแกรมอื่นๆ ทำงานช้าลง เลยย้ายไปทดสอบใน Virtual Machine แทน
ลิ้งก์ที่เกี่ยวข้อง
Tuesday, March 6, 2018
ลองแปลง ER Diagram เป็น Relational Mapp (Week 7)
จากที่อาจารย์ให้ลองแปลง ER Diagram เป็น Relational Mapping
ข้อแรก เป็นการนำ ER Diagram จากสัปดาห์ที่ 6 มาแปลงเป็น Relational Mapping
Step 1 Mapping of Regular Entity Types
Step 2 Mapping of Weak Entity Types : เนื่องจากไม่มี Weak Entity เลยไม่ต้องทำในส่วนนี้
ข้อแรก เป็นการนำ ER Diagram จากสัปดาห์ที่ 6 มาแปลงเป็น Relational Mapping
| ส่วน Purchase Order |
| ส่วน Customer |
| ส่วน Line Item |
Step 2 Mapping of Weak Entity Types : เนื่องจากไม่มี Weak Entity เลยไม่ต้องทำในส่วนนี้
Step 3 Mapping of Binary 1:1 Relationship Types : เนื่องจากไม่มีความสัมพันธ์แบบ 1:1 เลยไม่ต้องทำในส่วนนี้
Step 4: Mapping of Binary 1:N Relationship Types
| เพิ่ม cus_num ใน Purchase Order |
| เพิ่ม po_numใน Line Item |
| เพิ่ม si_numใน Line Item |
Step 5: Mapping of Binary M:N Relationship Types : เนื่องจากไม่มีความสัมพันธ์แบบ M:N เลยไม่ต้องทำในส่วนนี้
Step 6: Mapping of Multivalued Attributes
| สร้างตารางของ Phone แยกออกมาเชื่อมกับ Customer |
Step 7 : Mapping of N-ary Relationship Types : เนื่องจากไม่มีความสัมพันธ์แบบ N-ary เลยไม่ต้องทำ
จนสุดท้ายได้ Relational Mapping ตามนีี้
| Relational Mapping ของข้อหนึ่ง |
ข้อสอง เป็นการหาโจทย์มาทำ ER Diagram และทำ Relational Mapping
โดยนำโจทย์มาจากหนังสือ Fundamentals of Database Systems ใน Exercise ข้อ 7.22
โจทย์
A database is being constructed to keep track of the teams and games of a sports league. A team has a number of players, not all of whom participate in each game. It is desired to keep track of the players participating in each game for each team, the positions they played in that game, and the result of the game. Design an ER schema diagram for this application, stating any assumptions you make. Choose your favorite sport (e.g., soccer, baseball, football).
แปลไทย
จงสร้าง ER Diagram ที่เกี่ยวกับทีมและการแข่งขันในลีก
- เก็บข้อมูลเกี่ยวกับทีม
- เก็บข้อมูลของนักกีฬาที่มีส่วนร่วมในการแข่งขันของทีมนั้นๆ
- เก็บตำแหน่งของผู้เล่นคนนั้น
- เก็บผลการแข่งขัน
ER Diagram
จากนั้นทำ 7 Step
Step 1 Mapping of Regular Entity Types
| ส่วน team |
| ส่วน competition |
| ส่วน player |
Step 3 Mapping of Binary 1:1 Relationship Types
| เพิ่ม home_team, away_team ใน competition |
Step 4: Mapping of Binary 1:N Relationship Types
| เพิ่ม id_team ใน player |
Step 5: Mapping of Binary M:N Relationship Types : เนื่องจากไม่มีความสัมพันธ์แบบ M:N เลยไม่ต้องทำในส่วนนี้
Step 6: Mapping of Multivalued Attributes : เนื่องจากไม่มีMultivalued Attributes เลยไม่ต้องทำในส่วนนี้
Step 7 : Mapping of N-ary Relationship Types : เนื่องจากไม่มีความสัมพันธ์แบบ N-ary เลยไม่ต้องทำ
จนสุดท้ายได้ Relational Mapping ตามนีี้
| Relation Mapping ข้อสอง |
Subscribe to:
Posts (Atom)
SQL injection (Week 16)
SQL Injection ในบางครั้งนักพัฒนาใช้ method ‘+’ (concat) กับ String ที่เป็นคำสั่ง SQL เพื่อ query ข้อมูลที่ user ต้องการ ซึ่งทำให้เกิดช่...
-
จากที่อาจารย์ให้ลองแปลง ER Diagram เป็น Relational Mapping ข้อแรก เป็นการนำ ER Diagram จากสัปดาห์ที่ 6 มาแปลงเป็น Relational Mapping ...
-
ทำความรู้จัก Database ก่อนที่เราจะเข้าเรื่องอยากแรกที่เราต้องทำความเข้าใจกับ Database ก่อน Database คือ แหล่งเก็บข้อมูลที่เราสนใจมัน โดยโ...
-
จากคำแนะนำของอาจารย์ที่ให้ลองไปศึกษา SQL ที่เว็บไซต์ w3school แล้วสิ่งที่ได้เจอ มี ดังนี้ หน้าเว็บไซต์แรก เมื่อเปิดเข้าไปแล้วจะเจอหน้าแรก...