1  
   
line decor
  
line decor
 
 
 
 
 

บทที่ 9
ปัญหาและการควบคุมการใช้ระบบฐานข้อมูล
9.1 ปัญหาของการใช้ระบบฐานข้อมูล

ถึงแม้ว่าการมีระบบฐานข้อมูลจะมีประโยชน์มากมายดังกล่าวมาแล้วในบทแรก ๆ แต่ก็มีข้อด้อยหรือปัญหาอยู่บ้างในทางปฏิบัติ ดังประเด็นต่อไปนี้

  • มีต้นทุนสูง เนื่องจากมักมีความจำเป็นต้องจัดหาซอฟต์แวร์และฮาร์ดแวร์เพิ่มเติม รวมทั้งการลงทุนในเรื่องของประสิทธิภาพของระบบ (Performance) ซึ่งจะช่วยในการทำงานในระบบฐานข้อมูลแบบรวมศูนย์นี้ไม่ช้าเกินไปเมื่อใช้งานรวมกันจำนวนมาก ปัญหานี้จะแก้ไขถ้าองค์กรพยายามใช้ระบบให้นานและคุ้มค่า โดยการอบรมให้พนักงานใช้ให้มากและใช้ให้เป็น และถ้าเป็นไปได้ควรหาทางลดค่าใช้จ่ายด้านอื่น เช่น ปรับย้ายให้ออก สำหรับงานที่ใช้ระบบมาแบ่งเบาเวลาลงแล้วสามารถใช้คนน้อยลงได้ เป็นต้น
  • ระบบฐานข้อมูลจะมีความซับซ้อน ส่งผลให้ระบบงานของหน่วยงานและองค์กรมีความซับซ้อนมากยิ่งขึ้น แม้ว่าในการใช้งานผู้ใช้ทั่วไปจะไม่ทราบ ปัญหานี้จะแก้ได้ต้องมีผู้รับผิดชอบที่มีความรู้ความสามารถและมีความรับผิดชอบสูง เช่น ผู้บริหารข้อมูล ผู้บริการฐานข้อมูล และหัวหน้าหน่วยงานฐานข้อมูล ซึ่งจะต้องร่วมกันจัดทำอกสารที่เกี่ยวข้องกับระบบที่ซับซ้อนดังกล่าว เก็บไว้เป็นเอกสารอ้างอิง สำหรับให้มีการศึกษาค้นคว้าและพัฒนางาน
  • มีความเสี่ยงต่อการหยุดชะงักของระบบ เพราะการเป็นระบบฐานข้อมูลแบบรวมศูนย์ ข้อมูลทุกอย่างของทุกหน่วยงานมารวมกันอยู่ที่เดียวกัน หากระบบ ณ ที่นั้นขัดแย้งย่อมให้งานทั้งหมดขององค์กรหยดชะงักไปด้วย ทางแก้คือ ต้องมีระบบสำรอง มีการเตรียมการป้องกันความขัดข้อง และมีการทำสำรองข้อมูลอย่างเป็นกิจวัตร
  • ผู้ที่อยู่ในหน่วยงานเจ้าของข้อมูลเดิมอาจขาดความรู้สึกเป็นเจ้าของ หรือเสียสิทธิส่วนบุคคลเนื่องจากในระบบฐานข้อมูลแบบรวมศูนย์ ข้อมูลจะถูกเก็บไว้รวมกัน ณ ที่เดียวกันซึ่งเป็นส่วนรวม แนวทางการแก้ไขคือ ซ่อนบังไม่ให้เจ้าของข้อมูลรู้ว่าข้อมูลของหน่วยงานตนถูกนำไปเก็บไว้ที่อื่นแล้วโดยให้ผู้ใช้สามารถใช้ข้อมูลและปรับปรุงข้อมูลได้ตามปกติ หรือหากมีงบประมาณมากพออาจเปลี่ยนไปใช้ระบบฐานข้อมูลแบบกระจาย (Distributed Database System) ซึ่งจะมีละเอียดในบทต่อไป
  • ปัญหาในการบริหารจัดการและการกระจายความรับผิดชอบ ปัญหานี้คล้ายคลึงและเกี่ยวข้องกับปัญหาในข้อที่แล้ว หากข้อมูลมารวมกันอยู่มนที่เดียว เจ้าของข้อมูลจะมั่นใจได้อย่างไรว่าหน่วยงานกลางที่ดูแลฐานข้อมูลอยู่นั้นมีความเข้มงวดในการรักษาความปลอดภัยมากพอ รวมทั้งความถูกต้องของข้อมูลจะไม่เสียไปเพราะความสะเพร่าของพนักงานในหน่วยงานผู้ดูแลระบบซานข้อมูลกลาง
    • ความถูกต้องของข้อมูล
      • ความหมาย

ความถูกต้อง หรือ Integrity (ตำราบางเล่มเรียกว่า ความคงสภาพ หรือความบูรณภาพหมายถึง ความแม่นยำ หรือความไม่ผิดเพี้ยนของข้อมูลในฐานข้อมูล Integrity refers to the accuracy or correctness of data in database integrity.) โดยมีความถูกต้องอยู่ 2 ประการคือ
1. ความถูกต้องเฉพาะข้อมูล (Database Specific Integrity) หมายถึง ข้อกำหนดหรือกฎ (Constraints or Rules) ของฐานข้อมูลนั้น เช่น อายุของนักศึกษาที่เข้าเรียนมนฐานข้อมูลของสถาบันแห่งหนึ่งจะต้องไม่เกิน 40 ปี หรือ จำนวนชั่วโมงทำงานของพนักงานในบริษัทแห่งหนึ่งจะต้องไม่เกิน 40 ชั่วโมงต่อสัปดาห์ เป็นต้น
2. ความถูกต้องทั่วไปของฐานข้อมูล (General Integrity) หมายถึง ข้อกำหนด หรือกฎ ที่ใช้บังคับกับฐานข้อมูลทุกฐานข้อมูลเสมอกันหมด ซึ่งมักจะเกี่ยวข้องกับคีย์หลักและคีย์นอก
9.2.2 ประเภทของความถูกต้องของข้อมูล (4 Categories of State Constraints)
เราแบ่งข้อกำหนดเรื่องความถูกต้องของข้อมูลโดยทั่วไป (ข้อกำหนดสภาวะคงที่) ออกเป็น 4 ประเภท คือ

  • ข้อกำหนดเรื่องชนิดของข้อมูล (Type Constraint)
  • ข้อกำหนดแอตทริบิวต์ (Attibute Constraint)
  • ข้อกำหนดเรื่องโครงสร้างตาราง (Relvar Constraint)
  • ข้อกำหนดเรื่องฐานข้อมูล (Database Constraint)

