วันจันทร์ที่ 23 พฤษภาคม พ.ศ. 2559

SQL injection & Chmod

http://db5630078.blogspot.com/2016/05/presentation-sqli.html

Log-file&Unethical

http://db5630078.blogspot.com/2016/05/presentation-log-file.html

Database Security

http://db5630078.blogspot.com/2016/05/presentation-database-security.html

MySQL_SQLite_PostgreSQL

http://db5630078.blogspot.com/2016/05/presentationmysqlsqlitepostgresql.html

Normalisation

http://db5630078.blogspot.com/2016/05/presentation-normalisation.html

Assignment I

http://db5630078.blogspot.com/2016/03/presentation-assignment-i.html

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

Week4 : Relational algebra


Relational Algebra Operations พื้นฐาน

การกระทำเกี่ยวกับ Relational Algebra ขั้นพื้นฐานได้แก่ Select, Project, Composition, Union, Set difference, Cartesian-product และ Rename

1. Selection operator

ตัวกระทำในการ Select คือ s (sigma) ทำหน้าที่เป็นตัวเลือกข้อมูลความสัมพันธ์จากเงื่อนไขที่กำหนด ผลลัพธ์จาก Select คือแถวในความสัมพันธ์จำนวนหนึ่งซึ่งจะมีจำนวนดีกรีเท่ากับความสัมพันธ์ที่นำมาผ่านการเลือก จำนวนแถวที่เป็นผลลัพธ์อาจจะน้อยกว่าจำนวนแถวทั้งหมดที่มีในความสัมพันธ์แต่จะไม่มากกว่า
เงื่อนไขในการเลือกจะถูกเขียนไว้เป็นตัวห้อยจากเครื่องหมาย s การระบุเงื่อนไขสามารถทำได้โดยใช้เครื่องหมายในการเปรียบเทียบและตัวกระทำทางตรรกะร่วมกันได้
- เครื่องหมายเปรียบเทียบ ได้แก่ = (เท่ากับ), ¹ (ไม่เท่ากับ), < (น้อยกว่า), £ (น้อยกว่าหรือเท่ากับ), > (มากกว่า), > (มากกว่าหรือเท่ากับ)
- ตัวกระทำทางตรรกะ ได้แก่ Ù (and) , Ú (or) และ Ø (not)
ตัวอย่างเช่น การค้นหาข้อมูลของผู้เล่นที่ส่วนสูงมากกว่า 178 จากความสัมพันธ์ Player ในตาราง 2-1 สามารถเขียนโดยใช้ Selection operator ได้เป็น

height > 178 Player
การค้นหาข้อมูลของผู้เล่นที่อายุมากกว่า 25 และเป็นผู้เล่นในตำแหน่งกองหน้า
age > 178 Ù position = กองหน้า Player
ผลลัพธ์ที่ได้แสดงดังตาราง 2-3

name

position

age

Height

weight
สุเมธ
กองหน้า
26
183
82
ก้องเกียรติ
กองกลาง
24
180
78
ตาราง 2-7 ผลลัพธ์ของ selection : s height > 178 Player 
การเลือกข้อมูลโดยใช้ s เทียบได้กับการใช้คำสั่ง SELECT … FROM … WHERE ในภาษา SQL
SELECT name, position, age, height, weight
FROM Player
WHERE height > 178

2. Projection operator

Projection คือ การเลือกเฉพาะบางคอลัมน์ของความสัมพันธ์ที่สนใจขึ้นมาแสดง โดยใช้สัญลักษณ์ p (pi) เขียนในรูปแบบของ p attributes r ผลลัพธ์จากการเลือกโดยใช้ p จะได้จำนวนแถวเท่ากับความสัมพันธ์ r แต่จำนวนดีกรีอาจจะเท่ากันหรือน้อยกว่าก็ได้ เทียบได้กับการใช้คำสั่ง SELECT … FROM ในภาษา SQL ตัวอย่างเช่น การเลือกดูข้อมูลเฉพาะน้ำหนักและส่วนสูงจากความสัมพันธ์ Player ผลลัพธ์จากการ project นี้แสดงได้ดังตาราง 2-4
weight, height Player

SELECT weight, height
FROM Player

weight

height
82
183
78
175
71
169
78
180
ตาราง 2-8 ผลลัพธ์ของการใช้ projection : p weight, height Player

