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

Informal Design Guidelines for Relation Schemas : Guideline 4

  • ออกแบบ relation schemas ให้ join ด้วยค่า attributes ที่เหมือนกัน โดยที่เป็น attributes ที่เกี่ยวข้องกัน
    • รับรองว่าไม่มี spurious tuples ถูกสร้างขึ้น
  • หลีกเลี่ยง relations ที่จับคู่ attributes ที่ไม่ใช่ (foreign key, primary key)

วันอังคารที่ 6 กุมภาพันธ์ พ.ศ. 2561

Try other DBMS (PostgreSQL) & Insert data of my group members

what I have done/learned

     เริ่มด้วยการ download และ install ตัว PostgreSQL
download ตัว installer สำหรับ Windows

หน้าตาของ PostgreSQL GUI (pgAdmin)

     หลังจากนั้นจึงเริ่มสร้าง database ขึ้นผ่าน GUI
คลิ๊กขวาที่ Databases แล้วเลือก Create > Database...
ใส่ชื่อของ Database แล้วจึงกด Save
จะได้ Database ใหม่ขึ้นมา ชื่อ gradeDB ตามที่ตั้งไว้

     เตรียมไฟล์ csv ที่เก็บข้อมูล Grade ของสมาชิกกลุ่มไว้ โดยจะเก็บรวมไว้ในไฟล์ "grade.csv" และเก็บ ID, ชื่อ และอื่นๆ ของสมาชิก ในไฟล์ "student.csv" โดยมี format ดังนี้

student.csv
grade.csv

     สร้าง Table ใน Database โดยมี column เป็น format เดียวกับไฟล์ csv ที่เตรียมไว้
คลิ๊กขวาที่ Tables แล้วเลือก Create > Table...
ในแทป General ได้ตั้งชื่อของ Table ไว้ว่า "grade"
ในแทป Columns ได้สร้าง columns ขึ้นมาตรงตาม format แล้วจึงกด Save
เสร็จสิ้นการสร้าง Table "grade"
สร้างอีกตารางชื่อ "student" แล้วสร้าง columns ตาม format กด Save
เสร็จสิ้นการสร้าง Table "student"

     เนี่องจากเพิ่งสร้าง Tables ขึ้นมาใหม่ Tables จึงยังว่างเปล่า โดยสามารถดูได้จากการ Query
คลิ๊กขวาที่ Table ที่เราสร้างขึ้นมาตัวใดก็ได้ แล้วเลือก Query Tool...

Query ด้วยภาษา SQL เพื่อเรียกข้อมูลทั้งหมดออกมา > จะเห็นว่าไม่มีข้อมูลเลย

     ทำการ import ไฟล์ csv มาทับลงบน Tables ที่สร้างขึ้นมา
คลิ๊กขวาที่ table "grade" แล้วเลือก Import/Export...

ตั้งให้เป็น import, เลือกไฟล์ "grade.csv" และตั้ง Header เป็น yes แล้วจึงกด OK

ทำเช่นเดียวกันกับ Table "student" โดยจะเลือกไฟล์ "student.csv" แล้วจึงกด OK
เมื่อ Query ข้อมูลจาก grade ดูแล้วจะเห็นว่า ข้อมูลได้ถูก import เข้ามาแล้ว

เมื่อ Query ข้อมูลจาก student เห็นว่าข้อมูลก็ถูก import เข้ามาแล้วเช่นกัน

     ทดสอบการ JOIN ของทั้งสอง Tables โดยใช้ "id" เป็นตัวเชื่อม
จากลูกศรสีเขียวจะเห็นว่า เมื่อมี id เดียวกัน ข้อมูลจาก Table "student" ก็มาต่อกับข้อมูลของ Table "grade" ให้

     ลองใช้ SQL ในการ Query ข้อมูลที่ต้องการจาก Tables ทั้งสองที่นำมา JOIN กัน

related info/link/reference

     download PostgreSQL : https://www.postgresql.org/download/

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

Follow SQL Tutorial ( w3schools )

what I have done / learned



     SQL คือ ภาษาพื้นฐานที่ใช้สำหรับ เก็บ, จัดการ, เรียก ข้อมูล ใน database
     SQL ย่อมาจาก Structured Query Language
     SQL เป็นมาตรฐานของ ANSI (American National Standards Institute)
     RDBMS (Relational Database Management System) เป็นรากฐานของ SQL รวมถึง database สมัยใหม่ทั้งหลายด้วย โดยข้อมูลของ RDBMS ที่เก็บอยู่ใน DB objects นั้นเรียกว่า tables

     SQL SELECT Statement : ใช้ในการเลือกข้อมูลจาก database (ใช้ columns เป็นตัวเลือก)

เลือกข้อมูล 2 columns คือ CustomerName และ City จากตาราง Customers


     SQL SELECT DISTINCT Statement : ใช้เรียกค่าที่ต่างกันเท่านั้น (เหมือน SELECT แต่จะไม่มีข้อมูลซ้ำ)

จากรูป เนื่องจากใช้คำสั่ง SELECT ผลลัพธ์ที่ได้จึงมีผลลัพธ์ที่ซ้ำกันอยู่ (Mexico, Germany มีข้อมูลที่ซ้ำ)