ซึ่งมีรายละเอียด ดังนี้
1. ข้อกำหนดเรื่องของชนิดของข้อมูล (Type Constraint) เป็นข้อกำหนดเกี่ยวกับค่าทั้งหมดที่เป็นไปได้ของข้อมูลประเภทหรือชนิดนั้น เช่น การกำหนดค่าที่เป็นไปได้ของข้อมูลชนิด WEIGHT ดังนี้
TYPE WEIGHT POSSREP (RATIONAL)
CONSTRAINT THE_WEIGHT (WEIGHT) > 0.0;
หมายถึง ทำให้การสร้างชนิดข้อมูลขึ้นมาใหม่ คือ WEIGHT แล้วกำหนดให้เป็นเลขทศนิยม โดยมีการแทนด้วยตัวเลขที่เป็นไปได้ต่าง ๆ ตามแบบทศนิยม และกำหนดให้ข้อมูลในแอตทริบิวต์ THE_WEIGHT มีค่า WEIGHT โดยต้องมีค่ามากกว่า 0.0
2. ข้อกำหนดแอตทริบิวต์ (Attibute Constraint) เป็นข้อกำหนดเกี่ยวกับค่าทั้งหมดที่เป็นไปได้ของแอตทริบิวต์นั้น โดยในการกำหนดไม่จำเป็นต้องมีการประกาศชื่อ ข้อกำหนดแอตทริบิวต์เพียงแต่ระบุชื่อแอตทริบิวต์นั้น ๆ ในตอนที่สร้าง เช่น การกำหนดตาราง เช่น การกำหนดตาราง S ดังนี้
VAR S BASE RELATION
{SNO SNO,
ANAME NAME
STATUS INTEGER
CITY CHAR}…..
3 ข้อกำหนดเรื่องโครงสร้างตาราง (Relvar Constraint) เป็นข้อกำหนดเกี่ยวกับค่าทั้งหมดที่เป็นไปได้ของโครงสร้างตาราง เช่น
CONSTRAINT SCS
IS_EMPTY (S WHERE CITY = ‘London’ AND STATUS # 20);
ถ้าข้อมูลในตาราง S คือ London แล้ว STATUS จะต้องเป็น 20 เสมอ
CONSTRAINT PC7
IF NOT (IS_EMPTY (P) ) THEN
COUNT (P WHERE COLOR = COLOR(‘Red’) ) >0
END IF;
ถ้ามีสินค้าอยู่ อย่างน้อย 1 ชิ้นต้องมีสีแดง
4. ข้อกำหนดเรื่องฐานข้อมูล (Database Constraint) เป็นข้อกำหนดเกี่ยวกับค่าทั้งหมดที่เป็นไปได้ของฐานข้อมูล กล่าวคือ เป็นข้อกำหนดที่เกี่ยวข้องกับตารางที่ต่างกันตั้งแต่ 2 ตารางขึ้นไปในฐานข้อมูลเดียวกัน เช่น
CONSTRAINT DBC1
IS_EMPTY ((S JOIN SP) )
WHERE STATUS < 20 AND QTY > QTY (500));
ถ้าผู้จัดส่งรายใดมีค่า STATUS น้อยกว่า 20 ห้ามส่งของมากเกิน 500
CONSTRAINT DBC2
SP {SNO} < S {SNO};
หมายเลขผู้จัดส่งที่ปรากฏในตาราง SP ทุกรายต้องมีปรากฏในตาราง S ด้วย
CONSTRAINT DBC3
SP {PNO} = P {PNO};
สินค้าแต่ละชนิดต้องมีรายการส่งไปขายอย่างน้อย 1 ครั้ง

      • กฎทองคำเกี่ยวกับความถูกต้องของข้อมูล (Golden Rule)

มีกฎอยู่ว่า “การปรับปรุงที่มีอยู่แล้วนั้น ต้องไม่ทำให้ตารางนั้นผิดไปจากเงื่อนไขเดิมที่เป็นอยู่ตอนเริ่มสร้างตารางนั้นขึ้นมา” (No update operation must ever be allowed to leave any relvar in a state that violates its own predicate.) เช่น สินค้าสีแดงชิ้นสดท้ายที่มีอยู่จะถูกแก้ไขโดยการลบออก หรือเปลี่ยนเป็นสีอื่นไม่ได้ เพระกฎเดิมต้องมีสินค้าอย่างน้อย 1 ชิ้นตรงเป็นสีแดง เป็นต้น

      • ข้อกำหนดสภาวะคงที่และข้อกำหนดสภาวะที่ไม่คงที่ ( State VS Transition Constraints)

ข้อกำหนดสภาวะคงที่ (State Constraints) คือ ข้อกำหนดที่กล่าวมาแล้วในข้อ 9.2.2 ส่วนข้อกำหนดสภาวะที่ไม่คงที่ (Transition Constraints) คือ ข้อกำหนดที่เกี่ยวกับการเปลี่ยนแปลงสภาวะที่ถูกต้องอย่างหนึ่งไปสู่สภาวะที่ไม่ถูกต้องอย่างหนึ่ง (constraints on legal transitions from one correct state to another)
ลักษณะการเปลี่ยนสภาวะที่ถูกต้อง เช่น

  • ไม่เคยแต่งงาน เปลี่ยนเป็น แต่งงานแล้ว
  • แต่งงานแล้ว เปลี่ยนเป็น เป็นหม้าย
  • แต่งงานแล้ว เปลี่ยนเป็น หย่าร้าง
  • เป็นหม้าย เปลี่ยนเป็น แต่งงานแล้ว

ลักษณะการเปลี่ยนสภาวะที่ไม่ถูกต้อง เช่น

  • ไม่เคยแต่งงาน เปลี่ยนเป็น เป็นหม้าย
  • ไม่เคยแต่งงาน เปลี่ยนเป็น หย่าร้าง
  • หย่าร้าง เปลี่ยนเป็น หม้าย

