วันเสาร์ที่ 21 เมษายน พ.ศ. 2561

W13 Create DB

W13 Create DB
use Mysql
จาก ER

สร้าง 5 ตาราง relation ดังนี้

Table menu


Table raw_material


Table history



Table use 



Table record


ทดลอง query ข้อมูล
Query ข้อมูลออกมา เวลาเลือกเมนูนี้ จะใช้วัตถุดิบอะไร

result



Query  ข้อมูลออกมา เวลาเลือกวัตถุดิบ แล้วใช้กับเมนูอะไรบ้าง

result
Query  ข้อมูลออกมา เวลาเลืิอก date จาก history แล้ววันนั้นมีเมนูอะไรบ้าง

result




Query  ข้อมูลออกมาเวลาเลืิอก date จาก history แล้ววันนั้นมีเมนูอะไรและวัตถุดิบอะไรบ้าง


result




What have you done/learned


- ได้เรียนการ ทำ DB ตามที่ได้ออกแบบไว้

Problem/Solution


-  คำสั่งในการ join ใช้ไม่เก่ง เลยทำการลองทำการ join

Decision


- ตัดสินใจเอา ใช่ mysql ในการทำ DB

Related Info/link/reference




วันอังคารที่ 3 เมษายน พ.ศ. 2561

W12 ทำ Example 1NF 2NF 3NF

W12 ทำ Example 1NF 2NF 3NF

Example


1NF

- แต่ละ attribute ต้องไม่มีหลาย( Multi-Valued Attributes ) 


2NF

- ต้อง เป็น 1NF ก่อน
- ทุก key ที่ไม่ใช่ primary key ต้องขึ้นอยู่กับ primary key ( ไม่มี Partial Functional Dependency )



3NF

- ต้อง เป็น 2NF ก่อน
- ไม่มี attribute ใดขึ้นอยู่กับ attribute อื่นๆที่ไม่ใช่ primary key ( ไม่มี Transitive dependency )





What have you done/learned


- ได้เรียนการทำ Normalization

Problem/Solution


- ไม่ค่อยเข้าใจการทำ Normalization แก้โดย ศึกษาเพิ่ม

Decision


- ตัดสินใจเอา ตัวอย่างภาษาไทบ

Related Info/link/reference





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

W11 Guideline 4

W11 Guideline 4


         ออกแบบ relation schemas ทีสามารถ joined กันได้ ด้วยเงื่อนไข ที่มีความเท่าเทียมกัน บน attributes ซึ่งมีความเกี่ยวข้องกันอย่างแหมาะสม เช่น primary key และ foreign key ที่มีความสัมพันธ์กัน โดยจะต้องยืนยันได้ว่าไม่มี tuples ปลอมที่ถูก generated ออกมาได้ และหลีกเลี่ยงความสัมพันธ์ที่มีการจับคู่ attributes ซึ่งไม่ใช่ foreign key และ primary key รวมอยู่ เพราะว่าหากทำการ joining ด้วย attributes เหล่านั้น จะก่อให้เกิด tuples ปลอมออกมา

W8 Performance of SQLite

W8 Performance of SQLite 



Hardware

CPU :  Core i5
RAM : 8 Gb
Storage : HDD 

Test SQLite

select * from ..table.. limit ....


select stu_id from ..table.. limit ....


หาจากแหล่งอื่น
Perfomance of INSERT

Perfomance of READ (Query)

The result shows, that PostgreSQL have the best performance for Insert operation,
followed by Mysql, MariaDB and SQLite respectively. Even though MariaDB perform
worst for Insert Operation, It has the best performance for read operation under
similar workload

What have you done/learned


- ได้เรียนรู้ว่า Performace ของ SQLite

Problem/Solution


- ไม่สามารถดปรียบเทียบกันได้เพรา cpu ram storage ไม่เหมือนกัน

Decision


- ตัดสินใจเอา คำสั่งให้เหมือนกันทั้งหมด และ ข้อมูลชุดเดียวกัน

Related Info/link/reference


- link ref  sqlite : https://sqlite.org/cli.html
- link ref sql language : https://www.w3schools.com/
- link ref scholar : link

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

W7 Edit Week 6 SQlite

W7 Edit Week 6 SQlite

