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

A2 Group.7

PostgreSQL
เนื้อหาของงาน : http://db5630060.blogspot.com/2016/05/whats-postgresql-and-introduces.html

Security of Database
เนื้อหาของงาน : http://db5630060.blogspot.com/2016/05/security-of-database.html

SQL Injection
เนื้อหาของงาน :http://db5630060.blogspot.com/2016/05/sql-injection.html

Normal Form

สมาชิกกลุ่ม
1.นพรัตน์ ไพโรจน์พัฒนกุล 5601012620072
2.ชนานันน์ พงศ์กีรติกานต์ 5601012630043
3.นสิทธิ์ จูรอด 5601012630175

เนื้อหาของงาน :http://db5620072.blogspot.com/2016/05/normal-form.html

วันพุธที่ 13 เมษายน พ.ศ. 2559

PostgreSQL

PostgreSQL คืออะไร
     PostgreSQL เป็นระบบจัดการฐานข้อมูลแบบ ORDBMS มีความสามารถ ACID และสนับสนุน SQL92 และ SQL99 โดยมีชนิดข้อมูลหลายประเภทรวมถึงมีชนิดข้อมูลแบบ user define ซึ่งผู้ใช้กำหนดขึ้น ทำงานในหลายแพลทฟอร์มได้แก่ Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), และ Windows เป็นซอฟต์แวร์ใช้ได้ฟรีโดยมีลิขสิทธิ์แบบ BSD ซึ่งหมายถึงผู้ใช้สามารถนำไปใช้งานได้ฟรี

วิธีลงโปรแกรมใน Ubuntu14.04
- เปิดหน้าต่าง Terminal
- พิมพ์คำสั่ง $ sudo apt-get install postgresql postgresql-contrib

การเข้าใช้งานโปรแกรม
- พิมพ์คำสั่ง $ sudo -i -u postgres

รูปแสดง การพิมพ์คำสั่งเพื่อเปิดโปรแกรม

การสร้าง Database
- หลังจากเปิดโปรแกรมแล้วให้พิมคำสั่ง 
  $ createdb ชื่อdatabase 
- เลือกใช้ database โดยพิมคำสั่ง
  $ psql -d ชื่อdatabase
รูปแสดง การสร้างและการเช้าใช้ database

- หากต้องการดู database ที่มีอยู่ ให้พิมพ์คำสั่ง 
$ \l 
รูปแสดง database ที่มีอยู่

การสร้างตาราง
-ใช้คำสั่งเหมือน Mysql ทุกอย่าง
ตัวอย่างการสร้างตาราง
create table time_slot(time_slot_id int,
day varchar(100),
start_time varchar(100),
end_time varchar(100),
primary key(time_slot_id)
);

หากต้องการดูtable ที่มีอยู่ ให้พิม \d
หากต้องการดูรายละเอียดของแต่ละ table ที่มีอยู่ ให้พิม \d ชื่อตาราง 

วันจันทร์ที่ 28 มีนาคม พ.ศ. 2559

Assignment 1 : University_enterprise

สมาชิกกลุ่ม
1.นพรัตน์ ไพโรจน์พัฒนกุล 5601012620072
2.ชนานันน์ พงศ์กีรติกานต์ 5601012630043
3.นสิทธิ์ จูรอด 5601012630175

อ้างอิง: เนื้อหาของ A1

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