ตัวอย่างข้อกำหนดเกี่ยวกับ STATUS เช่น ถ้ามีกฎว่า “ค่าสถานะของผู้จัดส่งต้องไม่ลดลง” เราสามารถเขียนคำสั่งข้อกำหนดได้ ดังนี้
CONSTRAINT TRC1 IS_EMPTY
(((S’ {SNO, STATUS } RENAME STATUS AS STATUS’)
JOIN S{SNO,STATUS})
WHERE STATUS’ > STATUS);
กล่าวคือ ข้อมูลในตาราง S’ ต้องไม่มีค่า STATUS มากกว่าข้อมูลในตาราง S ข้อสังเกตคือ S’ หมายถึง ตารางดั้งเดิมของ S ก่อนที่จะมีการปรับปรุงข้อมูล(S’, a primef relvar name, is understood to refer to the corresponding reval as it was prior to the update under consideration.)
9.2.5 ข้อกำหนดเกี่ยวกับคีย์ (Keys)
1. คีย์คู่แข่ง (Candidate Keys) มีคำจำกัดความดังนี้ ให้ K เป็นเซตของแอตทริบิวต์ของตาราง R แล้ว K จะเป็นคีย์คู่แข่งของตาราง R มีคุณสมบัติดังตารางต่อไปนี้
- ค่าไม่ซ้ำ (Uniqueness) ค่าในตาราง R ต้องไม่มีค่าใดในแอตทริบิวต์ K ที่มีค่าซ้ำกัน
- ต้องไม่สามารถลดรูปได้อีก (Irreducibility) กล่าวคือ ต้องไม่มีสับเซตของ K ที่มีลักษณะเป็น Uniqueness อีก เช่น ถ้ามีตาราง R(r1, r2, r3,….) โดยที่มีคีย์หลัก คือ r1 + r2 + r3 ซึ่งค่าของทั้ง 3 รวมกันต้องไม่มีค่าซ้ำ ขณะเดียวกันต้องไม่มีการนำเอาค่าของ r1 + r2 (ซึ่งเป็นสับเซตของ r1 + r2 + r3 ) มารวมกันแล้วได้ค่าที่มีซ้ำได้อีก โดยมีเงื่อนไขว่า K ใด ๆ ต้องไม่มีค่าว่าง(NULL)

