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

Example of queries in relational algebra


            (relational algebra)  เป็นภาษาที่ใช้ในการเขียนขั้นตอนต่างๆของ Query ซึ่งจะพิจารณาว่าจะทำอย่างไร เพื่อให้ได้มาซึ่งผลลัพธ์ตามที่ต้องการในการจัดการข้อมูล โดยการระบุตัวกระทำกับความสัมพันธ์ที่ต้องการจัดการ ผลลัพธ์ที่ได้คือ ความสัมพันธ์ใหม่ และนอกจากนี้ยังเป็นภาษาที่ใช้เป็นพื้นฐานในการเขียน SQL อีกด้วย

คำสั่งพื้นฐานต่างๆ
โอเปอเรชั่นแบบยูนารี (Unary Operations)
Select( σ) หรือ Restrict  เลือกแถวจากความสัมพันธ์
Project(Π)  เลือกเฉพาะคอลัมน์ที่ต้องการจากความสัมพันธ์
 โอเปอเรชั่นแบบเซต (Set Operations)
 Product(×) สามารถรวมความสัมพันธ์ได้
 Union ( ∪) เชื่อม 2 ความสัมพันธ์เข้าด้วยกัน
  Intersection (∩)
 Difference(-) หาความแตกต่างระหว่าง 2 ความสัมพันธ์
 โอเปอเรชั่นการ Join (Join Operations)
 Join ()
 โอเปอเรชั่นการหาร (Division Operations)
  Division (÷)
Select(σ) 
          เป็นการดึงข้อมูลจาก Relation โดยจะเลือกเฉพาะแถวที่ต้องการตามเงื่อนไขที่ระบุเอาไว้ และมีลักษณะการทำงานเหมือนกับคำสั่ง where ของภาษา SQL
syntax 
σ condition (R)


 σ                           อ่านว่า ซิกม่า (sigma) เป็นสัญลักษณ์แทนการ Select
 condition              คือ ประโยคที่ใช้เป็นเงื่อนไข
 R                           คือ ชื่อ Relation (ชื่อตาราง)

Project(Π)
            เป็นการเลือกเฉพาะ column ที่ต้องการ โดยจะมีเซตของแต่ละแถวเป็นผลลัพธ์ที่ได้

syntax

Π col1,col2,col3,...,coln (R)

P (pi)                            คือ สัญลักษณ์ของการ Projection
col1,col2,…,coln         คือ คอลัมน์ที่ต้องการแสดง
R                                  คือ ชื่อ Relation (ชื่อตาราง)

Product(×)
           product หรือ Cartesian Product เป็นการแสดงความสัมพันธ์ด้วยการคูณ Cartesian ระหว่าง 2 รีเลชั่น  เช่น ต้องการนำรีเลชั่น R และ S มาคูณกันแบบ Cartesian ผลลัพธ์ที่ได้ในรีเลชั่นใหม่จะประกอบด้วยจำนวนแถวของ R×S ในรูปแบบของผลคูณ Cartesian
syntax
× S

    ×               อ่านว่าไทมส์ (times) เป็นสัญลักษณ์ของการ Product
    R และ S    คือ Relation ที่ต้องการนำมาคูณกัน

Union (∪)
           เป็นนำข้อมูลจาก 2 Relation มารวมกัน และถ้ารายการไหนซ้ำหลายแถวก็จะแสดงเพียงแถวเดียว  โดยการ Union นี้มีข้อกำหนดว่า แอตทริบิวต์ในลำดับที่ตรงกันจาก 2 Relation ต้องมีชนิดของข้อมูลตรงกันด้วยไม่อย่างนั้นจะ Union กันไม่ได้

syntax

R ∪ S
    ∪               คือสัญลักษณ์ของการยูเนียน
    R และ S    คือ Relation ที่ต้องการนำมายูเนียนกัน

