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

wk11 : guideline4

Guideline 4

  • ออกแบบให้ relation schema ที่มีการ equally join (เลือกจาก attributes ที่เหมาะสม) จะทำให้ไม่เกิด spurious table (เกิดจากการ join โดยไม่ใช้ primary key หรือ foriegn key อ้างอิงจาก quora
  • เลี่ยงการใช้ attributes ที่ไม่ใช่ pk หรือ fk มาใช้ join

wk8 : database performance

ใช้การวัดเวลาในการ import ข้อมูล และการ Query ทั้ง 3 แบบ
1.Query 1 - รายชื่อนักศึกษาที่ชื่อขึ้นต้นด้วยตัว j, f, k
2.Query 2 - นักศึกษาที่ไม่ได้เกรด A ในวิชา PROGRAMMING FUNDAMENTAL
3.Query 3 - อันดับวิชาที่มีจำนวนนักศึกษาได้เกรด A มากที่สุด

DBMS ที่ใช้งาน : 
MySQL (python library)
Postgresql (python library)
SQLite ทำการติดตั้งทั้งตัว dbms และ library

ข้อมูลที่ใช้ import
subject
student
registration

เมื่อโหลดไฟล์ student ไปแล้วต้องลบบรรทัดแรกที่เขียนว่า >>>student<<< ออกไปด้วย (ใช้ Notepad++ จะเห็นเรียงเป็นบรรทัด)

จากนั้นทำการรันโค้ด python ที่ใช้วัดเวลาในการ import , query ข้อมูล
Google Drive

เมื่อลองรันแล้วนำข้อมูลมาใส่ตารางได้ดังนี้

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

wk6 : ทดลองนำไฟล์ขนาดใหญ่เข้า database

 What I have done

ทดลองสร้างไฟล์ขนาดใหญ่เพิ่มขึ้นเรื่อยๆ ดังตาราง 
จากนั้นทำการ import เข้า MySQL โดยใช้ python (library อยู่ใน Link)
แล้วใช้การ Query แบบ ทั้งหมด ( select * )

QUERY ALL
FETCH TIME (second)
1000 rows (0.28 MB)
0.031
9202 rows (1.93 MB)
0.016
12113 rows (2.18 MB)
0.157
20058 rows (4.54 MB)
1.453
550113 rows (78.71 MB)
1.828
3,622,113 rows (487.23 MB)
9.938
5,179,927 rows (733.53 MB)
15.984
16,084,625 rows (2271.03 MB)
54.125

Problem

หากใช้การ insert โดยใช้ loop ใน python เรื่อยๆจะใช้เวลานานมากๆ จึงใช้วิธี import ไฟล์ (csv file) แทน

Link in use

wk5 : Find ER from textbook

What I have done

หา ER Diagram จาก Textbook ที่ชื่อ Database Concept 6th Edition 
จากนั้นนำมาวาดใน Google Presentation


What I have learn


เส้นสองเส้นหมายถึงความสัมพันธ์แบบ Total participation หมายถึง สิ่งๆนึงต้องมีส่วมรวมในสิ่งอีกสิ่งแบบทุกตัว เช่น นักเรียนทุกคนอยู่ในdepartment

Weak entity คือ entity ที่ไม่มี primary key ของตัวเอง และขึ้นอยู่กับ owner (strong entity) เช่น
Course ที่เป็น Owner (เจ้าของ) ของ Section

Relation R สามารถมีตัวแปรเพื่มได้เช่น takes มีตัวแปร grade








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

w4 : import team's csv to database

import team csv to database

What I have done & learn
  • สร้างตารางแยกไว้ 3 ตาราง
    • student (เลขประจำตัว ชื่อ นามสกุล คณะ สาขา)
    • subject (รหัสวิชา ชื่อวิชา หน่วยกิต)
    • registration
  • ทำการ import ข้อมูลทั้ง 3 ตาราง โดยใช้ปุ่ม import ภายในตาราง
  • ทดลองการหาชื่อนักศึกษาจากตารางใน Registration
    • โดยใช้คำสั่ง Join


Problem & Decision
  • พบ Error 1452 เนื่องจากตารางที่มีความเกี่ยวข้องกัน มีข้อมูลไม่ครบเท่ากัน 
    • เช่น ในตารางวิชาเรียน กับ ในตารางลงทะเบียน
    • ในตารางลงทะเบียนมีวิชา ที่ไม่มีในตารางวิชาเรียน จะเกิด Error นี้
    • ทางแก้คือ เพื่มวิชาในตารางวิชาเรียน
  • จะทำการลบข้อมูลที่มี Foreignkey เชื่อมกันอยู่ ไม่สามารถทำได้

Reference
  1. https://stackoverflow.com/questions/1253459/mysql-error-1452-cannot-add-or-update-a-child-row-a-foreign-key-constraint-fa
  2. https://www.w3schools.com/sql/sql_join.asp
  3. https://dev.mysql.com/doc/workbench/en/wb-forward-engineering-sql-scripts.html

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

w3

ทำ tutorial SQL ใน w3school
และ Import CSV to DBMS

What I have done & learn
  • ได้รู้คำสั่งของ SQL เบื้องต้น เช่น
    • select
    • distinct
    • where
    • and or not
    • insert into
    • update
  • ได้รู้คำสั่งเบื้องต้นในการนำข้อมูลจากไฟล์ csv เข้า dbms (MySQL)
    • ได้รู้ว่ามีปุ่ม Import จากไฟล์ ใน MySQL Workbench
    • ได้รู้คำสั่งการ
      • สร้าง table ( บรรทัดที่ 3-9 )
      • ลบ table ( บรรทัดที่ 1)
      •  import จาก ref2 ( บรรทัดที่ 12-17 )

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
DROP TABLE MyScore;

CREATE TABLE MyScore(
Term varchar(255),
Subject varchar(255),
Credit int,
Grade varchar(255),
ID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID)
);

LOAD DATA LOCAL INFILE  'C:/Users/NTP/Desktop/database/_CSV SpreadSheet for DBMS.csv'
INTO TABLE MyScore
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
Problem & Decision
  • ไม่สามารถกด Import จากไฟล์ csv ได้
    • ไม่มี Primary Key ใน table จึงต้องเพิ่ม primary key

    wk12 : form

    First form จาก table employee จะเห็นว่า มี Jon และ Lester มี 2 เบอร์ จึงไม่เป็น 1st form จากกฏคือ  “each attribute of a table must ha...