To Do week4(Relational Algebra)

    More examples of queries in Relational Algebra
     Relational Algebra คือ การแสดงถึงความสัมพันธ์ของข้อมูล ซึ่งเป็นพื้นฐานของการสร้างฟังก์ชันของคำสั่งต่างๆใน SQL
     Relational Algebra มี operations พื้นฐานได้แก่
    1.  Select *      
    2.  Project     
    3.  Rename *   
    4.  Union **
    5.  Set difference **
    6.  Cartesian-product  **
       *  Unary operations คือการมี Operand เพียงตัวเดียว
       ** Binary operations คือการมี Operand 2 ตัว
     นอกจากนี้ยังมีคำสั่งอื่นๆอีกเช่น 
    1. set intersection
    2. natural join
    3. division
    4. assignment
     ในที่นี้จะเริ่มอธิบาย operations พื้นฐาน ก่อนได้แก่




  • Select operation
    การทำงาน : เป็นคำสั่งที่ใช้เลือกข้อมูล ในแถวที่ตรงกับเงื่อนไขที่กำหนด คล้ายกับคำสั่ง where ในภาษา SQL
    แทนด้วยสัญลักษณ์ : 
     

    วิธีการใช้งาน : 
                

    condition สามารถใช้เครื่องหมาย :
    การเปรียบเทียบ  = , > , < ,  ≥  ,     , 
    ตัวอย่างการใช้งาน :
     
    เช่นในตารางความสัมพันธ์ของสมุดโทรศัพท์ มีข้อมูลของผู้ติดต่ออยู่
    ภาพแสดงตารางข้อมูลทั้งหมด ของ ความสัมพันธ์ Contact

    เราจะเลือกเอาข้อมูลเฉพาะผู้ติดต่อที่ อยู่ใน Home ซึ่งสามารถเขียนโดยใช้ Select operation ได้ดังนี้

    ภาพแสดงการใช้งานRelational Algebra

    ภาพแสดงตารางใหม่ ตามเงื่อนไขที่ได้กำหนด
    โดย relational algebra ดังกล่าวมีความหมายเดียวกับ คำสั่ง SQL ดังต่อไปนี้
                      select * from contact
                      where department="Home" ;




  • Project operationการทำงาน : เป็นคำสั่งที่ใช้แสดงข้อมูล ในcolumn(attribute) ที่ตรงกับเงื่อนไขที่กำหนด คล้ายกับคำสั่ง select ในภาษา SQLแทนด้วยสัญลักษณ์ : 
    วิธีการใช้งาน :



    • ตัวอย่างการใช้งาน :
       
      เช่นต้องการแสดงข้อมูลName และ Phone โดยไม่สนใจข้อมูลใน column อื่นๆ
        ภาพแสดงตารางข้อมูลทั้งหมด ของ ความสัมพันธ์ Contact

      เราจะเลือก attribute ที่นำมาแสดงซึ่งสามารถเขียนโดยใช้ Project operation ได้ดังนี้
      ภาพแสดงการใช้งานRelational Algebra

      ภาพแสดงตารางใหม่ ตามเงื่อนไขที่ได้กำหนด

      โดย relational algebra ดังกล่าวมีความหมายเดียวกับ คำสั่ง MySQL ดังต่อไปนี้
                          select name,phone from contact;


  • Rename  operation
    การทำงาน :  ใช้ในการเปลี่ยชื่อตาราง หรือ attribute ในตาราง คล้ายกับคำสั่ง alter ในภาษาSQL
    แทนด้วยสัญลักษณ์ : 
    วิธีการใช้งาน :
     
                
    ตัวอย่างการใช้งาน :
    เช่นต้องการเปลี่ยนชื่อ ตารางจากContact เป็น Mycontact และต้องการเปลี่ยน attribute ในตารางจาก Phone เป็น call

    ภาพแสดงตารางข้อมูลทั้งหมด ของ ความสัมพันธ์ Contact

    จากความต้องการด้านบน สามารถเขียนโดยใช้ Rename operation ได้ดังนี้

    ภาพแสดงการใช้งานRelational Algebra


    ภาพแสดงตารางใหม่ ตามเงื่อนไขที่ได้กำหนด


  • Union operation 
    การทำงาน :  ใช้เมื่อต้องการเชื่อมข้อมูล กับตารางมากกว่า1ตาราง โดยจะเอาข้อมูลทุกตัว ถ้ามีข้อมูลซ้ำกันจะแสดงข้อมูลนั้นเพียง1ตัว
    แทนด้วยสัญลักษณ์ :  U
    วิธีการใช้งาน :  A U B    //โดย A และ B เป็นความสัมพันธ์

    ตัวอย่างการใช้งาน :
    เช่น ต้องการหาชื่อของสมาชิก  ลูกค้าปกติ และลูกค้า VIP ซึ่งเราต้องการแค่ชื่อของสมาชิก จึงใช้ Project operation เข้ามาช่วย ในการใช้ร่วมกับคำสั่ง Union operation 

    ภาพแสดงตาราง member และตาราง VIP

    จากความต้องการด้านบน สามารถเขียนโดยใช้ Project operation และ Union operation  ได้ดังนี้

    ∏name(member) U ∏name(vip)

    ซึ่งตรงกับการทำงานของ SQL ดังรูป


    ภาพแสดงการทำงานของคำสั่งข้างต้น และผลลัพธ์ที่ได้
  • Set difference 
    การทำงาน :  เลือกแสดงค่าที่อยู๋ในความสัมพันธ์หนึ่งแต่ ไม่พบค่านั้นในอีกความสัมพันธ์หนึ่ง
    แทนด้วยสัญลักษณ์ :  - (เครื่องหมาย - )
    วิธีการใช้งาน :  A - B    //โดย A และ B เป็นความสัมพันธ์
                                          //ค่าที่ได้จะอยู่ใน A แต่ไม่อยู๋ใน B 
               
    ภาพแสดงพื้นที่ที่จะเลือกข้อมูล
    ตัวอย่างการใช้งาน :
     
    เช่นต้องต้องการหาชื่อลูกค้าที่เป็น member และไม่ได้เป็น VIP

    ภาพแสดงการทำงานของคำสั่งข้างต้น และผลลัพธ์ที่ได้

    จากความต้องการด้านบน สามารถเขียนโดยใช้ 
    Project operation และ Union operation  ได้ดังนี้
     ∏name(member) - ∏name(vip)

    ภาพแสดงผลลัพธ์ที่ได้
  • Cartesian-product
    การทำงาน :  ใช้สำหรับนำข้อมูลทั้ง 2 ตารางมา cross กันซึ่งค่าที่ได้ออกมาจะเป็นการจับคู่กันทั้ง 2 ตารางซึ่งจะไม่มีประโยชน์อะไร เราจึงต้องใช้การ select และ project เข้ามาช่วย
    แทนด้วยสัญลักษณ์ :  X
    วิธีการใช้งาน :  A x B
    เมื่อนำมาใช้รวมกับ select operation 

    จะทำให้มีลักษณะการทำงานเหมือน join

    ตัวอย่างการใช้งาน :
    ------