Intersection (∩)
         เป็นการนำข้อมูลจาก 2 Relation มารวมกันคล้ายกับ Union แต่จะต่างกันที่ผลลัพธ์ซึ่ง Intersection จะเลือกผลลัพธ์เฉพาะรายการที่เหมือนกันจาก 2 Relation

syntax

 S
                   คือสัญลักษณ์ของการยูเนียน
    R และ S    คือ Relation ที่ต้องการนำมายูเนียนกัน

Difference(-) 
             เป็นการแสดงข้อมูลเฉพาะแถวของรีเลชั่นแรกที่ต่างจากแถวข้อมูลในรีเลชั่นที่สอง
syntax

R - S
-   คือสัญลักษณ์แทนการ Difference
R และ S คือชื่อรีเลชั่นที่ต้องการนำมา Difference กัน
Join ()



syntax

 S
   คือสัญลักษณ์แทนการ Join
R และ S คือชื่อรีเลชั่นที่ต้องการนำมา Join กัน

Division (÷)
             เป็นการหาผลลัพธ์จาก 2 Relation โดยตัวตั้งมี Attribute มากกว่าตัวหารและทั้งสองมี Attribute อย่างน้อยหนึ่งตัวที่เหมือนกัน โดยผลลัพธ์ที่ได้จะมาจาก Attribute ตัวใดตัวหนึ่งของตัวตั้ง

syntax

R÷ S
÷    คือสัญลักษณ์แทนการ Division
R และ S คือชื่อรีเลชั่นที่ต้องการนำมา Division กัน





What is an inner join? outer join?
Ans  inner join คือ การ joint ชนิดหนึ่งที่มีการนำเอาตารางสาองตารางมารวมกัน แล้วเลือกผลลัพธ์โดยเอามาเฉพาะข้อมูลที่ตรงกันทั้งสองตาราง ส่วน outer join  คือ การ join อีชนิดหนึ่งที่จะนำเอาตารางสองตารางมารวมกันเช่นเดียวกับ inner join แต่จะให้ผลลัพธ์โดยเอาทั้งข้อมูลที่ตรงกันและไม่ตรงกัน โดยค่าที่ไม่ตรงกันเราแสดงข้อมูลที่ไม่ตรงกันเป็น null

What is a division operation?
          SSN_PNOS ÷ SMITH_PNOS
why it is not in the complete set of relational algebra operations
Ans  

related info/link/reference : 
                 - http://mathcom.uru.ac.th/~nerissa/DB/DB_05.ppt
              - https://www.gotoknow.org/posts/97459

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

SQL constraints for select in my DBMS


         SQL Constraints คือข้อกำหนดหรือข้อบังคับที่ใช้ในการเก็บข้อมูลในตารางให้เป็นระเบียบ และหากมีการดำเนินการที่ไม่เป็นไปตามข้อบังคับนั้นจะถูกยกเลิกโดยข้อบังคับนั้น  การระบุ constraints ต่างๆ สามารถทำได้โดย
        1 ระบุเมื่อมีการสร้างตารางข้อมูล(ภายในคำสั่ง CREATE)
        2  ระบุหลังจากที่ทำการสร้างตารางข้อมูลแล้ว