สรุป

    • การเลือกคีย์หลัก ต้องเลือกจากคีย์คู่แข่ง
    • คีย์คู้แข่ง ต้องไม่มีค่าว่าง (NULL)
    • คีย์นอก (Foreign Key) มีคำจำกัดความว่า คีย์นอกเป็นสับเซตของโครงสร้างตาราง R2 ซึ่ง ค่าตารางดังกล่าวต้องเข้าคู่ คือ ตรงกันกับค่าของคีย์คู่แข่งตัวหนึ่งในตาราง R1

    ให้ R2 เป็นโครงสร้างตาราง คีย์นอกในตาราว R2 จะเป็นเซตของแอตทริบิวต์ของ R2 ซึ่งก็คือคีย์นอก ซึ่ง.....
    *มีโครงสร้างตาราง R1 ซึ่งมีคีย์คู่แข่งในตาราง นั้น
    *ค่าของคีย์นอกในตาราง R2 ตรงกับค่าของคีย์คู่แข่งในตาราง R1 ตลอดเวลา
    - การกระทำที่เกี่ยวข้องกันกับการอ้าวอิงผ่านคีย์นอก (Referential Actions) เช่น การลบทูเพิลในตารางหนึ่งซึ่งเป็นคีย์นอกในตารางหนึ่ง อย่าง.....DELETE S WHERE SNO = SNO(S1’);]
    ซึ่งมีการอ้างถึง SNO อยู่ในตาราง SP(SNO,PNO,QTY) ก็จะเกิดปัญหาตามมา ดังนั้น ระบบจัดการฐานข้อมูลจึงมีวิธีแก้ไขซึ่งเรียกว่าเป็น การกระทำเพื่อชดเชย (Compensating Action) ซึ่งเป็นการประกันว่าจะเกิดผลตามข้อกำหนดเกี่ยวกับความถูกต้องของข้อมูล กล่าวคือ ถ้ามีการลบทูเพิลในตาราง S ซึ่งมี SNO เป็น ’S1’ แล้วจะต้องให้ระบบทำการลบทูเพิลที่มีค่าในคีย์นอกที่ตรงกันในตาราง SP ด้วยโดยอัตโนมัติ โดยสามารถระบุข้อกำหนดดังกล่าวไว้ตอนที่เริ่มต้นสร้างคีย์นอก เช่น
    VAR SP BASWE RELATION {…….}……
    FOREIGN KEY {SNO} REFERENCES S
    ON DELETE CASCADE;
    การปรับปรุงข้อมูลที่มีการอ้างอิงของคีย์นอก โดยปรกติระบบฯ จะมีวิธีการชดเชยให้ 3 วิธีได้แก่

    • CASCADE คือ การปรับปรุงข้อมูลที่ค่าคีย์นอกตรงกันในตารางอื่นต่อเนื่องไปเป็นทอด ๆ โดยอัตโนมัติ

    2. RESTRICT คือ ไม่ยอมให้มีการปรับปรุงข้อมูลที่ค่าคีย์นอกตรงกับในตารางอื่น แต่จะยอมให้ปรับปรุงข้อมูลเฉพาะที่ไม่มีค่าคีย์นอกในตารางอื่นเท่านั้น
    3. NO ACTIONT คือ ยินยอมให้มีการปรับปรุรงข้อมูลตามคำขอโดยระบบฯไม่ทำอะไรเพิ่มเติมใด ๆ เลย
    9.3 การฟื้นสภาพ

    • การฟื้นสภาพ (Recovery) หมายถึง การซ่อมแซมฐานข้อมูลให้กลับไปสู่สภาวะที่ถูกต้องหรือไม่มีความขัดแย้งกันหลังจากเกิดความขัดข้อง ซึ่งทำให้เกิดความขัดแย้งของข้อมูลหรือสงสัยว่าจะเป็นเช่นนั้น (C.J Data, 2000, p. 454) (“Recovery in a database system means, primarily, recovering the database itself: that is, restoring the database to a stase that is know to be correc (or,rather, consistent) after some failure has rendered the current state inconsistent, or at least suspect.”)

    “ซึ่งคำว่าการขัดแย้ง” ในที่นี้หมายถึง “เป็นไปตามข้อกำหนดเรื่องความคงสภาพ” และโปรดสังเกตคำว่าความไม่ขัดแย้งที่ไม่จำเป็นต้อบงหมายถึง “ถูกต้อง” แม้ว่าสภาวะที่ไม่จำเป็นจะต้องไม่มีความขัดแย้งของข้อมูล แต่สภาวะที่ไม่มีความขัดแย้งอาจยังไม่ถูกต้องก็ได้
    ส่วนประกอบของระบบที่ช่วยบังคับให้เกิด ความเป็นหนึ่งเดียว (Atomicity) ของธุรกรรมนี้ก็คือ ตัวจัดการธุรกรรม (Transaction Management) หรือ ตัวเฝ้าติดตามการประมวลผลธุรกรรม (Transaction Processing Monitor) โดยปฏิบัติการ 2 คำสั่งที่เป็นหัวใจสำคัญของการทำงานนี้ ได้แก่ COMMIT และ ROLLBACK
    ปฏิบัติการ COMMIT จะส่งสัญญาณว่าธุรกรรมนั้นจบลงด้วนความสำเร็จโดยเป็นการแจ้งแก่ตัวจัดการธุรกรรมว่า หน่วยตรรกะแห่งการทำงานชุดนั้นสำเร็จสมบูรณ์แล้ว และฐานข้อมูลกลับมาอยู่มนภาวะที่ไม่มีความขัดแย้งอีกครั้งหนึ่งแล้ว รวมทั้งการปรับปรุงงข้อมูลที่เพิ่งทำไปสมควรจะถือว่าเป็นการกระทำที่ถาวรได้
    ส่วนปฏิบัติการ ROLLBACK จะตรงกันข้าม กล่าวคือ จะเป็นการส่งสัญญาณว่าธุรกรรมนั้นจบลงด้วยความไม่สำเร็จ เป็นการบอกตัวจัดการธุรกรรมว่ามีบางสิ่งปรกติเกิดขึ้น ฐานข้อมูลอาจจะอยู่ในสภาวะที่มีการขัดแย้งกัน แลละการปรับปรุงข้อมูลที่เพิ่งทำไปจะต้องถูกย้อนหลับหรือยกเลิกการกระทำ
    เสีย
    ความขัดข้องที่เกิดขึ้นในระบบที่ควรมีการเตรียมการมีทั้ง ความขัดข้องเฉพาะที่ (Local Failure) ซึ่งมีผลกระทบกับธุรกรรมใดธุรกรรมหนึ่งเท่านั้น เช่น เกิดภาวะไหลล้นของข้อมูล(Overflow) และความขัดข้องโดยรวม (Global failure) ซึ่งมีผลกระทบกับธุรกรรมในระบบ ความขัดข้องโดยรวมมีได้ 2 กรณี คือ
    1. ความขัดข้องของระบบ (System failures) เช่น ไฟฟ้าดับ ซึ่งกระทบทุกธุรกรรมแต่ไม่สร้างความเสียหายทางกายภาพแก่ฐานข้อมูล จัดเป็น การล้มแบบนุ่ม (Soft Crash)
    2. ความถูกต้องของสื่อข้อมูล (Media Failures) เช่น การอ่านดิสก์ชำรุด ซึ่งจะก่อความเสียหายแก่ฐานข้อมูลทั้งหมดหรือบางส่วน อย่างนี้ถือเป็น การล้มแบบหนัก (Hard Crash)
    ปัญหาที่สำคัญในการฟื้นสภาพ คือ ทำอย่างไรระบบจะรู้ว่าธุรกรรมใดควรจะทำการยกเลิก (Undo) และธุรกรรมใดควรจะทำซ้ำ (Redo) คำตอบ คือ ระบบต้องมีการ ทำการตรวจอัตโนมัติ (Automatically Taking a Checkpoint) คือ
    1. เขียนเนื้อหาในหน่วยความจำชั่วคราวของฐานข้อมูล (Database Buffer) ลงในฐานข้อมูลทางกายภาพ
    2. เขียนบันทึกจุดตรวจสอบลงในแฟ้มปูม (Physical Log)
    ตัวอย่างของการทำการตรวจสอบอัตโนมัติดังภาพต่อไปนี้



    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image001_0000.gifธุรกรรม/เวลา Tc Tf

    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image002_0000.gifDescription: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image003.gifT1
    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image004.gifT2
    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image005.gifT3
    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image006.gifT4
    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image007.gifT5
    จุดตรวจสอบ ระบบขัดข้อง
    ณ เวลา Tc ณ เวลา Tf

    จากจอภาพข้างบน เมื่อธุรกรรมใดเข้าสู่เขตเวลาตรวจสอบถือว่าจะต้องเข้าสู่กระบวนดารเริ่มต้นใหม่ (Restart process) หลังจากระบบเริ่มการทำงานอีกครั้ง โดยระบบจะดำเนินการ ดังนี้
    ธุรกรรม T1 ระบบจะไม่ทำอะไรเพราะธุรกรรมนี้ถูกบันทึกลงฐานข้อมูลว่าสำเร็จเรียบร้อยแล้ว (อยู่นอกกระบวนการเริ่มจ้น)
    ธุรกรรม T3 และ T5 ต้องถูกยกเลิกการกระทำ (การซ่อมแซมฐานข้อมูลให้อยู่ในภาวะข้อมูลไม่ขัดแย้งกันโดยการยกเลิกการกระทำหรือ ROLLBACK เรียกว่า Backward Recovery)
    ธุรกรรม T2 และ T4 ต้องถูกทำซ้ำ (การซ่อมแซมฐานข้อมูลให้อยู่ในภาวะข้อมูลไม่ขัดแย้งกันโดยการทำซ้ำในส่วนของธุรกรรมที่ยังไม่ได้ COMMIT เรียกว่า Forward Recovery)

      • การควบคุมภาวะพร้อมกัน

    ดังกล่าวไว้แล้วว่า การควบคุมภาวะพร้อมกัน (Concurrency Control) นี้เกี่ยวข้องใกล้ชิดกับเรื่องการฟื้นสภาพ และทั้งสองเรื่องนี้เกี่ยวกับเรื่องใหญ่ คือ การจัดการธุรกรรม
    ภาวะพร้อมกัน (Concurrency) หมายถึง กรณีที่ระบบรอหารฐานข้อมูลปรกยินยอมให้ธุรกรรมหลายตัวเข้าถึงฐานข้อมูลเดียว ณ เวลาเดียวกัน ซึ่งระบบจะต้องมีกลไกการควบคุมภาวะพร้อมกัน (Concurrency Control Mechanism) เพื่อให้มั่นใจว่า ธุรกรรมที่เข้ามาพร้อมกันนั้นไม่รบกวนหรือแทรกแซงกันและกัน
    9.4.1 ปัญหาภาวะพร้อมกัน 3 กรณี
    มีกรณีที่เป็นไปได้ 2 กรณีที่อาจเกิดขึ้นได้แม้ว่าตัวธุรกรรมนั้นจะถูกต้องในตัวของมันเอง เนื่องจากธุรกรรมอื่นเข้ามาแทรกแซงในทางใดทางหนึ่ง สาเหตุก็คือ การแทรกสลับ (Interleaving)ของปฏิบัติการของธุรกรรม 2 ตัว ซึ่งไม่สามารถควบคุมให้เหมาะสมได้เป็นสาเหตุที่ทำให้ผลลัพธ์ทั้งหมดออกมาผิดพลาด ซึ่งมีกรณีที่เป็นไปได้ ดังนี้
    กรณีที่ 1 ปัญหาการปรับปรุงข้อมูลสูญหาย (The Lost Update Problem) มีลักษณะดังภาพต่อไปนี้



    ธุรกรรม ก เวลา ธุรกรรม ข

    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image010.gifDescription: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image011.gifDescription: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image012.gifDescription: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image012_0000.gif- -
    - -
    เรียกค้นหาข้อมูล ต ว1 -
    - -
    - ว2 เรียกค้นหา ต
    - -
    ปรับปรุงข้อมูล ต ว3 -
    - -
    - ว4 ปรับปรุงข้อมูล ต
    - -


    ธุรกรรม ก สูญเสียการปรับปรุงข้อมูล ณ เวลา ว4 เพราะถูกธุรกรรม ข มาปรับปรุงข้อมูลทับลงไปโดยไม่ทราบว่าข้อมูล ต นั้นไดถูกเปลี่ยนแปลงไปแล้วด้วยการกระทำของธุรกรรม ก ดังนั้น ธุรกรรม ข จึงเปลี่ยนแปลงข้อมูล ต เสียใหม่โดยไม่นำเอาการเปลี่ยนแปลงที่ธุรกรรม ก กระทำมาประกอบการพิจารณาเลยจึงทำให้สูญเสียการปรังปรุงข้อมูลที่ธุรกรรม ก ได้ทำไว้
    กรณีที่ 2 ปัญหาที่เกิดจากการย้อนกลับ (The uncommitted Dependency Problem) มีลักษณะดังภาพต่อไปนี้



    ธุรกรรม ก เวลา ธุรกรรม ข

    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image012_0001.gifDescription: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image012_0002.gif- -
    - -
    - ว1 ปรับปรุงข้อมูล ต
    - -
    เรียกข้อมูล ต ว2
    - -
    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image014.gif- ว3 ย้อนกลับ
    - -

    ธุรกรรม ก มองเห็นข้อมูลที่ไม่ถูกต้อง เนื่องจากธุรกรรม ข ได้ย้อนกลับ (Rollback) การกระทำไปแล้ว
    หรืออีกตัวอย่างดังภาพต่อไปนี้



    ธุรกรรม ก เวลา ธุรกรรม ข

    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image003_0000.gifDescription: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image003_0001.gif- -
    - -
    - ว1 ปรับปรุงข้อมูล ต
    - -
    ปรับปรุงข้อมูล ต ว2
    - -
    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image004_0000.gif- ว3 ย้อนกลับ
    - -

    ข้อมูลที่ธุรกรรม ก ทำการปรับปรุงหายไป เนื่องจากธุรกรรม ข ได้ทำการย้อนกลับ (Rollback) การกระทำและละเว้นการปรับปรุงที่ธุรกรรม ก ได้ทำไว้
    กรณีที่ 3 ปัญหาผลการวิเคราะห์ขัดแย้งกัน (The Inconsistent Analysis problem) มีลักษณะดังภาพต่อไปนี้



    บช1 บช2 บช3
    30
    50
    40

    ธุรกรรม ก เวลา ธุรกรรม ข

    - -
    - -
    เรียกค้น บช 1; ว1 -
    Sum = 40 -
    เรียกค้น บช2; ว2 -
    Sum= 90 -
    - ว3 เรียกค้น บช3
    - ว4 ปรับปรุง บช3
    - 30 20
    - ว5 เรียกค้น บช1
    - ว6 ปรับปรุง บช1
    - 40 50
    - ว7 COMMIT
    เรียกค้น บช3 ว8
    Sum = 110

    ธุรกรรม ก ได้ทำการวิเคราะห์ผลลัพธ์ที่ไม่สอดคล้องกับความเป็นจริง คือแทนที่ค่า sum จะเป็น 120 กลับได้พียง 110 เพราะค่าใน บช3 ถูกเปลี่ยนไปเป็น 20 เสียก่อนที่ธุรกรรม ก จะดำเนินการเสร็จสมบูรณ์
    9.4.2 การควบคุมภาวะพร้อมกันด้วยการล็อก (Locking)
    การล็อกเป็นเทคนิคการควบคุมภาวะพร้อมกันเพื่อแก้ปัญหา 3 กรณี ดังที่อธิบายมาข้างต้น การล็อกจะมีผลกระทบต่อธุรกรรมอื่น ๆ ไม่ให้เข้าสู่ทูเพิลที่ธุรกรรมแรกกำลังเข้าถึงอยู่ ดังนั้น ธุรกรรมใด ๆ จะกระทำการใด ๆ กับข้อมูล จะต้องได้ล็อก (Acquire a lock) วัตถุข้อมูลนั้นเสียก่อน ลักษณะการทำงานของการล็อกมีรายละเอียด ดังนี้
    1. ระบบจะต้องสนับสนุนการล็อก 2 ประเภท ได้แก่ Exclusive Lock (หรือ X Lock หรือ Write Lock) และ Shared lock (หรือเรียกว่า S Lock หรือ Read Lock) ซึ่งจะสามารถทำการล็อกทูเพิลได้เท่านั้นในที่นี้
    2. ถ้าธุรกรรม ก ถือครอง Exclusive Lock บนทูเพิล ต แล้ว ธุรกรรมอื่น ๆ จะถูกปฏิเสธการร้องขอล็อกทุกชนิดบนทูเพิล ต นั้น
    3. ถ้าธุรกรรม ก ถือครอง Shared Lock แล้ว
    3.1 การร้องขอ Exclusive Lock บนทูเพิล ต จะถูกปฏิเสธ
    3.2 การร้องขอ Shared Lock บนทูเพิล ต จะได้รับอนุญาต
    กฎเกณฑ์ดังกล่าวนี้สามารถอยู่ในตารางประเภทการล็อกที่เข้ากันได้ (Lock Yype Compatibility Matarix) ดังภาพ



    T1\T2

    X

    S

    -

    X

    N

    N

    Y

    S

    N

    Y

    Y

    -

    -Y

    Y

    Y

    เครื่องหมาย T1 หมายถึง ธุรกรรม ก
    เครื่องหมาย T2 หมายถึง ธุรกรรม ข
    เครื่องหมาย - หมายถึง ยังไม่มีการขอล็อกจากธุรกรรมใด
    เครื่องหมาย X หมายถึง มีการขอ Exclusive Lock ไว้แล้ว
    เครื่องหมาย S หมายถึง มีการขอ Shared Lock ไว้แล้ว
    เครื่องหมาย Y หมายถึง อนุญาตให้ล็อกได้ทั้งสองธุรกรรม
    เครื่องหมาย N หมายถึง ไม่สามรถให้ล็อกได้ ธุรกรรมตัวใด
    ตัวหนึ่งจะต้องอยู่ใน สภาวะรอคอย (Wait State)
    แนวทางแก้ไขปัญหาภาวะพร้อมกัน 3 กรณี
    กรณีที่ 1 ปัญหาการปรับปรุงข้อมูลสูญหาย (The Lost Update Problem) อาจแก้ไขได้ดังภาพต่อไปนี้


    ธุรกรรม ก เวลา ธุรกรรม ข

    - -
    - -
    เรียกค้นหาข้อมูล ต ว1 -
    (ได้รับ S Lock บน ต) -
    - ว2 เรียกค้นหา ต
    - ( ได้รับ S Lock บน ต)
    - -
    ปรับปรุงข้อมูล ต ว3 -
    (ร้องขอ X Lock บน ต ) -
    รอคอย
    รอคอย ว4 ปรับปรุงข้อมูล ต
    (ร้องขอ X Lock บน ต)
    รอคอย รอคอย


    จะเห็นว่าไม่มีการสูญเสียการปรับปรุงข้อมูลใด ๆ แต่เกิดปัญหา วงจรอับ (Deadlock) ขึ้น
    ณ เวลา ว4
    กรณีที่ 2 ปัญหาที่เกิดจากการย้อนกลับ (The Uncomitted Dependency Problem) อาจแก้ไขดังภาพต่อไปนี้


    ธุรกรรม ก เวลา ธุรกรรม ข

    - -
    - -
    - ว1 ปรับปรุงข้อมูล ต
    - ( ได้รับ X Lock บน ต)
    - -
    เรียกค้นข้อมูล ต -
    (ร้องขอ S Lock บน ต) ว2 -
    รอคอย

    รอคอย ว3 กระทำ/ย้อนกลั
    (ปล่อย X Lock บน ต)

    คืนกลับเรียกค้นข้อมูล ต ว4
    (ได้รับ S Lock บน ต)

    ธุรกรรม ก ถูกกันไม่ให้มองเห็นข้อมูลที่ไม่ถูกต้อง ณ เวลา ว2
    หรืออีกตัวอย่างหนึ่งดังภาพต่อไปนี้


    ธุรกรรม ก เวลา ธุรกรรม ข

    - -
    - -
    - ว1 ปรับปรุงข้อมูล ต
    - ( ได้รับ X Lock บน ต)
    - -
    ปรับปรุงข้อมูล ต -
    (ร้องขอ S Lock บน ต) ว2 -
    รอคอย

    รอคอย ว3 กระทำ/ย้อนกลับ
    (ปล่อย X Lock บน ต)

    คืนกลับเรียกค้นข้อมูล ต ว4
    (ได้รับ S Lock บน ต)

    ธุรกรรม ก ถูกกันไม่ให้ปรับปรุงข้อมูลที่ไม่ถูกต้อง ณ เวลา ว2
    กรณีที่ 3 ปัญหาการวิเคราะห์ขัดแย้งกัน (The Inconsistent Analysis Problem) อาจแก้ได้ดังภาพต่อไปนี้


    บช1 บช2 บช3
    40
    30
    50

    ธุรกรรม ก เวลา ธุรกรรม ข

    - -
    - -
    เรียกค้น บช 1; (ได้รับ S Lock บน บช1) ว1 -
    Sum = 40 -
    เรียกค้น บช2; (ได้รับ S Lock บน บช2) ว2 -
    Sum= 90 -
    - ว3 เรียกค้น บช3(ได้รับ S Lock บน บช3)
    - ว4 ปรับปรุง บช3(ได้รับX Lock บน บช3)
    - 30 20
    - ว5 เรียกค้น บช 1; (ได้รับ S Lock บน บช1)
    - ว6 ปรับปรุง บช1 (ได้รับ S Lock บน บช1)
    รอคอย
    เรียกค้น บช3 (ได้รับ S Lock บน บช3) ว7 รอคอย
    รอคอย รอคอย

        • ปัญหาวงจรอับและการแก้ไข

    วงจรอับ หรือ Deadlock คือ สถานการณ์ที่ธุรกรรม 2 ตัวขึ้นไปตกอยู่ในสภาวะรอคอยพร้อม ๆ กัน โดยแต่ละธุรกรรมกำลังรอคอยให้ธุรกรรมตัวอื่น ปลดปล่อยการล็อก เพื่อตนจะได้ทำงานต่อไปได้
    ตัวอย่างของวงจรอับ 2 กรณี ได้แสดงให้เห็นแล้วดังภาพในหัวข้อก่อนหน้านี้ และในภาพต่อไปนี้จะแสดงตัวอย่างวงจรอับให้เห็นเพิ่มเติมอีกซึ่งเป็นกรณีทั่วไปซึ่งพบกันบ่อย ๆ ซึ่งจะมี ท1 และ ท2 หมายถึง ทรัพยากรที่สามารถถูกล็อกได้ ไม่จำเป็นจะต้องเป็นเฉพาะทูเพิลของฐานข้อมูล


    ธุรกรรม ก เวลา ธุรกรรม ข

    - -
    ล็อก ท1 แบบ Exclusive ว1 -
    - -
    - ว2 ล็อก ท2 แบบ Exclusive
    - -
    ล็อก ท2 แบบ Exclusive ว3 -
    รอคอย -
    รอคอย ว4 ล็อก ท1 แบบ Exclusive
    รอคอย รอคอย

    ในภาพข้างบนนี้เป็นวงจรอับที่เกิดจากธุรกรรมสองตัว
    ถ้าเกิดวงจรอับขึ้น ระบบจำเป็นจะต้องตรวจหาให้พบแล้วขจัดเสีย การตรวจหาวงจรอับอาจดูจากแผนภาพการรอคอย (Wait-For Graph) ซึ่งบอกให้ทราบว่าธุรกรรมกำลังรอธุรกรรมใดอยู่ ซึ่งจะช่วยให้ค้นหาจุดที่เกิดวงจรอับไดง่ายขึ้น
    วิธีแก้วงจรอับ จะเริ่มจากการเลือกธุรกรรมตัวใดตัวหนึ่งที่ตกอยู่ในวงจรอับ โดยเรียกธุรกรรมที่ถูกเลือกว่าเป็น แพะหรือเหยื่อ (Victim) แล้วสั่งให้ธุรกรรมนั้นทำการย้อนกลับการกระทำหรือยกเลิกการทำงานของมันนั่นเอง ดังนั้น จึงเปิดโอกาสให้ธุรกรรมอื่นสามารถทำงานคืบหน้าต่อไปได้ ในทางปฏิบัติระบบส่วนใหญ่จะไม่ทำการตรวจสอบหาวงจรอับ แต่จะใช้วิธีที่เรียกว่า กลไกการหมดเวลา (Timeout Mechanism) ซึ่งจะคาดเดาว่าธุรกรรมใดก็ตามที่ไม่มีการทำงานอะไรเลยภายในช่วงระยะเวลาที่กำหนดไว้ช่วงหนึ่ง จัดเป็นธุรกรรมที่ตกอยู่ในวงจรอับ
    หลังจากนั้นธุรกรรมที่ถูกเลือกเป็นแพะจะถูกถือว่าขัดข้องและต้องการกระทำย้อนกลับหรือยกเลิกการทำงานของธุรกรรมที่ทำไป จากนั้นบางระบบจะให้มีการเริ่มต้นทำธุรกรรมใหม่ในภายหลัง (ซึ่งไม่นานนัก) โดยคาดคะเนว่าเงื่อนไขของวงจรอับที่เคยเกิดขึ้นคงจะไม่เกิดขึ้นซ้ำอีก แต่บางระบบหลังจากเรียกแพะแล้วจะส่ง สัญญาณ “แพะวงจรอับ” (“Deadlock Victim” Exception Code) กลับไปยังโปรแกรมประยุกต์เพื่อให้เป็นผู้ตัดสินใจเองว่าจะจัดการกับแพะนั้นอย่างไร โปรแกรมเมอร์ส่วนใหญ่จะชอบวิธีแรกมากกว่าแต่ว่าจะอย่างไร ปัญหาวงจรอับดังกล่าวก็ควรจะถูกซ่อนบังไม่ให้ผู้ใช้ต้องรับทราบใด ๆ ทั้งสิ้น
    9.5 การรักษาความปลอดภัยของระบบฐานข้อมูล

        • ความหมาย

    การรักษาความปลอดภัย หมายถึง การป้องกับข้อมูลต่อผู้ใช้ที่ไม่มีสิทธิ์ (Security means protecting the data against unauthorized users.) นั่นคือ เป็นการป้องกันไม่ให้ผู้ไม่มีสิทธิ์เข้าถึงข้อมูลในฐานข้อมูล สามารถเข้าถึงได้หากเปรียบเทียบกับความหมายของความถูกต้องในมุมมองนี้จะคล้าย ๆ กัน กล่าวคือ ความถูกต้องของข้อมูล หมายถึง การป้องกันข้อมูลต่อผู้ที่ไม่มีสิทธ์ใช้ (Security means protecting the data against unauthorized users.) แต่ใช้ไม่ถูกต้อง เพื่อไม่ให้ผู้ใช้ดังกล่าวทำการปรับปรุงข้อมูลในฐานข้อมูลอย่างไม่ถูกต้อง (C.J Data 2000, p. 504-505)

        • ข้อควรคำนึงเกี่ยวกับการรักษาความปลอดภัย (General Considerations)
        • วิธีการควบคุมความปลอดภัยข้อมูล (Access Controls)

    วิธีการควบคุมการเข้าถึงข้อมูลมีอยู่ 2 วิธี คือ

    • การควบคุมแบบรายย่อย (Data Discretionary Control)
    • การควบคุมแบบบังคับรวม (Data Mandatory Control)

    ระบบจัดการฐานข้อมูลส่วนใหญ่จะใช้วิธีการนี้ และบางระบบจะใช้ทั้งสองวธีประกอบกัน
    1. การควบคุมแบบรายย่อย (data Discretionary Control)
    วิธีที่ผู้ใช้แต่ละรายจะมีสิทธิ์ในการเข้าถึงวัตถุในฐานข้อมูลแตกต่างกัน วิธีนี้ค่อนข้างหยืดหยุ่นเพราะจะมีการกำจัดสิทธิ์น้อยมาก กล่าวคือ บอกเพียงว่าผู้ใช้คนใดมีสอทธิ์บนวัตถุใด เช่น ผู้ใช้ชื่อ U1 สามารถดูวัตถุชื่อ A ได้ แต่ไม่สามรถเห็นวัตถุ B ขณะเดียวกันผู้ใช้ U2 สามารถเห็นวัตถุ B แต่ไม่สามารถเห็นวัตถุ A
    ตัวอย่างข้อกำหนดความปลอดภัย (Security Constraint) ที่ควบคุมแบบรายย่อย
    AUTHORITY SA3
    GRANT RETRIEVE (SNO,SNAME,CITY),DELETE
    ON S
    TO Jim,Fred,Mary;


    ชื่อของการควบคุม คือ SA3
    สิทธิ์ที่ให้ คือ คืบค้นและลบค่าข้อมูลในแอตทริบิวต์ในตาราง S
    ผู้ใช้ที่ได้รับสิทธิ์ คือ จิม เฟรด และแมรี่

      • การควบคุมแบบบังคับรวม (data Mandatory Control)

    วิธีนี้จะมองมุมตรงกันข้ามกับวิธีแรก คือ วัตถุข้อมูลแต่ละตัวจะถูกกำหนดระดับชั้นความสำคัญ (Classification Level) ไว้ไม่เท่ากัน ส่วนผู้ใช้แต่ละคนก็จะมีระดับการเข้าถึง (Clearance Level) ต่างกันไป ซึ่งวิธีการนี้มีลักษณะเป็นแบบลดหลั่นตามลำดับชั้นโดยธรรมชาติ (Hierarchic in Nature) กล่าวคือ ถ้าผู้ใช้ชื่อ U1 สามารถดูวัตถุชื่อ A ได้ แต่ไม่สามารถดูวัตถุชื่อ B ได้ แล้วแสดงว่าลำดับชั้นความสำคัญของวัตถุ B สูงกว่า A หากผู้ใช้ U2 สามารถมองเห็นวัตถุ B ได้เขาย่อมมีสิทธิ์มองเห็นวัตถุ A ได้ด้วย

    ผลที่ได้ก็คือ ข้อความที่เข้ารหัสแล้ว (Ciphertext) ดังตัวอย่างต่อไปนี้ (Kenneth H. Rosen, 1999, p. 124-125)


    ข้อความปรกติ

    MEET YOU

    แปลงเป็นค่าตัวเลขตำแหน่ง คือ

    12 4 4 19 24 14 20

    จากนั้นใช้ขั้นตอนการเข้ารหัสแบบ Caesar Cipher คือ เอาตัวเลขตำแหน่งแต่ละจำนวนมาบวกด้วย 3 จะได้

    15 7 7 22 1 17 23

    ซึ่งถ้าถูกแปลงเป็นตัวอักษรจะไม่สามารถอ่านเข้าใจได้ จึงเป็นการรักษาความลับไว้ได้ คือ

    PHHW BRX

    วิธีการข้างต้นนี้นักคณิตศาสตร์ได้นำมาอธิบายว่า วิธีการเข้ารหัสแบบซีซาร์สามารถแทนได้ด้วยฟังก์ชั่น f ซึ่งกำหนดให้แก่จำนวนเต็มบวก p โดยที่ < 25 ดังนั้นจำนวนเต็ม f(p) ในเซต {0,1,2,….,25} จะถูกเข้ารหัสด้วยสูตร (ในที่นี้ k = 3)
    f(p) = (p + k) modulo 26
    Description: http://itd.htc.ac.th/st_it50/it5012/P_1/DB/images/B8_clip_image002_0005.gif
    และสามารถถอดรหัสได้ด้วยสูตรฟังก์ชั่นอินเวอร์ส คือ
    f(p) = (p - k) modulo 26
    C = Pe modulo r
    วิธีเข้ารหัสข้อมูลได้รับการพัฒนาอย่างต่อเนื่องและมีผู้คิดค้นวิธีการต่าง ๆ มากมาย จวบจนปัจจุบัน
    มีวิธีการเข้ารหัสที่เป็นที่ยอมรับกันในวงกว้างก็คือ วิธีการแบบ RSA ซึ่งมีวิธีคิดขึ้นมาโดยนักวิจัยแห่งสถาบัน MIT เมื่อปี ค.ศ. 1976
    นักวิจัยทั้ง 3 สามคนได้รับเกียตริให้เอาตัวอักษรแรกของสกุลมาตั้งเป็นชื่อวิธีการนี้ ได้แก่ Ron Rivest, Adi Shamir, และ Len Adleman วิธีการดเข้าข้อมูลแบบ RSA นี้มีสูตรว่า
    โดยที่ C หมายถึง จำนวนเต็มที่แทนข้อความที่เข้ารหัส
    P หมายถึง ข้อความปรกติ หรือ plain text
    E หมายถึง ตัวเลขที่เป็นกุญแจของฝ่ายส่ง ซึ่งเป็นจำนวนเฉพาะกับค่า (p-1)(q-1) โดยที่ r = pq
    ส่วนสูตรที่ใช้ในกการเข้ารหัสก็คือ
    P = C modulo r
    D หมายถึง ตัวเลขที่เป็นกุญแจซึ่งเป็นตัวคู่ข้ามกันกับ e modulo (p-1)(q-1) โดยที่ d* e=1 modulo (p-1) * (q-1)

    ตัวอย่าง
    ให้ p = 3, q = 5, แล้ว r = 15, และผลคูณของ (p-1)(q-1) =8
    ให้ e = 11 (ซึ่งเป็นจำนวนเฉพาะซึ่งมากกว่าค่าของ p และ q)
    เมื่อคำนวณหาค่า d จะได้ว่า
    d *11 = 1 modulo 8
    ดังนั้น จึงได้ d = 3
    ให้ข้อความปรกติ หรือ Plain text p คือ ค่าจำนวนเต็ม 13 จะได้จำนวนที่เข้ารหัสแล้วดังนี้

    C = P modulo r
    = 13 modulo 15
    = 1,792,160,394,037 modulo 15
    = 7
    จากนั้นนำ 7 มาถอดรหัส ทำได้ดังนี้
    P = C modulo r
    = 7 modulo 15
    = 343 modulo 15
    = 13
    จากตัวอย่างดังกล่าวจึงมีการประยุกต์ให้ e เป็น Private Key ให้ฝ่ายที่จะส่งข่าวสารของตน (เช่น ลูกค้า) เก็บรักษาเอาไว้ เมื่อส่งข่าวสารที่เข้ารหัสแล้ว (ในตัวอย่าง คือ 7 ) ทางผู้รับข่าวสาร (คือ ผู้ขาย) จะมี d เป็น Public Key เก็บไว้สำหรับผู้ที่ติดต่อมา (คือ ลูกค้ารายนี้) ซึ่งทำให้ทราบได้ว่าใครเป็นผู้ติดต่อมา และเก็บความลับได้ดีกว่า เนื่องจากต้องรู้คีย์ทั้ง 2 คีย์จึงสามารถถอดรหัสข้อมูลได้อย่างถูกต้อง