วันอาทิตย์ที่ 28 มกราคม พ.ศ. 2561

Week3

SQL Tutorial:
  •  SQL INSERT INTO Statement
  •  The SQL CREATE TABLE Statement
  •  SQL UNIQUE Constraint
  •  SQL PRIMARY KEY Constraint 
  •  SQL FOREIGN KEY Constraint 
done/learned:
  • download และ install mysql connector for python จาก https://dev.mysql.com/downloads/file/?id=472568
  • เขียนโปรแกรมภาษา python รับข้อมูล ชื่อ นามสกุล และรหัสนักศึกษา เพื่อนำไปสร้างข้อมูล student ใน database 
  • เขียนโปรแกรมภาษา python เลือกไฟล์ csv เพื่อนำไป เพิ่มใน database 
  • เขียนโปรแกรมภาษา python เพื่อสร้าง database, table และ insert ข้อมูลลงใน database ที่สร้าง
problem/solution:
  1. ในการใช้คำสั้ง input จำเป็นต้องกรอก input โดยมีเครื่องหมาย " " เช่น หากต้องการจะกรอกชื่อ จะต้องกรอกเป็น 'name' ไม่สามารถกรอก name เฉยๆได้ สร้างความลำบากในการใช้งาน       แก้ไขโดยการเปลี่ยนไปใช้คำสั่ง raw_input แทน โดยศึกษาจาก Python 2.7 getting user input and manipulating as string without quotations
  2. ไม่สามารถ INSERT DATA ได้ เกิด error Not all parameters were used in MySQL statement       สาเหตุเกินจาก การใส่ค่า VALUES ใน INSERT ต้องเป็น %S(String) เท่านั้น จึงทำการเปลี่ยน format ทุก attributes ให้เป็น %S ทั้งหมด จากบางอันที่เป็น %I  
decision: 
  1.  ให้ primary key ของ TABLE Students เป็น Student_id หรือ รหัสนักศึกษาเนื่องจากไม่สามารถซ้ำกันได้
  2.  กำหนด attribute ชื่อ pk ใน TABLE Student_record เพื่อ เป็น primary key ของ TABLE นี้ เนื่องจาก attribute อื่นๆ ทุกตัวสามารถซ้ำกันได้
related info/link/reference:

วันอังคารที่ 23 มกราคม พ.ศ. 2561

Try a DBMS

MariaDB
https://mariadb.org/

ทดลองใช้งานตาม หัวข้อ learn (https://mariadb.org/learn/)  ดังนี้
 done/learned: การสร้าง Database เพิ่มข้อมูล แก้ไขข้อมูล และการสร้าง Qeury เบื้องต้น
  • CREATE DATABASE ใช้สร้าง Database
  • CREATE TABLE ใช้สร้าง Table โดยมีการกำหนด Attributes ของ table ที่จะสร้าง
  • INSERT ใช้สำหรับการเพิ่มข้อมูลใน Table
  • UPDATE  ใช้แก้ไขข้อมูลที่มีอยู่
  • SELECT ใช้เรียกดู Data สามารถระบุ Table และ Condition เพื่อกรอกข้อมูลที่เรียกดูได้
problem/solution:
  •     ในการใช้ MariaDB ผ่าน Comand Line ในตอนแรกไม่สามารถเข้าใช้งาน MariaDB ได้ แก้ไขโดยการใช้คำสั่ง mysql -u root -p ในการ login ทำให้ login ได้หลังจากใส่ passwotd
reference:
https://mariadb.org/
https://mariadb.org/learn/
https://www.tutorialspoint.com/mariadb/mariadb_quick_guide.htm

วันเสาร์ที่ 20 มกราคม พ.ศ. 2561

GPA Calculate 2 CSV

link: https://github.com/a5810130/db2560/blob/master/week2/readcsv.py

done/learned:
    export ไฟล์ CSV จาก spreadsheet
    เขียน code python เพื่อเปิดไฟล์ CSV โดยศึกษาจาก CSV File Reading and Writing
    สามารถอ่านข้อมูล grade นำมาแบ่งเป็นเทอม และคำนวน grade ของแต่ละเทอม
   
problem/solution:
    1. เมื่อใช้ DictReader จะไม่สามารถอ่านข้อมูลได้เนื่องจาก header ใน CSV เป็นภาษาไทย
     แก้ไขโดยเปลี่ยนไปใช้ reader แทน และระบุ column ที่ต้องการโดยระบุ index ของ column
    2. เมื่อดึงข้อมูล จะได้รับข้อมูลของ header มาด้วย 
    แก้ไขโดยใช้คำสั่ง next(csvfile) เป็นการข้ามแถวของ csvfile ไปที่แถวทัดไป

decision: 
    1. ทำการเก็บข้อมูลของ csvfile โดยแบ่งเป็นเทอมก่อน แล้วจึงคำนวณเกรด โดยมีข้อกำหนดดังนี้
        วิชาที่อยู่ในเทอมเดียวกันจะอยู่ในแถวที่ติดกัน
        แต่ละเทอมจะมีระยะห่าง 1 แถว (มีแถวว่างคั้นระหว่างเทอม)
    2. ใช้ dict ในการแปลงเกรดจาก char เป็นตัวเลข แทนการใช้ condition เพื่อความสั้น กระชับ 
    3. ทำการคำนวณเกรดเฉลี่ย และเกรดเฉลี่ยสะสมของแต่ละเทอม
 
related info/link/reference:

วันเสาร์ที่ 13 มกราคม พ.ศ. 2561

GPA Calculate

link: https://docs.google.com/spreadsheets/d/1SMDHe4pUGKVwmD5S31X47IjK91uGdDpp7zllJijOjjs/edit#gid=0

learned:

    use spreadsheets function (Google spreadsheets function list)
    • IFS - If/Else Condition  
    • MULTIPLY - Multiply function
    • SUM - Summation function
    • DIVIDE - Divide function  
    การซ่อน Column

   การตรวจสอบข้อมูล

problem:

    เมื่อใช้รูปแบบนี้
    =IFS(C2="A",4,C2="B+",3.5,C2="B",3,C2="C+",2.5,C2="C",2,C2="D+",1.5,C2="D",1,C2="F",0)

     หากไม่มีการกรอก grade จะไม่สามารถคำนวณเกรดได้

solution:
    
     จาก https://blog.sheetgo.com/google-sheets-formulas/ifs-formula-google-sheets/

     สามารถเพิ่มเงื่อนไข true สำหรับค่าอื่นๆทั้งหมดที่ไม่เข้าเงื่อนไข ได้ดังนี้

     =IFS(C2="A",4,C2="B+",3.5,C2="B",3,C2="C+",2.5,C2="C",2,C2="D+",1.5,C2="D",1,C2="F",0,true,0)

decision:
    ใช้ฟังก์ชัน IFS ในการแปลงข้อมูลจาก A-F เป็น 4-0
    ไม่ทำการกำหนดขอบเขต ของวิชาที่นำมาคำนวณ โดยหากมีการเพิ่มข้อมูลของวิชาเรียน จะนำวิชานั้นมาคำนวณ GPA ใหม่ทันที

info/link/reference:
    Google spreadsheets function list
    IFS formula