คำสั่ง SQL ที่ใช้

select * from transcript where gpa = 'A' limit 1000000
ใช้เวลา  3422ms = 3.422s

select * from transcript where gpa = 'B' limit 1000000
ใช้เวลา  3482ms = 3.482s

select * from transcript where gpa = 'D' limit 1000000
ใช้เวลา  3244ms = 3.244s

select * from transcript limit 10000
ใช้เวลา  18ms = 0.018s

select * from transcript limit 100000
ใช้เวลา  177ms = 0.177s

select * from transcript limit 1000000
  
ใช้เวลา  1774ms = 1.774s

select * from transcript limit 10000000
ใช้เวลา  22972ms = 22.972s

What have you done/learned


- ได้เรียนรู้ว่า where ใข้เวลา นาน กว่า การ query ปกติโดย fix row ที่ได้

Problem/Solution


- การทำข้อมูลให้เหมือนกัน แก้โดยการทำ data กลางแล้ว copy ให้เหมือนกัน

Decision


- ตัดสินใจเอา คำสั่งให้เหมือนกันทั้งหมด และ ข้อมูลชุดเดียวกัน

Related Info/link/reference


- link ref  sqlite : https://sqlite.org/cli.html
- link ref sql language : https://www.w3schools.com/

W6 Big DATABASE file SQlite

W6 Big DATABASE file SQlite 


ใช้ insert จาก JS
ผลจาก Insert 100000 rows
ใช้เวลานานเกินไปเลยเปลี่ยนมา  import CSV แทน
ทำโปรแกรม generate CSV

ทำ การ Import CSV ได้ แค่ 50 M rows ก็ คอมค้าง ที่ 16 M ใช้เวลานานประมาน 6-8 นาที

เมื่อ file มีขนาดใหญ่ต้องใช้ command ที่ 250M rows ยังไม่มีปัญหา import ประมาน 6-8 นาที

ลอง Query เมื่อมีข้อมูลใน DB เยอะ โดยใช้ JavaScript

100000 rows ( 643 ms )


1000000 rows ( 6214 ms ~ 0.6 s)


10000000 rows เกิด Error เลย ใช้ ตัวอื่น

ลอง Query เมื่อมีข้อมูลใน DB เยอะ โดยใช้ DB browser


ลอง Query เมื่อมีข้อมูลใน DB เยอะ โดยใช้ command


What have you done/learned


- รู้ว่าเมื่อมีข้อมูลเยอะจะเกิดอะไรขึ้น เช่น คอมช้าลง คอมค้าง 

Problem/Solution


- คอมช้าลง คอมค้าง แก้ตามสถานการ
- generate csv เวลาใช้คำสั่ง write ลง csv ได้ไม่เกิน 5 Mบรรทัด แล้ว เกิดการ ram ไม่พอ แก้ไขโดย ใช้ append ทีละ 5ล้านเลือยๆ จนครบ 200M

Decision


- ตัดสินใจ ใช้การ import CSV 

Related Info/link/reference


- link ref node js : https://nodejs.org/api/index.html 
- link ref import csv sqlite : https://sqlite.org/cli.html
- link ref sql language : https://www.w3schools.com/

วันพุธที่ 14 กุมภาพันธ์ พ.ศ. 2561

W5 ER Diagram the music database

 ER Diagram The Music Database


The Music Database
The music database stores details of a personal music library, and could be used to manage your MP3, CD




One artist can make many albums . Conversely, an album is by one artist.
Which has an artist_id attribute that uniquely identifies it.





One album can contain many tracks . Conversely, a track is on one album.

Each Album entity is uniquely identified by its album_id combined with the artist_id of the corresponding Artist entity
.


One track can be played many times . Conversely, each play is associated with one track

A Track entity is similarly uniquely identified by its track_id combined with the related album_id and artist_id attributes. The Played entity is uniquely identified by a combination of its played time, and the related track_id, album_id, and artist_idattributes.


What have you done/learned


- รู้การสร้าง ER digram

Problem/Solution


- วาดรูปลำบาก แก้ โดยวาดรูป ลง google slide 

Decision


- ตัดสินใจเอาตัวย่าง the music database

Related Info/link/reference


- link ER diagram :  ลิ้งค์