What is an inner join? outer join?
Ans Inner join นั้นคือการนำค่าระหว่าง set หรือข้อมูลที่มีการซ้อนทับกันหรือเหมือนกัน ส่วน Outer join นั้นคือการเอาค่าทั้งหมดของระหว่าง set นั้นเอง และยังมี join ประเภทอื่นๆอีกมากมาย


ภาพแสดงการ Join ในรูปแบบต่างๆ

What is a division operation?
Ans การทำ division operation คือการนำเอาค่าของ Attribute ตารางที่เป็น Divisor(S) ไปเทียบกับค่า Attributeในตาราง Dividend(R) เมื่อมีค่าที่เหมือนกันเราจะนำเอาค่านั้นออกมาแสดงเป็นผลลัพธ์ดังตัวอย่างที่เขียนในด้านล่างนี้

ภาพแสดงตัวอย่างการใช้ division

จากรูปจะเห็นว่า การนำข้อมูลของตาราง s ไปเทียบกับ attribute ในตาราง r ซึ่งได้ข้อมูลออกมาเป็น set  โดยข้อมูลที่ได้ คือการที่ attribute A ตัวเดียวกันมีค่าใน attribute B ทั้งสองค่า ไม่ใช่แค่มีค่าใดค่า  1


ข้อมูลอ้างอิงจาก :
http://www.srisangworn.go.th/home/databaselearnx/ms2t2-2.htm

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

