E-R to Relational Mapping Algorithm
Data Integrity Rule กฎความคงสภาพในข้อมูล ความคงสภาพในข้อมูล คือ กฎเกณฑ์และข้อจำกัดที่กำหนดขึ้นมาเพื่อควบคุม ความถูกต้องของข้อมูลเพื่อให้ข้อมูลนั้นมีความถูกต้องตรงกันตามความเป็นจริง และป้องกันมิให้เกิดข้อผิดพลาดในข้อมูลที่จะบันทึกลงฐานข้อมูล สำหรับกฎความคงสภาพในข้อมูล ประกอบด้วย 3 กฎเกณฑ์หลัก คือ กฎความคงสภาพของเอ็นติตี้ (Entity Integrity) กฎความคงสภาพของโดเมน (Domain Integrity) กฎความคงสภาพของการอ้างอิง (Referential Integrity)
Entity Integrity กฎความคงสภาพของเอ็นติตี้ เป็นกฎที่ว่าด้วยการออกแบบเพื่อความแน่นอนของทุก ๆ รีเลชั่นที่มีคีย์หลัก โดยรับประกันว่าทุกแอตตริบิวต์ที่เป็นคีย์หลักจะต้องไม่เป็นค่าว่าง ซึ่งหากแอตตริบิวต์ ใดมีคีย์หลักเป็นค่าว่าง (Null) การอ้างอิงความเป็นเอกลักษณ์ของแอตตริบิวต์นั้นจะ ผิดกฏความคงสภาพของเอ็นติตี้ไปโดยปริยาย บางครั้งกฏความคงสภาพของเอ็นติตี้ อาจเรียกอีกชื่อหนึ่งว่า Key Integrity
Entity Integrity
Domain Integrity กฎความคงสภาพของโดเมน เป็นกฎเกณฑ์ที่ใช้เพื่อควบคุมค่าข้อมูลให้อยู่ในช่วงที่เหมาะสมและถูกต้อง เช่น เกรดเฉลี่ยสะสม (GPA) ซึ่งจะต้องมีค่าระหว่าง 0.00 ถึง 4.00 ดังนั้นในการพัฒนา ฐานข้อมูลก็จะต้องสามารถควบคุมค่าดังกล่าวได้ โดยเกรดเฉลี่ยสะสมต้องไม่เป็น ค่าติดลบ และจะมีค่าไม่เกินกว่า 4.00 ไม่ได้
Domain Integrity
Referential Integrity กฎความคงสภาพของการอ้างอิง เป็นกฎเกณฑ์ที่ว่า ถ้าหากมีรีเลชั่นหนึ่งซึ่งเป็นคีย์นอก (Foreign Key) มีการอ้างอิง กับคีย์หลัก (Primary Key) ในอีกรีเลชั่นหนึ่ง ก็จะทำให้สามารถทราบข้อมูลต่าง ๆ ใน อีกรีเลชั่นหนึ่งได้
Referential Integrity การเปลี่ยนแปลงในข้อมูลตามกฎความคงสภาพของการอ้างอิงนี้ มีความเป็นไปได้ อยู่ 3 กรณีด้วยกัน ดังนี้ Restricted เป็นกฎที่ไม่อนุญาตให้มีการแก้ไขข้อมูลที่เป็นคีย์ ถ้าคีย์ที่ต้องการ แก้ไขนั้นยังมีการอ้างอิงหรือใช้งานจากรีเลชั่นอื่น ๆ อยู่ Cascades เป็นกฎที่อนุญาตให้สามารถแก้ไขข้อมูลที่เป็นคีย์หลักได้ แต่จะทำการ แก้ไขคีย์นอกใน รีเลชั่นอื่น ๆ ที่มีการอ้างถึงคีย์หลักโดยอัตโนมัติ
Referential Integrity Cascades Example P0014 > P0089 P0014 > P0089
Referential Integrity Nullify เป็นกฎที่อนุญาตให้บันทึกค่า Null ให้กับคีย์นอกได้ เช่น ในรีเลชั่นOrder_Line เป็นรีเลชั่นการสั่งซื้อสินค้าของลูกค้า สมมติว่ามีสินค้าชิ้นหนึ่งยังไม่ได้ มีการกำหนดรหัสสินค้า เนื่องจากเป็นสินค้าชนิดใหม่ แต่กฎนี้จะอนุญาตให้ใส่ค่า Null แก่รหัสสินค้า (productID) ที่เป็นคีย์นอกได้
E-R to Relational Mapping Algorithm Strong Entity คือ entity ที่เกิดขึ้นได้ด้วยตัวเอง เป็นอิสระโดยไม่ขึ้นกับ entity ใด Weak Entity คือ entity ที่เกิดได้จาก entity หลัก ดังนั้น Weak Entity จะถูกลบ ออกไปทันทีเมื่อ entity หลักถูกลบ Associative Entity เป็นรูปแบบที่เกิดขึ้นจากความสัมพันธ์ระหว่าง entity ใน ลักษณะ M:N โดยหากเกิดความสัมพันธ์ระหว่าง entity แบบกลุ่มต่อกลุ่มแล้ว จะต้องเพิ่ม entity อีกหนึ่งตัวคั่นกลาง เพื่อใช้เก็บเหตุการณ์ของข้อมูลที่เกิดขึ้น
Step 1 : การแปลง Strong Entity การแปลง Strong Entity ชื่อ CUSTOMER มาเป็นรีเลชั่น
Step 1 : การแปลง Strong Entity การแปลง Composite Attributes มาเป็นรีเลชั่น
Step 1 : การแปลง Strong Entity การแปลง Multivalued Attributes มาเป็นรีเลชั่น
Step 2 : การแปลง Weak Entity
Step 3 : การแปลงความสัมพันธ์แบบ Binary การแปลงความสัมพันธ์แบบ 1:M (one to many) เป็นรีเลชั่น
Step 3 : การแปลงความสัมพันธ์แบบ Binary การแปลงความสัมพันธ์แบบ M:N (many to many) เป็นรีเลชั่น
Step 3 : การแปลงความสัมพันธ์แบบ Binary การแปลงความสัมพันธ์แบบ 1:1 (one to one) เป็นรีเลชั่น
Step 4 : การแปลงเอ็นติตี้ชนิด Associative กรณีไม่ได้ระบุคีย์หลัก (Primary Key)
Step 4 : การแปลงเอ็นติตี้ชนิด Associative กรณีมีการระบุคีย์หลัก (Primary Key) unitPrice
Step 5 : การแปลงความสัมพันธ์แบบ Unary ความสัมพันธ์แบบ Unary ชนิด one to many ทำการเพิ่มแอตตริบิวต์ที่ใช้เป็นคีย์นอกเข้าไป โดยค่าข้อมูลคีย์นอกก็คือค่าข้อมูลคีย์หลัก ที่ใช้เชื่อมโยงบนรีเลชั่นเดียวกัน (คีย์นอกจะต้องมีโดเมนเดียวกับคีย์หลัก)
Step 5 : การแปลงความสัมพันธ์แบบ Unary ความสัมพันธ์แบบ Unary ชนิด many to many จะต้องสร้างรีเลชั่น 2 รีเลชั่นด้วยกัน โดยรีเลชั่นแรกจะมีคีย์หลักพร้อมแอตตริบิวต์ที่เกี่ยว ข้อง ส่วนอีกรีเลชั่นหนึ่ง คือ รีเลชั่นแบบ Associative ที่ประกอบด้วย 2 แอตตริบิวต์ที่เป็น คีย์หลัก ซึ่งแอตตริบิวต์ทั้งสองก็คือค่าข้อมูลเดียวกันกับคีย์หลักในเอ็นติตี้แรก แต่จะต้อง ตั้งชื่อให้แตกต่างกัน
Step 5 : การแปลงความสัมพันธ์แบบ Unary Example : ต้องการทราบว่ามี component อะไรบ้างทีอยู่ใน item หมายเลข 100 SELECT componentNo, quantity FROM COMPONENT WHERE itemNo = 100;
Step 6 : การแปลงความสัมพันธ์แบบ Ternary (and n-ary)
Step 7 : การแปลงความสัมพันธ์แบบ Supertype / Subtype 2. แอตตริบิวต์ของ Subtype จะได้รับการถ่ายทอดจากรีเลชั่นที่เป็น Supertype รวมถึงแอตตริบิวต์ที่เป็นคีย์หลักด้วย 3. กำหนดคีย์หลักให้กับแต่ละรีเลชั่นที่เป็น Subtype โดยจะต้องมีแอตตริบิวต์ที่แตกต่างกัน เพื่อใช้ระบุความแตกต่างของแต่ละ Subtype
Step 7 : การแปลงความสัมพันธ์แบบ Supertype / Subtype EMPLOYEE