Tuesday, January 30, 2018

เริ่มทำงานกลุ่มกับกลุ่มที่ 4 (Week 3)

จากที่อาจารย์แบ่งกลุ่มและได้อยู่ในกลุ่มที่ 4 แล้ว ก็เริ่มไปคุยงานกับเพื่อน สิ่งแรกที่ทำ คือ ตกลงรูปแบบของ CSV เพื่อที่จะให้ข้อมูลทุกคนสามารถรวมกันได้โดยไม่มีปัญหา ซึ่งจัดรูปแบบได้ ดังนี้

  • student_id
  • year
  • semester
  • course_code
  • grade_char

รูปแบบตารางของ CSV

หลังจากที่ตกลงกันแล้ว ก็ออกแบบรูปแบบ DBMS ผ่าน Chart ได้ตามนี้

Chart ของ Database

จากนั้นก็เริ่มสร้าง Database, สร้าง Table, จัดการ Foreign Key หรืออื่นๆ ซึ่งเราใช้โปรแกรม DB Browser for SQLite

โลโก้ DB Browser for SQLite

หน้าต่างโปรแกรม

จากนั้นให้สร้าง Database และ Table ซึ่งมีดังนี้

ตาราง Student

ตาราง Subject

ตาราง Grade

ตาราง Main

เมื่อสร้าง Table เสร็จกเริ่มเขียนโค้ด ซึ่งมีขั้นตอน ดังนี้
  • สร้าง Github และ branches เพื่อให้เพื่อน Commit (https://github.com/Nithichai/Database_Group4)
  • ออกแบบ Class สำหรับตาราง แจกให้เพื่อนแต่ละคนทำฟังก์ชัน ซึ่งมีดังนี้
    • init (์นิธิชัย)
    • select_all (ชัยสิทธิ์)
    • insert (พันธกานต์)
    • update (ชัยสิทธิ์)
    • delete (จิรวัฒน์)
    • show_all (นิธิชัย)
    • import_csv (นิธิชัย)
Class Diagram

  • เริ่มเขียนโค้ด ซึ่งเป้าหมายหลัก คือ สามารถอิมพอร์ตไฟล์ CSV เข้าสู่ DBMS ได้ แล้วทดสอบผล
ผลการทดสอบจาก Command Line


ผลการทดสอบจากโปรแกรม

เมื่อทดสอบแล้วพบว่า โค้ดเราสามารถอ่านไฟล์ CSV ในโฟลเดอร์ได้ แล้วนำข้อมูลทั้งหมดเข้า Database ได้และยัง Conflict แถวนั้นหากไม่มีข้อมูลในตาราง Foreign เช่น ใส่รหัสวิชาที่ไม่มีในตาราง Subject เป็นต้น

สรุป
1. เริ่มต้นการทำงานด้วยการจัดรูปแบบ CSV ให้ตรงรูปแบบทุกคน แล้วนำมารวบรวมกัน
2. จากนั้นสร้างออกแบบ DBMS ให้เหมาะสมแก่การใช้งาน
3. เราใช้โปรแกรม DB Browser for SQLite มาเป็นตัวช่วยการทำงาน ในการสร้าง Database หรือ สร้าง Table เป็นต้น
4. จากนั้นแบ่งให้เพื่อนแต่ละคนไปเขียนโค้ดส่วน method ตามที่ตกลงกันไว้
5. เมื่อเขียนเสร็จแล้ว ก็นำมารวบรวมแล้ว แล้วทดสอบ ซึ่งผลสรุปได้ว่า เราสามารถ insert ข้อมูลในไฟล์ CSV ที่อยู่โฟลเดอร์ทั้งหมด ลงมาในตาราง Main เพียงแต่ข้อมูลที่เป็น Super Key นั้นต้องมีข้อมูลในตารางที่เชื่อมกับ Foreign Key ด้วย (หากไม่มีจะ insert ไม่ได้)
6. Commit งานที่สมบูรณ์ไปยัง Github ที่เตรียมเอาไว้
7. จัดทำสไลด์เพื่อแสดงหน้าชั้นเรียน

ปัญหาที่พบ
ทางเทคนิค
1. ตอน insert ข้อมูลเข้าไปแล้ว แต่ใส่เข้าไม่ได้เพราะรหัสวิชาไม่ตรงกัน เกิดจากที่ Spreadsheet ลบเลขศูนย์ที่หน้ารหัสวิชาออกไป แล้วพอมาเทียบกับ Foreign Table แล้วมันหาไม่เจอ แก้ปัญหาด้วยการปรับช่องที่ใส่รหัสวิชาเป็น “ข้อความธรรมดา” หรือใส่ “ ‘ ” ไปที่หน้ารหัสวิชา (‘080303903)
2. ใส่ข้อมูลซ้ำได้ แก้ปัญหาโดยตั้งให้ข้อมูลที่ทำเป็น Foreign Key เป็น Primary Key ทั้งหมด
3. ปัญหาเรื่องการติดต่องาน หรือต้องการที่จะดูโค้ดของเพื่อนเพื่อช่วยกันแก้ปัญหา แก้โดยใช้ Google Hangout ที่พูดคุยกัน และแชร์หน้าจอเพื่อดูโค้ดเพื่อนอีกคนได้
google hangout

4ติดงานกิจกรรม Comday ทำให้เวลาทำงานไม่พอ แก้ปัญหาโดยพอหลังจบงาน Comday ก็เริ่มทำงานทันที และในระหว่างงานคอมเดย์ก็มีช่วงเวลาว่าง จึงเริ่มทำการบ้าน

ลิ้งก์ที่เกี่ยวข้อง

No comments:

Post a Comment

SQL injection (Week 16)

SQL Injection ในบางครั้งนักพัฒนาใช้ method ‘+’ (concat) กับ String ที่เป็นคำสั่ง SQL เพื่อ query ข้อมูลที่ user ต้องการ ซึ่งทำให้เกิดช่...