To Do week3(Constraints)

What constraints does your selected DBMS support?
  -SQL มีข้อจำกัดในการระบุลงในตาราง เพื่อให้การเลือกและการจัดเก็บข้อมูลใน database เป็นไปอย่างถูกต้อง อธิเช่น

  1.  NOT NULL - คือการกำหนดให้ columns นั้น เป็น null ไม่ได้
  2. UNIQUE - คือการกำหนดให้ข้อมูลใน columns นั้นไม่สามารถซ้ำกันได้
  3. PRIMARY KEY - คือการกำหนดให้ columns นั้น เก็บค่า null  ไม่ได้ และ มีข้อมูลที่ไม่ซ้ำกัน
  4. FOREIGN KEY - คือการกำหนดให้ columns นั้นเก็บข้อมูลเดียวกันกับ column ในtable อื่น เพื่อใช้เป็นตัวเชื่อมโยงกันระหว่าง table 
  5. CHECK - คือการกำหนดให้ columns นั้นเก็บค่าที่เฉพาะเจาะจง
  6. DEFAULT - คือการระบุค่าเริ่มต้นสำหรับ columns นั้นๆ

 โดยการระบุ constraints  นั้นจะทำตั้งแต่การสร้างตาราง(created) หรือการแก้ไขรายละเอียดของตาราง(ALTER)เมื่อตารางนั้นได้ถูกสร้างขึ้นแล้ว
อ้างอิงจาก: http://www.w3schools.com/sql/sql_constraints.asp