จากรูป เมื่อเปลี่ยนเป็นคำสั่ง SELECT DISTINCT ผลลัพธ์ที่ซ้ำก็ถูกแสดงเพียงตัวเดียว (Mexico, Germany เหลือตัวเดียว)


     SQL WHERE Clause : ใช้เป็นตัวกรองข้อมูล เพื่อเรียกข้อมูลที่ตรงตามเงื่อนไข

เลือกข้อมูลมาทั้งหมด แต่ตั้งเงื่อนไขให้เรียกแต่ข้อมูลที่ CustomerID = 1 เท่านั้น จึงเหลือเพียงข้อมูลเดียว


     SQL AND, OR and NOT Operators : สามารถใช้เป็น Operators ของ WHERE Clause ได้ เมื่อต้องการมากกว่า 1 เงื่อนไข

ใช้ Operators AND และ OR เพิ่มเงื่อนไข ในคำสั่ง WHERE


     SQL ORDER BY Keyword : ใช้เพื่อเรียง(sort) ผลลัพธ์ ได้ทั้งจากน้อยไปมาก (ASC) และมากไปน้อย (DESC)

เรียงลำดับตาม Country แบบ Ascending และ CustomerName แบบ Descending


     SQL INSERT INTO Statement : ใช้ในการเพิ่มข้อมูลลงใน table

เพิ่มข้อมูล 1 ชุด ในตาราง Customers


    SQL NULL Values : คือ field ที่ไม่มีค่า หรือเป็นช่องว่าง


related info/link/reference

     SQL Tutorial : https://www.w3schools.com/sql/


วันจันทร์ที่ 29 มกราคม พ.ศ. 2561

Try a DBMS (MySQL)

what I have done / learned

     - install MySQL

     - load sample data into MySQL

คลิ๊ก + เพื่อเพิ่ม connection
ตั้งชื่อ connection ว่า "local" (หรืออาจ setting เพิ่มเติมได้) แล้วกด OK
จะได้ connection ใหม่(ทางขวา)
หลังจากเข้าใน local ที่สร้างขึ้นมาใหม่ จะขึ้นหน้าต่างนี้

กด file > Open SQL Script และเลือกไฟล์ mysqlsampledatabase ที่โหลดมา
 
หลังจากนั้นกด refresh ที่ schemas จะได้ database ใหม่คือ "classicmodels"

     - Querying data

ใช้คำสั่ง SELECT เลือกข้อมูลจากตาราง employees มา 3 columns

ในการใช้คำสั่ง SELECT เลือกข้อมูลออกมาอาจจะได้ข้อมูลที่ซ้ำกันได้

แต่หากเปลี่ยนมาใช้คำสั่ง SELECT DISTINCT จะทำให้ข้อมูลที่ซ้ำกันจะถูกนำออกไป


related info/link/reference

     install : http://www.mysqltutorial.org/install-mysql/
     tutorial : http://www.mysqltutorial.org/basic-mysql-tutorial.aspx
     model : http://www.mysqltutorial.org/mysql-sample-database.aspx

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

Calculate GPA (csv + python)

what I have done / learned

     ได้ export จาก spreadsheet เป็นไฟล์ csv


     และได้เขียนโปรแกรมในการคำนวณ GPA ด้วยภาษา python ดังนี้


    ทำให้ได้ผลการรัน ที่จะแสดง [คะแนน,หน่วยกิต,เกรดเฉลี่ย] ของแต่ละเทอม รวมถึงเกรดเฉลี่ยสะสม


any problem / solution

     มีปัญหาจากการที่โปรแกรมไม่สามารถอ่านภาษาไทยได้ เมื่อมีการเรียกหาข้อมูลที่เป็นภาษาไทยจะทำให้ขึ้นแจ้ง error
     จึงเพิ่มเติมในส่วนของการเปิดไฟล์ csv ให้ใช้ encoding = "utf-8"



related info/link/reference

     method ใน library csv : https://docs.python.org/3/library/csv.html



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

Calculate GPA

what I have done / learned

 

       
       เรียนรู้การใช้ google spreadsheet เพื่อสร้าง file ข้อมูลขึ้นมา รวมถึงการใช้ฟังก์ชันคำนวณ เช่น

     จากตัวอย่างจะเป็นการคำนวณง่ายๆ เพื่อหาค่า GPA (ในช่อง I5) โดยการนำ [คะแนนสะสม] มาหารกับ [หน่วยกิตสะสม] หรือก็คือนำ I4/I3


any problem / solution


     - เนื่องจากคิดเกรด GPA จึงจำเป็นต้องคำนวณ [หน่วยกิตสะสม] และ [คะแนนสะสม] ซึ่งหากจะคำนวณ + - * / ไปทีละช่องก็จะดูยุ่งยาก และไม่ยืดหยุ่นจึงพบวิธีการคำนวน โดยใช้ SUM และ SUMPRODUCT จึงทำให้การคำนวณง่ายขึ้น และยืดหยุ่นขึ้น

SUM

SUMPRODUCT


related info/link/reference


       ลิงก์กูเกิลชีต : grades/transcript_Chanon
       ฟังก์ชันการคำนวณ : https://support.google.com/drive/table/25273?hl=th

Informal Design Guidelines for Relation Schemas : Guideline 4

ออกแบบ relation schemas ให้ join ด้วยค่า attributes ที่เหมือนกัน โดยที่เป็น attributes ที่เกี่ยวข้องกัน รับรองว่าไม่มี spurious tuples ถู...