Constraints ต่างๆ


  • NOT NULL -  column นั้นๆจะไม่เก็บค่าข้อมูลที่เป็น NULL
  • UNIQUE - แต่ละแถวของคอลัมน์ข้อมูลจะมีค่าที่ไม่ซ้ำกัน
  • PRIMARY KEY - การรวมกันของ NOT NULL และ UNIQUE เพื่อให้แน่ใจว่าคอลัมน์มีเอกลักษณ์ไม่ซ้ำกันทำให้การค้นหา บันทึกข้อมูลในตารางได้ง่ายและรวดเร็วขึ้น
  • FOREIGN KEY - จะใช้งานร่วมกับ PRIMARY KEY เพื่อสร้างความสัมพันธ์ระหว่าง table
  • CHECK - ใช้ตรวจสอบเงื่อนไขของคอลัมน์ ก่อนเก็บข้อมูลที่เฉพาะเจาะจง
  • DEFAULT - ค่าเริ่มต้นสำหรับ column ในกรณีที่ column นั้นๆ ไม่มีการเพิ่มค่าข้อมูลลงไป ก็จะเพิ่มค่าที่กำหนดใน default นี้โดยอัตโนมัติ

  • NOT NULL 
              : Constraints นี้จะบังคับให้ column นั้นๆไม่ยอบรับข้อมูลที่มีค่าเป็น null ซึ่งก็คือจะบังคับให้ใส่ค่า ถ้าไม่ใส่ค่าหรือใส่ค่าเป็น null ไปเราจะไม่สามารถ  insert หรือ update ข้อมูลได้ได้

    รูปภาพแสดงการสร้างตารางและการกำหนดข้อบังคับในการเก็บข้อมูลในตารางของแต่ละ column ให้เป็น NOT NULL ที่ column Id และ LastName
    รูปภาพแสดงการเกิด error เมื่อมีการใส่ค่าของ Id ให้เป็น null 
    ซึ่งไม่เป็นไปตามข้อบังคับในการเก็บข้อมูลที่ได้ตั้งค่าให้เป็น Not Null Constraint เอาไว้

    รูปภาพแสดงการผลหลังจากตั้งค่า Constraints ขณะสร้างตาราง
     สังเกตจะพบว่า column ชื่อ Id และ LastName ไม่รับค่าที่เป็น null (กรอบสีฟ้า)เหมือน column อื่นๆ


    UNIQUE 
            :Constraint นี้จะบังคับให้ข้อมูลแต่ละ record มีค่าไม่ซำ้กัน โดย unique กับ primary key เป็นตัวที่บอกว่า column และเซตของ column มีข้อมูลที่ไม่ซ้ำกัน primary key จะมีคุณสมบัติเป็น unique โดยอัติโนมัติ ในหนึ่งตารางสามารถมีได้หลาย unique แต่ primary key มีเพียงตัวเดียว
    รูปภาพแสดงการสร้างตารางและการกำหนดข้อบังคับในการเก็บข้อมูลในตาราง
    ของแต่ละ column ให้เป็น NOT NULL ที่ column P_Id และ LastName และกำหนดให้ P_Id เป็น UNIQUE
    รูปภาพแสดงการ insert ค่าให้แก่ตารางสองครั้ง โดยครั้งที่สองไม่เปลี่ยนค่า P_Id 
    ทำให้เกิด error ว่า "#1062 - Duplicate entry '109' for key 'P_Id'"เนื่องจากมีข้อมูลซ้ำซึ่งไม่เป็นไปตามข้อบังคับที่เราได้ตั้งค่าให้ P_Id เป็น UNIQUE จะมีข้อมูลซ้ำกันไม่ได้

    PRIMARY  KEY 
                 :Constraint นี้บังคับว่า column ที่เราได้เลือกให้เป็น Primary key นั้น จะต้องมีค่าของแต่ละ record ที่ไม่ซ้ำกันสามารถนำไปใช้เป็นตัวแทนของข้อมูลทั้งหมดได้ และนอกจากนี้ Primary key จะต้องไม่มีค่าเป็น null และในหนึ่งตารางสามารถมี Primary key ได้เพียงตัวเดียว

    รูปภาพแสดงการกำหนดให้ P_Id เป็น PRIMARY KEY (หมายเลข 1) จากนั้นไปดูที่ structure ของตารางจะพบว่า column P_Id นั้นมีการกำหนดให้เป็น UNIQUE และ PRIMARY KEY(หมายเลข 2)

    FOREIGN  KEY
                 :Constraint นี้จะตัวที่เชื่อมจากตารางหนึ่งไปยัง Primary key ของอีกตารางหนึ่ง

    related info/link/reference : 
                     http://www.w3schools.com/sql/default.asp