3. การใช้ Selection operator ร่วมกับ Projection operator

Selection operator () และ Projection operator () สามารถนำมาใช้ร่วมกันได้เพื่อเลือกข้อมูลจากความสัมพันธ์ที่ต้องการได้ เช่น การเลือก ชื่อ และ ตำแหน่งของผู้เล่นที่ส่วนสูงมากกว่า 178 เทียบได้กับคำสั่งSQLดังข้างล่าง และผลลัพธ์แสดงดังตาราง 2-5
name, position (s height > 178 Player)

Name

position
สุเมธ
กองหน้า
ก้องเกียรติ
กองกลาง
ตาราง 2-9 ความสัมพันธ์ที่เกิดจากการใช้ selection และ projection ร่วมกัน
SELECT name, position
FROM Player
WHERE height > 178

4. Union

เราสามารถกล่าวได้ว่าความสัมพันธ์ R1 และ R2 เป็นความสัมพันธ์ที่สามารถนำทำมา Union กันได้(Union compatible) ก็ต่อเมื่อมีรูปแบบของความสัมพันธ์เหมือนกัน การ Union ความสัมพันธ์ R1 และ R2 สามารถเขียนได้ในรูปของ R1 È R2
ผลลัพธ์ที่ได้นี้จะมีรูปแบบของเหมือนกับความสัมพันธ์ต้นแบบ R1 และ R2 และประกอบไปด้วยแถว t ใดๆ ที่อยู่ใน R1 หรือ R2 เมื่อพิจารณาการ Union ความสัมพันธ์ Player2000 และ Player2001 ต่อไปนี้ ความสัมพันธ์ที่เป็นผลลัพธ์จะประกอบไปด้วย 4 แถวจากความสัมพันธ์ Player2000 และแถวใหม่ 3 แถวจากความสัมพันธ์ Player2001 แสดงดังตาราง 2-7 โปรดสังเกตว่าแถวที่ซ้ำกันจะปรากฏเพียงครั้งเดียวหลังจากการ Union

Name

position

age

height

weight
สุเมธ
กองหน้า
26
183
82
ผลดี
ปีกซ้าย
21
175
78
ชาติชาย
กองหลัง
30
169
71
ก้องเกียรติ
กองกลาง
24
180
78
ความสัมพันธ์ Player2000 

Name

position

age

height

weight
เอกพจน์
ปีกขวา
20
180
78
สุชาติ
กองหน้า
19
179
80
ชาติชาย
กองหลัง
30
169
71
พิเชษฐ์
ปีกซ้าย
22
177
76
ความสัมพันธ์ Player2001
ตาราง 2-10 ความสัมพันธ์ Player2000 และ Player2001

Name

position

age

height

weight
สุเมธ
กองหน้า
26
183
82
ผลดี
ปีกซ้าย
21
175
78
ชาติชาย
กองหลัง
30
169
71
ก้องเกียรติ
กองกลาง
24
180
78
เอกพจน์
ปีกขวา
20
180
78
สุชาติ
กองหน้า
19
179
80
พิเชษฐ์
ปีกซ้าย
22
177
76
ตาราง 2-11 ความสัมพันธ์ผลลัพธ์ของ Player2000 È Player2001
 การ Union โดยใช้คำสั่ง SQL สามารถกระทำได้โดยการใช้คำสั่ง UNION เพื่อเชื่อมระหว่างคำสั่ง SELECT
SELECT name, position, age, height, weight
FROM Player2000
UNION
SELECT name, position, age, height, weight
FROM Player2001

5. Difference

เราสามารถกล่าวได้ความสัมพันธ์ R1 และ R2 เป็นความสัมพันธ์ที่มีความแตกต่าง (Difference Compatible) ก็ต่อเมื่อ R1 และ R2 มีรูปแบบของความสัมพันธ์เหมือนกัน ความแตกต่างของความสัมพันธ์ R1 และ R2 หมายความว่า พบใน R1 และไม่พบใน R2 เขียนได้ในรูป R1 - R2 ตัวอย่าง การหาความแตกต่างของความสัมพันธ์ Player2000 และ Player 2001 แสดงดังตาราง 2-8

Name

position

age

height

