- ออกแบบให้ relation schema ที่มีการ equally join (เลือกจาก attributes ที่เหมาะสม) จะทำให้ไม่เกิด spurious table (เกิดจากการ join โดยไม่ใช้ primary key หรือ foriegn key อ้างอิงจาก quora
- เลี่ยงการใช้ attributes ที่ไม่ใช่ pk หรือ fk มาใช้ join
วันเสาร์ที่ 24 มีนาคม พ.ศ. 2561
wk11 : guideline4
Guideline 4
wk8 : database performance
ใช้การวัดเวลาในการ import ข้อมูล และการ Query ทั้ง 3 แบบ
1.Query 1 - รายชื่อนักศึกษาที่ชื่อขึ้นต้นด้วยตัว j, f, k
2.Query 2 - นักศึกษาที่ไม่ได้เกรด A ในวิชา PROGRAMMING FUNDAMENTAL
3.Query 3 - อันดับวิชาที่มีจำนวนนักศึกษาได้เกรด A มากที่สุด
Postgresql (python library)
SQLite ทำการติดตั้งทั้งตัว dbms และ library
ข้อมูลที่ใช้ import
subject
student
registration
เมื่อโหลดไฟล์ student ไปแล้วต้องลบบรรทัดแรกที่เขียนว่า >>>student<<< ออกไปด้วย (ใช้ Notepad++ จะเห็นเรียงเป็นบรรทัด)
จากนั้นทำการรันโค้ด python ที่ใช้วัดเวลาในการ import , query ข้อมูล
Google Drive
เมื่อลองรันแล้วนำข้อมูลมาใส่ตารางได้ดังนี้
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
เมื่อลองรันแล้วนำข้อมูลมาใส่ตารางได้ดังนี้
วันอาทิตย์ที่ 4 มีนาคม พ.ศ. 2561
วันศุกร์ที่ 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
Problem & Decision
Reference
What I have done & learn
- สร้างตารางแยกไว้ 3 ตาราง
- student (เลขประจำตัว ชื่อ นามสกุล คณะ สาขา)
- subject (รหัสวิชา ชื่อวิชา หน่วยกิต)
- registration
- ทำการ import ข้อมูลทั้ง 3 ตาราง โดยใช้ปุ่ม import ภายในตาราง
- ทดลองการหาชื่อนักศึกษาจากตารางใน Registration
- โดยใช้คำสั่ง Join
Problem & Decision
- พบ Error 1452 เนื่องจากตารางที่มีความเกี่ยวข้องกัน มีข้อมูลไม่ครบเท่ากัน
- เช่น ในตารางวิชาเรียน กับ ในตารางลงทะเบียน
- ในตารางลงทะเบียนมีวิชา ที่ไม่มีในตารางวิชาเรียน จะเกิด Error นี้
- ทางแก้คือ เพื่มวิชาในตารางวิชาเรียน
- จะทำการลบข้อมูลที่มี Foreignkey เชื่อมกันอยู่ ไม่สามารถทำได้
Reference
- https://stackoverflow.com/questions/1253459/mysql-error-1452-cannot-add-or-update-a-child-row-a-foreign-key-constraint-fa
- https://www.w3schools.com/sql/sql_join.asp
- 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
Problem & Decision
และ 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; |
- ไม่สามารถกด Import จากไฟล์ csv ได้
- ไม่มี Primary Key ใน table จึงต้องเพิ่ม primary key
สมัครสมาชิก:
บทความ (Atom)
wk12 : form
First form จาก table employee จะเห็นว่า มี Jon และ Lester มี 2 เบอร์ จึงไม่เป็น 1st form จากกฏคือ “each attribute of a table must ha...
-
ใช้ seven step algrotithm ในการแปลงจาก ER Diagram เป็น Relationship Slide
-
What I have done ทดลองสร้างไฟล์ขนาดใหญ่เพิ่มขึ้นเรื่อยๆ ดังตาราง จากนั้นทำการ import เข้า MySQL โดยใช้ python (library อยู่ใน Link) แล...
-
import team csv to database What I have done & learn สร้างตารางแยกไว้ 3 ตาราง student (เลขประจำตัว ชื่อ นามสกุล คณะ สาขา) subject...