How to specify them?
SQL CREATE TABLE + CONSTRAINT 
CREATE TABLE table_name
(
column_name1 data_type(sizeconstraint_name,
column_name2 data_type(sizeconstraint_name,
column_name3 data_type(sizeconstraint_name,
....
);

ทดลองสร้างตาราง และกำหนดCONSTRAINT 

รูปที่1 แสดงการสร้างตาราง และ แสดงรายละเอียดของตาราง 

 จากรูปที่1จะเห็นว่า 
  • id ให้เป็น PRIMARY KEY  และไม่สามารถเก็บค่า null ได้
  • name และ lastname ไม่สามารถเก็บค่า null ได้
  • age กำหนดCONSTRAINT  โดยใช้คำสั่ง CHECK   ให้ข้อมูลที่ใส่ต้องมีค่ามากกว่า20
  • status กำหนดค่า DEFAULT ให้เป็น S

ทอลองใส่ข้อมูล

รูปที่2 แสดงการใส่ข้อมูล

 จากรูปที่2จะเห็นว่า 

  • ถ้าเราไม่กำหนดค่าใน column status database จะเก็บข้อมูลเป็น s ซึ่งเป็นค่า DEFAULT ที่เราได้ตั้งไว้
  • มีข้อผิดพลาดในการใช้ CONSTRAINT  โดยใช้คำสั่ง CHECK  เนื่องจากเรากำหนดให้ age>20 แต่ค่าที่เราใส่เค้าไปเป็น 19 *จะหาทางแก้ไขต่อไป



รูปที่3 แสดงการใส่ข้อมูล

จากรูปที่3จะเห็นว่า

  • ถ้าหากไม่ใส่ข้อมูลช่อง lastname จะไม่สามารถเพิ่มข้อมูลได้เนื่องจาก เรากำหนดCONSTRAINT ไม่ให้เก็บค่า null

รูปที่4 แสดงการใส่ข้อมูล

จากรูปที่4จะเห็นว่า

  • ในกรอบสีแดง เป็นการใส่ค่าที่มี id ซ้ำกับค่าที่อยู๋ table อยู่แล้ว ทำให้ไม่สามารถใส่ค่าไปยังตารางได้ เนื่องจาก id เป็น PRIMARY KEY ซึ่งค่าที่เก็บไว้นั้นไม่สามารถซ้ำกันได้
  • ในกรอบสีเขียว เป็นการใส่ค่า โดยที่ id ไม่ซ้ำกัน แต่ name กับ lastname ซ้ำ แต่ยังสามารถใส่ค่าได้ เพราะ name และ lastname ไม่ได้ถูกกำหนดให้เป็น UNIQUE

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

To Do week2(cont. Try MySQL)

 บทความนี้เป็นการนำเสนอการใช้งาน MySQL เบื่องต้น ต่อจาก บทความ To Do week2(Try MySQL)
ในบทความนี้จำนำเสนอ
1.วิธีการลบข้อมูลใน table
2.วิธีการUpdate ข้อมูล
3.วิธีการแก้ไขลักษณะของตัวแปรใน columns
4.วิธีการกำหนด  PRIMARY KEY

1.วิธีการลบข้อมูลใน table 
  เริ่มแรกให้เข้าไปใน database ที่มีตารางที่เก็บข้อมูลที่เราต้องการลบ 
รูปแสดงข้อมูลที่อยู่ใน table 
  หลังจากนั้นให้ใช้คำสั่ง delete from ชื่อtable(Vip) where ชื่อcolumn(name) =" Book";


รูปแสดงข้อมูลที่อยู่ใน table หลังจากลบข้อมูล "Book" ไปแล้ว

*ปัญหาที่พบคือ เลข id ที่ถูกลบไปจะไม่ถูกแทนที่ 

2.วิธีการUpdate ข้อมูล 
   โดยในที่นี้จะทำการ Update เบอร์โทรศัพท์ของ Teng โดยใช้คำสั่ง 
   update vip
   set phone="084-444-4444"
   where name= "Teng";

รูปแสดงข้อมูลที่อยู่ใน table หลังจากUpdate เบอร์โทรศัพท์ของ Teng

3.วิธีการแก้ไขลักษณะของตัวแปรใน columns
 เริ่มแรกรายละเอียดข้อมูลของ table Vip เป็นดังภาพ
 รูปแสดงรายละเอียดข้อมูลของ table Vip 

ในที่นี้ต้องการเปลี่ยนแปลง column phone โดยดำหนดให้เป็น null ไม่ได้โดยใช้คำสั่ง
ALTER TABLE vip CHANGE phone  phone varchar(100) not null;
รูปแสดงรายละเอียดข้อมูลของ table Vip 

4.วิธีการกำหนด  PRIMARY KEY 
   กำหนด  PRIMARY KEY สำหรับตารางที่เราได้สร้างไปแล้วนั้นมีการกำหนดPRIMARY KEY อยู่ก่อนแล้วคือ id 
รูปแสดงรายละเอียดของ table vip

โดยในที่นี้ต้องการกำหนดให้ phone เป็น PRIMARY KEY ต้องทำการลบ PRIMARY KEY ตัวเก่าออกก่อน
   โดยใช้คำสั่ง
ALTER TABLE vip
DROP PRIMARY KEY;
    

รูปแสดงรายละเอียดของการลบPRIMARY KEY 
แต่เนื่องจาก colomn  Id สามารถเป็น PRIMARY KEY ได้จากการนิยามค่าให้ตั้งแต่ตอนสร้างตารางทำให้ค่าไม่ซ้ำกัน จึงไม่สามารถลบออกจากการเป็นPRIMARY KEY  ได้

 จากคำสั่งที่ใช้สร้างตาราง Vip 
create table VIP (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR(50),
phone VARCHAR(50));

 จะเห็นว่ามีการกำหนด PRIMARY KEY ไว้ตั้งแต่ต้นแล้ว หากการสร้างตารางไม่ได้กำหนด PRIMARY KEY เอาไว้และต้องการ กำหนดPRIMARY KEY ภายหลังให้ใช้คำสั่ง 
ALTER TABLE ชื่อtableADD PRIMARY KEY (ชื่อcolumn);