weight
สุเมธ
กองหน้า
26
183
82
ผลดี
ปีกซ้าย
21
175
78
ก้องเกียรติ
กองกลาง
24
180
78
ตาราง 2-12 ความสัมพันธ์ผลลัพธ์ของ Player2000 - Player2001
 การหาความแตกต่างโดยใช้คำสั่ง SQL สามารถกระทำได้โดยการใช้คำสั่ง MINUS ระหว่างคำสั่ง SELECT
SELECT name, position, age, height, weight
FROM Player2000
MINUS
SELECT name, position, age, height, weight
FROM Player2001

6. Intersection

การทำ Intersection ระหว่างความสัมพันธ์ R1 และ R2 ผลลัพธ์ที่ได้จะเป็นความสัมพันธ์ที่เกิดจากแถวที่ซ้ำกันใน R1 และ R2 แถวใดที่ไม่ปรากฏใน R1 และ R2 เหมือนกันจะไม่อยู่ในความสัมพันธ์ผลลัพธ์ สามารถเขียนได้ในรูป R1 Ç R2 ตัวอย่าง การทำ Intersection ระหว่างความสัมพันธ์ Player2000 และ Player 2001 จะได้ผลลัพธ์ดังตาราง 2-9 และการทำ Intersection ใน SQL ก็คล้ายกับตัวอย่างการทำ Union และ Difference ข้างต้น เพียงแต่ใช้คำสั่ง INTERSECT คั่นระหว่างคำสั่ง SELECT

Name

position

age

height

weight
ชาติชาย
กองหลัง
30
169
71
ตาราง 2-13 ความสัมพันธ์ผลลัพธ์ของ Player2000 Ç Player2001 
การหาความแตกต่างโดยใช้คำสั่ง SQL สามารถกระทำได้โดยการใช้คำสั่ง MINUS ระหว่างคำสั่ง SELECT
SELECT name, position, age, height, weight
FROM Player2000
INTERSECT
SELECT name, position, age, height, weight
FROM Player2001

7. Division

การทำ Division ไม่ค่อยถูกใช้นักใน Relation Algebra แต่มีประโยชน์ในการค้นหาบางประเภท รูปแบบของ Division คือ R1/R2 เมื่อ R1 และ R2 เป็นความสัมพันธ์ ตัวอย่าง การค้นหาลูกจ้างที่ทำงานอยู่สองแผนกคือ CS และ Fin จากความสัมพันธ์ DEPTNAME ผลปรากฏว่า สิทธิ คือคนทำงานอยู่ทั้งสองแผนก สังเกตผลลัพธ์จากตาราง 2- 13

8.Natural join ()

 Natural-Join คือ Equi-Join ที่ Join ทุกคอลัมน์แต่ขจัดคอลัมน์ที่ซ้ำกันออกไป
r1 ⋈ r2 = r2 ⋈ r1


9.Outer Join

การ join เป็นตรวจสอบคีย์ที่ตรงกัน แต่บางครั้งเราต้องการทัปเพิลในรีเลชั่นหนึ่งไม่สามารถจับคู่กับอีกรีเลชั่นหนึ่งได้ แต่ต้องการทัปเพิลจากรีเลชั่นหนึ่งเพื่อไปปรากฏในผลลัพธ์ จึงจำเป็นต้องใช้การ join แบบ Outer Join


อ้างอิง : http://www.cs.toronto.edu
             https://en.wikipedia.org
             http://www.srisangworn.go.th/

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

Week3 : MySQL

       MySQL (มายเอสคิวแอล) เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management System) โดยใช้ภาษา SQL แม้ว่า MySQL เป็นซอฟต์แวร์โอเพนซอร์ส แต่แตกต่างจากซอฟต์แวร์โอเพนซอร์สทั่วไป โดยมีการพัฒนาภายใต้บริษัท MySQL AB ในประเทศสวีเดน โดยจัดการ MySQL ทั้งในแบบที่ให้ใช้ฟรี และแบบที่ใช้ในเชิงธุรกิจ
     ปัจจุบันบริษัทซันไมโครซิสเต็มส์ (Sun Microsystems, Inc.) เข้าซื้อกิจการของ MySQL AB เรียบร้อยแล้ว ฉะนั้นผลิตภัณฑ์ภายใต้ MySQL AB ทั้งหมดจะตกเป็นของซัน

ความสามารถ


