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

Mysql CASCADE

 ความหมายของ CASCADE นั้นคือ เป็นกฎของ Constraints ในการทำตอน DELETE หรือ UPDATE คือเมื่อมีการ Modify ใด ๆ ในตาราง หลัก ตารางอ้างอิงจะเปลี่ยนตาม FK ที่อ้างอิงกับตารางหลักอยู่ คือเปลี่ยนค่า PK ของตารางหลัก ฟิวส์ที่เป็น FK กับตารางหลักอยู่  จะเปลี่ยนไปตามที่ตารางหลักเปลี่ยนไปคือ

- แก้ไขที่ตารางหลัก ตารางอ้างอิงจะเปลี่ยนไปตามที่ตารางหลักเปลี่ยนแปลง ไป

- ลบที่ตารางหลัก ตารางอ้างอิงจะถูกลบไปด้วย ตามรหัสที่อ้างอิงอยู่

        --------------------------------------------------------------------------------------

                 ในการออกแบบฐานข้อมูลถือว่ามีความสำคัญมาก  เพราะจากประสบการณ์ของอันน้อยนิดของผมนั้นคิดว่าในอนาคตต้องมีการแก้ไข  หรือปรับเปลี่ยนเป็นเรื่องธรมมดา   แต่ถ้าหาก  Database นั้นถูกออกแบบให้อยู่ในมาตรฐาน การปรับเปลี่ยนก็เป็นเรื่องง่่าย ๆ  แต่ถ้าระหว่างตาราง relationship ไม่มีความสัมพันธ์กันดีพออาจจะเกิดปัญหาตามก็เป็นได้  จากเรื่องง่ายก็กลายเป็นงานเข้าก็เป็นได้ ดังนั้นผมจึงมี Trip เล็กๆ น้อยๆมาฝากกัน

  ขอยกตัวอย่างแค่ 2 ตารางนะครับ
  - CustomerID  = PK  (ตาราง Customer)
-   CustomerID   = FK  (ตาราง Audit )

-------------------------------------------------------------------------------
CREATE TABLE `customer` (
  `CustomerID` varchar(4) NOT NULL,
  `Name` varchar(50) NOT NULL,
  `Email` varchar(50) NOT NULL,
  `CountryCode` varchar(2) NOT NULL,
  `Budget` double NOT NULL,
  `Used` double NOT NULL,
  PRIMARY KEY (`CustomerID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

----------------------------------------------------------------------------------------
                  ตอนสร้างตาราง Audit  ให้ไปเพิ่มคำสั่งตามภาพนะครับ

จากภาพจะสังเกตุว่าเราเขียนคำสั่งฝั่งตาราง Audit ที่เป็น   FK นะครับเพื่อให้ตัวข้อมูลในตารางตัวมัเองเกิดการเปลี่ยนตามตาราท่ี่เป็น PK
            ก็เห็นน้อๆงหลายคนถามเข้ามานะครับ ว่าลองเขียนแล้วข้อมูลตารางรอง ไม่ยอมเปลี่ยนตามตารางหลักเลย   ...อืม..ลีมไปมีอีกหนึ่งวิธีนะครับง่ายเหมือนกัน   ใช้โปรแกรม Navicat for MySQL
  ลองทดสอบทำตามภาพนะครับ    
   1. ก่อนอื่นสร้างตารางขึ้นมาก่อน 2   ตารางคุณสมบัติตามภาพด้านบน
   2. คลิีกขวาที่ตาราง Audit  เลือก Design Table


3. กำหนด  Index



4.  กำหนด Foreign Keys



จากนั้นมาทดสอบกันครับ






------------------------------------------------------------------------------------------------------------


  ***** ไม่มีปุ่ม Save กด  Ctrl+s นะครับ





ลองๆ ทำดูนะครับผิดพลาดก็ขออภัยครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น