ในเวอร์ชัน 5.0 มีความสามารถหลายอย่างที่สำคัญสำหรับระบบฐานข้อมูลขนาดใหญ่หรือระดับองค์กร (EnterPrise Feature) เช่น Store Procedure, database trigger, database view, database schema ซึ่งได้มีการปรับเพิ่มประสิทธิภาพในส่วนของตารางและการทำดัชนี (index) ขึ้นมาอีก ปัจจุบันเวอร์ชัน community หรือเวอร์ชันที่เสถียร (stable) 5.0 และเวอร์ชันทดสอบคือ 5.1 beta release และ 5.2 Alpha
ตั้งแต่เวอร์ชัน 5.1 เริ่มสนับสนุนการทำ Parttion Database , ตารางเวลาสำหรับเหตุการณ์ต่างๆ (Event schedule)111

ประเภทการจัดเก็บข้อมูล (Database Storage Engine) ที่สนับสนุน

  • MyISAM ค่าปกติ (default)
  • InnoDB สนับสนุนการทำ ทรานแซคชั่น (transaction) แบบ ACID
  • Memory การจัดเก็บในหน่วยความจำ ใช้เป็นตารางชั่วคราวเพื่อความรวดเร็ว เนื่องจากเก็บไว้ในหน่วยความจำ ทำให้มีความเร็วในการทำงานสูงมาก
  • Merge เป็นการรวม Table หลาย ๆ ตัวให้แสดงผล หรือแก้ไข เสมือนเป็นข้อมูลจาก Table เดียว
  • Archive เหมาะสำหรับการจัดเก็บข้อมูลพวก log file,ข้อมูลที่ไม่ต้องมีการ คิวรี่ (query) หรือใช้บ่อยๆ เช่น log file เพื่อประโยชน์ในการตรวจสอบย้อนหลัง (Security Audit Information)
  • Federated สำหรับการจัดเก็บแบบปลายทาง (remote server) แทนที่จะเป็นการจัดเก็บแบบ local เหมือนการจัดเก็บ (Storage) แบบอื่นๆ
  • NDB สำหรับการจัดเก็บแบบ คลัสเตอร์(cluster)
  • CSV เก็บข้อมูลจาก Text ไฟล์โดยอาศัยเครื่องหมาย คอมมา (comma) เป็นตัวแบ่งฟิลด์
  • Blackhole

ส่วนเชื่อมต่อกับภาษาการพัฒนาอื่น (database connector)

มีส่วนติดต่อ (interface) เพื่อเชื่อมต่อกับภาษาในการพัฒนา อื่นๆ เพื่อให้เข้าถึงฟังก์ชันการทำงานกับฐานข้อมูล MySQL ได้เช่น ODBC (Open Database Connector) อันเป็นมาตรฐานกลางที่กำหนดมาเพื่อให้ใช้เป็นสะพานในการเชื่อมต่อกับโปรแกรมหรือระบบอื่นๆ เช่น MyODBC อันเป็นไดรเวอร์เพื่อใช้สำหรับการเชื่อมต่อในระบบปฏิบัติการวินโดว์, JDBC คลาสส่วนเชื่อมต่อสำหรับ Java เพื่อใช้ในการติดต่อกับ MySQL และมี API (Application Programming Interface) ต่างๆมีให้เลือกใช้มากมายในการที่เข้าถึง MySQL โดยไม่ขึ้นอยู่กับภาษาการพัฒนาใดภาษาหนึ่ง
นอกเหนือจาก ตัวเชื่อมต่อกับภาษาอื่น (Connector) ที่ได้กล่าวมาแล้ว ยังมี API ที่สนับสนุนในขณะนี้คือ
  • DBI สำหรับการเชื่อมต่อกับ ภาษา perl
  • Ruby สำหรับการเชื่อมต่อกับ ภาษา ruby
  • Python สำหรับการเชื่อมต่อกับภาษา python
  • .NET สำหรับการเชื่อมกับภาษา .NET framework
  • MySQL++ สำหรับเชื่อมต่อกับภาษา C++
  • Ch สำหรับการเชื่อมต่อกับ Ch (C/C++ interpreter)
  • PHP สำหรับการเชื่อมต่อกับภาษาPHP

อ้างอิง : https://th.wikipedia.org


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

Week2 : SQL

SQL คืออะไร?
      SQL ย่อมาจาก Structured Query Language คือ ภาษาที่ใช้ในการจดการกับฐานข้อมูลโดยเฉพาะ เป็นภาษามาตราฐานบนระบบฐานข้อมูลเชิงสัมพันธ์และเป็นระบบเปิด (open system) หมายถึงเราสามารถใช้คำสั่ง SQL กับฐานข้อมูลชนิดใดก็ได้

DBMS คืออะไร ?
      DBMS ย่อมาจาก Database Management System คือระบบที่ใช้ในการจัดการกับฐานข้อมูล หรือ ซอฟแวร์ที่ใช้ในการจัดการฐานข้อมูลโดยอำนวยความสะดวกให้แก่ผู้ใช้ทั้งในด้านการสร้าง การปรับปรุงแก้ไข การเข้าถึงข้อมูล และการจัดการเกี่ยวกับระบบแฟ้มข้อมูลทางกายภาพ

MySQL เป็นซอฟแวร์ในการจัดการฐานข้อมูล(DBMS)ที่ได้รับความนิยมสูง และยังเป็น Freeware อีกด้วย
ลิ้งค์ดาวน์โหลด >> http://dev.mysql.com/downloads/

ตัวอย่างการใช้เบื้องต้น
       หลังจากที่ Install เสร็จแล้ว เมื่อเปิดขึ้นมาจะขึ้นเป็นหน้าต่างแบบ Command Line (ถ้าอยากได้สวยๆใช้ง่ายๆก็ลง MySQL Workbench เอานะครับ เหตุผลที่ใช้แบบ Command Line เป็นเพราะมันกินพื้นที่น้อย ) ให้ใส่ Password ที่เราตั้งเอาไว้ตอน Install แบบนี้ครับ


     หลังจากที่ใส่ Password ลงไปแล้ว ถ้าเราต้องการจะดูว่ามีฐานข้อมูลอะไรอยู่ในระบบบ้าง ให้พิมพ์คำสั่ง show databases;
Note : ภาษา SQL ไม่ได้ให้สำคัญกับตัวพิมพ์เล็กหรือใหญ่นะครับ เพราะฉะนั้นจะตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ก็ให้ผลเท่ากัน
 
    หากว่าเราต้องการเข้าฐานข้อมูลใดก็ให้พิมพ์คำสั่ง use ชื่อฐานข้อมูล; 


   ถ้าเราต้องการดูว่าภายในฐานข้อมูลมีข้อมูลอะไรอยู่บ้าง ให้พิมพ์คำสั่ง show tables;
   Note: SQL จัดข้อมูลอยู่รูปแบบตาราง Table
   
   ถ้าต้องการจะดูข้อมูลในตาราง ให้พิมพ์คำสั่ง select* from ชื่อตาราง;
  Note: * หมายถึง เลือกคอลัมน์ทั้งหมด หากต้องการดูเฉพาะบางคอลัมน์ให้ระบุ เช่น select id from rating; และถ้าหากต้องการให้แสดงข้อมูลในจำนวนที่ต้องการให้พิมพ์ limit ตามด้วยจำนวนที่ต้องการต่อท้าย เช่น select id from rating limit 50;

อ้างอิง : http://www.mindphp.com/

             https://sites.google.com/site/thaidatabase2

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

Week1



นี่คือข้อมูลเกรดสำหรับนักศึกษาเพียงหนึ่งคน หลังจากที่ได้ทำภายในชั่วโมงเรียน แต่ละคนจะมีข้อมูลของตัวเองและมีแบบฟอร์มไม่เหมือนกัน
หากว่าเราต้องการคำนวนหาเกรดเฉลี่ยนรวมของแต่ละวิชาหรือ GPA เฉลี่ยของนักศึกษาทั้งหมดต้องทำอย่างไร?

- เราก็ต้องเก็บข้อมูลของทุกคนมารวมกันเก็บเป็นข้อมูลแหล่งเดียวกัน แยกเป็นตารางซักสามตาราง ตารางแรกเป็นตารางข้อมูลของนักศึกษา ตารางที่สองเป็นข้อมูลของรายวิชา ตารางที่สามเป็นข้อมูลเกรด ในตารางที่สามก็จะมี  | รหัสนักศึกษา | รหัสรายวิชา | เกรด |  หากต้องการคำนวนอะไรก็มาดึงข้อมูลจากในตารางเหล่านี้ใช้