ฐานข้อมูลเชิงสัมพันธ์
ระบบฐานข้อมูลเชิงสัมพันธ์ (Relational Database) เป็นฐานข้อมูลที่ใช้โมเดลเชิงสัมพันธ์ (Relational Database Model) ซึ่งผู้คิดค้นโมเดลเชิงสัมพันธ์นี้คือ Dr. E.F. Codd โดยใช้หลักพื้นฐานทางคณิตศาสตร์ เนื่องด้วยแนวคิดของแบบจำลองแบบนี้มีลักษณะที่คนใช้กันทั่วกล่าวคือมีการ เก็บเป็นตาราง ทำให้ง่ายต่อการเข้าใจและการประยุกต์ใช้งาน ด้วยเหตุนี้ ระบบฐานข้อมูลแบบนี้จึงที่ได้รับความนิยมมากที่สุด ในแง่ของ entity แบบจำลองแบบนี้คือ แฟ้มข้อมูลในรูปตาราง และ attribute ก็เปรียบเหมือนเขตข้อมูล ส่วนความสัมพันธ์คือความสัมพันธ์ระหว่าง entity ฐานข้อมูลเชิงสัมพันธ์ คือ การเก็บข้อมูลในรูปของตาราง (Table) หลายๆตารางที่มีความสัมพันธ์กัน ในแต่ละตารางแบ่งออกเป็นแถวๆ และในแต่ละแถวจะแบ่งเป็นคอลัมน์ (Column) ในทางทฤษฎีจะมีคำศัพท์เฉพาะแตกต่างออกไป เนื่องจากแบบจำลองแบบนี้เกิดจากทฤษฎีทางคณิตศาสตร์เรื่องเซ็ท (Set) ดังนั้น เราจะมีคำศัพท์เฉพาะดังตารางที่ 3.1นี้
ตารางที่ 3.1 คำศัพท์เฉพาะที่ใช้ในระบบฐานข้อมูลเชิงสัมพันธ์
รูปที่ 3.1 แสดงรายละเอียดของส่วนประกอบต่าง ๆ ของโมเดลแบบความสัมพันธ์
อาจจะเขียนในรูปสมการดังต่อไปนี้
R(รหัสประจำตัวประชาชน,ชื่อ,นามสกุล,วันเกิด)
เนื่องจากแต่ละตารางสามารถมีความสัมพันธ์กันได้ดังที่กว่าไว้ในข้างต้น
ทำให้การเก็บข้อมูลในรูปแบบนี้
มีความคล่องตัวสูงเพราะเราสามารถแยกเก็บข้อมูลใน
หลายตารางโดยอาศัยความสัมพันธ์ดังกล่าว
และสามารถสืบค้นได้จากรหัสพิเศษที่เรียกว่า กุญแจ(key) ดังรูปที่ 3.2
รูปที่ 3.2 แสดงตัวอย่างการสืบค้นข้อมูลโดยอาศัยความสัมพันธ์
Dr.E.F.Codd ได้กำหนดส่วนประกอบของโมเดลเชิงสัมพันธ์นี้ แบ่งเป็น 3 ส่วนได้แก่
โครงสร้างของฐานข้อมูลเชิงสัมพันธ์ จะอยู่ในลักษณะของตาราง 2 มิติ ประกอบด้วยทางด้านแถว และคอลัมน์ ซึ่งจะเรียกว่า รีเลชัน (Relation) โดยทั่ว ๆ ไป Relation หนึ่ง ๆ จะมีคุณสมบัติต่าง ๆ ดังนี้
ในระบบจัดการฐานข้อมูลทั่ว ๆ ไป Relation อาจจำแนกออกได้เป็น 2 ประเภท ดังนี้คือ
1) Relation หลัก (Base Relation)
เป็น Relation ที่ถูกกำหนดขึ้นเพื่อเก็บข้อมูลและเพื่อนำข้อมูลไปใช้เมื่อมีการสร้าง Relation โดยใช้ Data Definition Language เช่น ใน SQL คำสั่ง CREATE TABLE เป็นการสร้าง Relation หลัก หลังจากนั้นก็จะทำการเก็บข้อมูลเพื่อการเรียกใช้ข้อมูลในภายหลัง Relation หลักจะเป็นตารางที่จัดเก็บข้อมูลจริงไว้
2) วิว (View) หรืออาจเรียกอีกอย่างหนึ่งว่า Relation สมมุติ (Virtual Relation)
เป็น Relation ที่ถูกสร้างขึ้นตามความต้องการใช้ข้อมูลของผู้ใช้แต่ละคน เนื่องจาก ผู้ใช้แต่ละคนอาจต้องการใช้ข้อมูลในลักษณะที่แตกต่างกัน จึงทำการกำหนดวิวของตัวเองขึ้นมาจาก Relation หลัก เพื่อความสะดวกในการใช้ข้อมูล และช่วยให้การรักษาความปลอดภัยของฐานข้อมูลทำได้ง่ายขึ้น Relation ที่ถูกสมมติขึ้นมานี้จะไม่มีการเก็บข้อมูลจริง ๆ ในระบบฐานข้อมูล
ลักษณะของรีเลชั่นแสดงดังรูปที่ 3.3
รูปที่ 3.3 โครงสร้างของฐานข้อมูลเชิงสัมพันธ์
จากรูปที่ 3.3 ตารางข้อมูลทั้งหมด จะเรียกว่า Relation
แต่โดยส่วนใหญ่นิยมเรียกว่า Table หรือ ตาราง
เนื่องจากโครงสร้างการจัดเก็บเป็นแบบตาราง ส่วนข้อมูลในแต่ละแถว จะเรียกว่า
ทูเพิล (Tuple) ส่วนข้อมูลในแต่ละคอลัมน์ จะเรียกว่า แอตทริบิวส์
(Attribute) ดังตัวอย่างมี 4 แอตทริบิวส์ คือ SID, Sname, GPA, Major
เขียนเป็นสมการได้ดังนี้ Student(SID,Sname,GPA,Major)
3.2.2. Domain
โดเมน (Domain) คือการกำหนดขอบเขตและชนิดของข้อมูลเพื่อป้องกันไม่ให้ข้อมูลที่ผู้ใช้จัด เก็บ มีความผิดพลาดไปจากความเป็นจริงที่ควรจะเป็น ตัวอย่างดังรูปที่ 3.4
รูปที่ 3.4 โดเมนของข้อมูล
จากรูปที่ 3.4 เป็นการกำหนดโดเมนให้กับแอตทริบิวส์ข้อมูล GPA
ซึ่งเป็นค่าเกรดเฉลี่ย ของนักศึกษา
ซึ่งค่าเกรดเฉลี่ยจะต้องมีค่าอยู่ระหว่าง 0 - 4
ดังนั้นจึงต้องกำหนดโดเมนให้กับแอตทริบิวส์ GPA
เพื่อไม่ให้ข้อมูลผิดพลาดไปจากนี้
3.2.3. คีย์ (Key)
คีย์ คือ แอตทริบิวส์ หรือ กลุ่มของแอตทริบิวส์ที่สามารถแยกความแตกต่างของข้อมูล ในแต่ละทูเพิลได้ หรือแอตทริบิวส์ที่ข้อมูลในแอตทริบิวส์นั้นต้องมีข้อมูลที่ไม่ซ้ำกัน ซึ่งคีย์ มีอยู่หลายชนิดด้วยกัน ได้แก่
3.2.3.1. คีย์อย่างง่าย (Simple key) หมายถึง key ที่ประกอบด้วย attribute เดียว
3.2.3.2. คีย์ประกอบ (Combine key หรือ Composite key) หมายถึง key ที่ ประกอบด้วย attribute มากกว่า 1 attribute
3.2.3.3. คีย์คู่แข่ง (Candidate Key) คือคีย์ที่เล็กที่สุด ที่แยกความแตกต่างของข้อมูล แต่ละทูเพิลได้ ยกตัวอย่างเช่น ในรีเลชัน Student มีข้อมูลที่สามารถเป็นคีย์คู่แข่ง คือแอตทริบิวส์ รหัสนักศึกษา และการใช้แอตทริบิวส์ ชื่อรวมกับนามสกุล ซึ่งทั้งสองแบบสามารถระบุความแตกต่าง ของข้อมูล แต่ละทูเพิลได้
3.2.3.4. คีย์หลัก (Primary Key) คือคีย์คู่แข่งซึ่งได้เลือกมาเพื่อใช้กำหนดให้เป็นค่าคีย์ หลักของ รีเลชัน ซึ่งข้อมูลที่เป็นคีย์หลักนั้นจะต้องมีข้อมูลที่ไม่ซ้ำกัน และมักจะเลือกคีย์คู่แข่ง ที่มีขนาดเล็กมาเป็นคีย์หลัก ตัวอย่างเช่น การเลือกแอตทริบิวส์รหัสนักศึกษา มาเป็นค่าคีย์หลัก เนื่องจาก มีขนาดเล็กกว่าแอตทริบิวส์ ชื่อ รวมกับ นามสกุล ซึ่งจะทำให้การทำงานเร็วกว่า เนื่องจากมีขนาดเล็กกว่า
3.2.3.5. คีย์รอง (Alternate Key หรือ Secondary key) คือคีย์คู่แข่งอื่นๆ ที่ไม่ได้ ถูกเลือกมาใช้งาน ยกตัวอย่างเช่น แอตทริบิวส์ ชื่อรวมกับนามสกุล ซึ่งไม่ได้ถูกเลือกให้เป็นคีย์หลักของรีเลชัน ก็จะกลายเป็น Alternate Key
3.2.3.6. คีย์นอก (Foreign Key)เป็นคีย์ที่ใช้เชื่อมความสัมพันธ์ของรีเลชัน ตัวอย่างแสดงดังรูปที่ 3.5
รูปที่ 3.5 คีย์หลักและคีย์นอก
จากรูปที่ 3.5 รีเลชัน Student มีค่าคีย์หลักคือ SID
ซึ่งเป็นรหัสนักศึกษา โดยข้อมูลของรหัสนักศึกษาจะต้องมีข้อมูลที่ไม่ซ้ำกัน
และมีคีย์นอกของตารางคือแอตทริบิวส์ Major
ซึ่งเชื่อมโยงความสัมพันธ์ไปยังแอตทริบิวส์ Major ของรีเลชัน Major
ซึ่งข้อมูลทุกตัวของแอตทริบิวส์ Major ในรีเลชัน Student
จะต้องมีอยู่ในแอตทริบิวส์ Major ของรีเลชัน Major ส่วนตาราง Major
มีคีย์หลักคือแอตทริบิวส์ Major
3.2.3.7. ซุปเปอร์คีย์ (Super key) หมายถึง attribute หรือ เซ็ทของ attribute ที่ สามารถบ่งบอกว่าแต่ละแถว (Tuple) แตกต่างกัน ในทุก ๆ ความสัมพันธ์ จะต้องมีอย่างน้อย หนึ่ง super key ในเซ็ทของ attributes
3.3.1. กฎความบูรณภาพของเอนทิตี้ (Entity Integrity Rule)
กฎความบูรณภาพของเอนทิตี้ เป็นกฎที่ใช้กำหนดเพื่อให้ข้อมูลของเอนทิตี้ มีความถูกต้อง ซึ่งกล่าวไว้ว่า "แอตทริบิวส์ที่ทำหน้าที่เป็นคีย์หลักของรีเลชัน ไม่สามารถมีค่าเป็นค่าว่างได้ (Null Value)" และจะต้องมีคุณสมบัติที่เป็นเอกลักษณ์ (Identity) คือสามารถระบุข้อมูลแอตทริบิวส์อื่นๆ ที่อยู่ในทูเพิลเดียวกันได้
3.3.2. กฎความบูรณภาพของการอ้างอิง (Referential Integrity Rule)
กฎความบูรณภาพของการอ้างอิง คือกฎที่ใช้รักษาความถูกต้องของข้อมูลที่มีความสัมพันธ์กันของเอนทิตี้ ซึ่งได้กล่าวไว้ว่า "ค่าของคีย์นอกในรีเลชัน จะต้องมีข้อมูลอยู่ในอีก รีเลชันหนึ่ง ที่คีย์นอกของรีเลชันนั้นอ้างอิงถึง"
ในบางกรณีคีย์นอกอาจเป็นค่าว่างได้ ถ้านโยบายขององค์กร อนุญาตให้ค่าคีย์นอกเป็น ค่าว่างได้ กรณีหากมีการลบ หรือแก้ไขข้อมูล ในรีเลชันที่ถูกอ้างอิงถึง ซึ่งจะทำให้สูญเสียความบูรณภาพของข้อมูล ดังตัวอย่างรูปที่ 3.6 หากมีการแก้ไขหรือลบข้อมูลของรีเลชัน Major ในแอตทริบิวส์ Major ซึ่งมีความสัมพันธ์อยู่กับรีเลชัน Student จะทำให้ความสัมพันธ์ของข้อมูลเสียหาย ดังนั้นจึงต้องเลือก การกระทำเพื่อไม่ให้ความสัมพันธ์ของข้อมูลสูญเสียไปดังนี้
กรณีการแก้ไขข้อมูล
รูปที่ 3.6 รีเลชันที่มีความสัมพันธ์กัน
กรณีการลบข้อมูล
ค่าของ Attribute อาจจะเป็นค่าว่าง (Null) คือ ไม่มีค่าหรือยังไม่ทราบค่าได้ ตัวอย่างเช่น จำนวนไข่ของนกกระจอกเทศ จะสามารถบอกได้เมื่อนกกระจอกเทศออกไข่แล้ว แต่ยังไม่ทราบค่า ในขณะที่จำนวนไข่ของช้างนั้นไม่มีค่า เป็นต้น
คำว่า Restrict เป็นโอเปอเรเตอร์ทางคณิตศาสตร์ที่ใช้ในการเลือกข้อมูลจากรีเลชั่นหนึ่ง ๆ ที่มีเงื่อนไขตรงตามที่ระบุไว้ กล่าวอีกนัยหนึ่งคือ ใช้ในการแสดงข้อมูลของทูเพิลที่เป็นไปตามเงื่อนไขที่ระบุไว ้
รูปแบบ
COMPARISION ในที่นี้ หมายถึงเงื่อนไขของข้อมูลที่ต้องการเรียกดู
ซึ่งจะระบุชื่อแอททริบิวต์ และค่าเฉพาะที่ต้องการดูข้อมูล
โดยมีเครื่องหมายที่ประกอบการระบุเงื่อนไข เช่น = (เท่ากับ) <
(น้อยกว่า) > (มากกว่า) <> (ไม่เท่ากับ) เป็นต้น
ในกรณีที่มีเงื่อนไขมากกว่าหนึ่งเงื่อนไขอาจใช้คำว่า OR (หรือ) AND (และ)
ประกอบกันเป็นเงื่อนไขที่ต้องการได้
ตัวอย่าง จากตารางให้แสดงรายละเอียดของนักศึกษาที่อยู่ นครราชสีมา
นักศึกษา
นักศึกษา WHERE จังหวัด = 'นครราชสีมา'
ผลที่ได้ ดังนี้
นักศึกษา
3.4.2. Project
คำว่า Project เป็นโอเปอเรเตอร์ทางคณิตศาสตร์ที่ใช้ในการแสดงข้อมูลเพียงบางแอททริบิวต์ จากรีเลชั่นหนึ่ง ๆ ซึ่งการแสดงข้อมูลอาจจะเป็นแบบมีเงื่อนไขหรือไม่มีก็ได้
รูปแบบ
หรือ
ตัวอย่าง จากตารางนักศึกษาที่ผ่านมา ให้แสดงชื่อจังหวัดที่นักศึกษาอยู่
นักศึกษา [จังหวัด]
ผลที่ได้ ดังนี้
ตัวอย่าง จากตารางนักศึกษาที่ผ่านมา ให้แสดงชื่อนักศึกษาและชื่อจังหวัดเฉพาะนครราชสีมา
(นักศึกษา WHERE จังหวัด = 'นครราชสีมา' [ชื่อ,จังหวัด]
ผลที่ได้ ดังนี้
3.4.3. Product
Product หรือ Cartesian Product เป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทุกกรณีของการ จับคู่กันระหว่าง 2 รีเลชัน ดังตัวอย่างรูปที่ 3.7
รูปแบบ
จากตารางต่อไปนี้
นักศึกษา TIMES วิชา
ผลที่ได้คือ
หรือแสองสมการตามรูปที่ 3.7
รูปที่ 3.7 การกระทำ Product
3.4.4. Union
คือ การแสดงข้อมูลตามลักษณะทฤษฎีการ Union ของเซต
คือส่วนของข้อมูลทูเพิลที่ต่างกัน ของรีเลชัน จะนำมาทั้งหมด
ส่วนข้อมูลทูเพิลที่เหมือนกันของรีเลชันจะนำมาจากรีเลชันเดียว
โดยรีเลชั่นที่จะมา Union กัน ต้องเป็นรีเลชั่นที่ไปกันได้ (Compatible
Relation) นั่นคือ
จะต้องมีจำนวนและชื่อแอททริบิวต์ที่เหมือนกันและจัดเรียงแอททริบิวต์ในตาราง
ที่เหมือนกัน (จากซ้ายไปขวา) ดังตัวอย่างรูปที่ 3.8
ข้อมูลส่วนที่แรเงาคือข้อมูลผลลัพธ์ของการทำ Union
รูปที่ 3.8 การกระทำ Union
รูปแบบ
ตัวอย่าง จากตาราง A และ B เป็นดังนี้ คือ
A
B
A UNION B
ผลที่ได้คือ
3.4.5. Intersection
คำว่า Intersection
เป็นโอเปอเรเตอร์ทางคณิตศาสตร์ที่ใช้ในการแสดงข้อมูลที่มีอยู่ในทั้งสองรีเล
ชั่น หรือมากกว่า โดยรีเลชั่นที่จะมา Intersection
กันจะเป็นรีเลชั่นที่ไปกันได้ (Compatible Relation) ดังตัวอย่างรูปที่ 3.9
ข้อมูลส่วนที่แรเงาคือข้อมูลผลลัพธ์ของการทำ Intersection
รูปที่ 3.9 การกระทำ Intersection
รูปแบบ
จากตัวอย่างตาราง A และ B ที่ผ่านมา
A INTERSECT B
ผลที่ได้คือ
3.4.6. Difference
คือการแสดงข้อมูลทูเพิลของรีเลชัน ซึ่งไม่มีอยู่ในอีกรีเลชันหนึ่ง ตามทฤษฎีการ Difference ของเซต เช่นถ้านำข้อมูล รีเลชัน A - รีเลชัน B ข้อมูลที่ได้คือข้อมูลของรีเลชัน A ที่ไม่มีในรีเลชัน B ซึ่งจะให้ผลลัพธ์ที่แตกต่างกันกับ รีเลชัน B - รีเลชัน A โดยที่รีเลชั่นทั้งสองเป็นรีเลชั่นที่ไปกันได้ (Compatible Relation) ดังตัวอย่างรูปที่ 3.10 ซึ่งผลลัพธ์ของการทำ Difference คือส่วนที่แรเงา
รูปที่ 3.10 การกระทำ Difference
รูปแบบ
จากตัวอย่างตาราง A และ B ที่ผ่านมา
A MINUS B
ผลที่ได้คือ
3.4.7. Join
เป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมดที่เกิดจากการเชื่อมโยง ข้อมูลของ 2 รีเลชั่น ที่มีค่าของข้อมูลใน Attribute ที่กำหนดเหมือนกันโดย Attribute นี้อาจเป็นเพียง Attribute เดียวหรือมากกว่าก็ได้ แต่ที่สำคัญ Attribute นี้ จะต้องมีชื่อที่เหมือนกัน และมี Domain ของข้อมูลเดียวกัน
รูปแบบ
ตัวอย่างจาก ตาราง X และ Y ที่กำหนดให้ต่อไปนี้
X JOIN Y
ผลที่ได้คือ
เมื่อทำคำสั่ง X JOIN Y เนื่องจากมีค่าของแอททริบิวต์ "City" ที่เหมือนกัน
จึงใช้ Attribute นี้ เชื่อมโยงข้อมูล เช่นถ้าพิจารณาเฉพาะทูเพิลของ
"B001" ของรีเลชั่น X ซึ่งมีค่าแอททริบิวต์ "City" เท่ากับ "Korat" มา Join
กับทูเพิลต่าง ๆ ในรีเลชั่น Y ผลที่ได้ ได้แก่ทุก ๆ ทูเพิลในรีเลชั่น Y
ที่มีค่าแอททริบิวต์ "City" เท่ากับ "Korat"
ในการ Join ระหว่างรีเลชั่นใด ๆ นั้น ลำดับในการ Join จะไม่มีผลต่อผลลัพธ์ที่เกิดจากการ Join นั้น ดังนั้น ไม่ว่าจะใช้คำสั่ง X JOIN Y หรือ Y JOIN X ย่อมให้ผลลัพธ์เช่นเดียวกัน
3.4.8. Division เป็นการแสดงข้อมูลจากสองรีเลชั่น โดยที่รีเลชั่นทั้งสองมีแอททริบิวต์อย่างน้อยหนึ่งแอททริบิวต์ที่เหมือนกัน ผลลัพธ์ที่ได้ จะเป็นค่าของแอททริบิวต์จากรีเลชั่นที่มีจำนวนแอททริบิวต์มากกว่า ซึ่งเป็นค่าของแอททริบิวต์หนึ่งที่มีค่าหนึ่งที่จับคู่ตรงกับทุกค่าของแอ ททริบิวต์ที่เหมือนกันนี้ในอีกรีเลชั่นที่มีแอททริบิวต์น้อยกว่า รูปแบบ
ตัวอย่าง จากตาราง O และ P
ตัวอย่าง ถ้ารีเลชั่น P คือ
ตัวอย่าง ถ้ารีเลชั่น P คือ
ระบบฐานข้อมูลเชิงสัมพันธ์ (Relational Database) เป็นฐานข้อมูลที่ใช้โมเดลเชิงสัมพันธ์ (Relational Database Model) ซึ่งผู้คิดค้นโมเดลเชิงสัมพันธ์นี้คือ Dr. E.F. Codd โดยใช้หลักพื้นฐานทางคณิตศาสตร์ เนื่องด้วยแนวคิดของแบบจำลองแบบนี้มีลักษณะที่คนใช้กันทั่วกล่าวคือมีการ เก็บเป็นตาราง ทำให้ง่ายต่อการเข้าใจและการประยุกต์ใช้งาน ด้วยเหตุนี้ ระบบฐานข้อมูลแบบนี้จึงที่ได้รับความนิยมมากที่สุด ในแง่ของ entity แบบจำลองแบบนี้คือ แฟ้มข้อมูลในรูปตาราง และ attribute ก็เปรียบเหมือนเขตข้อมูล ส่วนความสัมพันธ์คือความสัมพันธ์ระหว่าง entity ฐานข้อมูลเชิงสัมพันธ์ คือ การเก็บข้อมูลในรูปของตาราง (Table) หลายๆตารางที่มีความสัมพันธ์กัน ในแต่ละตารางแบ่งออกเป็นแถวๆ และในแต่ละแถวจะแบ่งเป็นคอลัมน์ (Column) ในทางทฤษฎีจะมีคำศัพท์เฉพาะแตกต่างออกไป เนื่องจากแบบจำลองแบบนี้เกิดจากทฤษฎีทางคณิตศาสตร์เรื่องเซ็ท (Set) ดังนั้น เราจะมีคำศัพท์เฉพาะดังตารางที่ 3.1นี้
ตารางที่ 3.1 คำศัพท์เฉพาะที่ใช้ในระบบฐานข้อมูลเชิงสัมพันธ์
ศัพท์เฉพาะ | ศัพท์ทั่วไป |
---|---|
รีเลชั่น (Relation) | ตาราง (Table) |
ทูเปิล (Tuple) | แถว (Row) หรือ เรคคอร์ด (Record) หรือ ระเบียน |
แอททริบิวท์ (Attribute) | คอลัมน์ (Column) หรือฟิลด์ (Field) |
คาร์ดินัลลิติ้ (Cardinality) | จำนวนแถว (Number of rows) |
ดีกรี (Degree) | จำนวนแอททริบิวท์ (Number of attribute) |
คีย์หลัก (Primary key) | ค่าเอกลักษณ์ (Unique identifier) |
โดเมน (Domain) | ขอบข่ายของค่าของข้อมูล (Pool of legal values) |
1. ส่วนที่เกี่ยวข้องกับโครงสร้างของข้อมูล
2. ส่วนที่เกี่ยวกับการควบคุมความถูกต้องให้กับข้อมูล
3. ส่วนในการจัดการกับข้อมูล
3.2. โครงสร้างของข้อมูล (Data Structure)
3.2.1. Relationโครงสร้างของฐานข้อมูลเชิงสัมพันธ์ จะอยู่ในลักษณะของตาราง 2 มิติ ประกอบด้วยทางด้านแถว และคอลัมน์ ซึ่งจะเรียกว่า รีเลชัน (Relation) โดยทั่ว ๆ ไป Relation หนึ่ง ๆ จะมีคุณสมบัติต่าง ๆ ดังนี้
1) ไม่มี Tuples คู่ใด ๆ เลยที่ซ้ำกัน (No duplicate tuples)ชนิดของ Relations
2) ลำดับที่ของ Tuples ไม่มีความสำคัญ
3) ลำดับที่ของ Attributes ไม่มีความสำคัญ
4) ค่าของ Attribute จะเป็นค่าเดี่ยว ๆ (Atomic) นั่นคือ ค่าของข้อมูลที่ปรากฏอยู่ในตารางจะเป็นค่า ๆ เดียว เป็นลิสต์ของค่าหลาย ๆ ค่าไม่ได้ ซึ่ง Relation ที่มีคุณสมบัติข้อนี้จะถูกเรียกว่าเป็น Relation ที่อยู่ในรูปแบบ Normal form
5) ค่าของข้อมูลในแต่ละ Attribute จะบรรจุค่าของข้อมูลประเภทเดียวกัน
ในระบบจัดการฐานข้อมูลทั่ว ๆ ไป Relation อาจจำแนกออกได้เป็น 2 ประเภท ดังนี้คือ
1) Relation หลัก (Base Relation)
เป็น Relation ที่ถูกกำหนดขึ้นเพื่อเก็บข้อมูลและเพื่อนำข้อมูลไปใช้เมื่อมีการสร้าง Relation โดยใช้ Data Definition Language เช่น ใน SQL คำสั่ง CREATE TABLE เป็นการสร้าง Relation หลัก หลังจากนั้นก็จะทำการเก็บข้อมูลเพื่อการเรียกใช้ข้อมูลในภายหลัง Relation หลักจะเป็นตารางที่จัดเก็บข้อมูลจริงไว้
2) วิว (View) หรืออาจเรียกอีกอย่างหนึ่งว่า Relation สมมุติ (Virtual Relation)
เป็น Relation ที่ถูกสร้างขึ้นตามความต้องการใช้ข้อมูลของผู้ใช้แต่ละคน เนื่องจาก ผู้ใช้แต่ละคนอาจต้องการใช้ข้อมูลในลักษณะที่แตกต่างกัน จึงทำการกำหนดวิวของตัวเองขึ้นมาจาก Relation หลัก เพื่อความสะดวกในการใช้ข้อมูล และช่วยให้การรักษาความปลอดภัยของฐานข้อมูลทำได้ง่ายขึ้น Relation ที่ถูกสมมติขึ้นมานี้จะไม่มีการเก็บข้อมูลจริง ๆ ในระบบฐานข้อมูล
ลักษณะของรีเลชั่นแสดงดังรูปที่ 3.3
3.2.2. Domain
โดเมน (Domain) คือการกำหนดขอบเขตและชนิดของข้อมูลเพื่อป้องกันไม่ให้ข้อมูลที่ผู้ใช้จัด เก็บ มีความผิดพลาดไปจากความเป็นจริงที่ควรจะเป็น ตัวอย่างดังรูปที่ 3.4
3.2.3. คีย์ (Key)
คีย์ คือ แอตทริบิวส์ หรือ กลุ่มของแอตทริบิวส์ที่สามารถแยกความแตกต่างของข้อมูล ในแต่ละทูเพิลได้ หรือแอตทริบิวส์ที่ข้อมูลในแอตทริบิวส์นั้นต้องมีข้อมูลที่ไม่ซ้ำกัน ซึ่งคีย์ มีอยู่หลายชนิดด้วยกัน ได้แก่
3.2.3.1. คีย์อย่างง่าย (Simple key) หมายถึง key ที่ประกอบด้วย attribute เดียว
3.2.3.2. คีย์ประกอบ (Combine key หรือ Composite key) หมายถึง key ที่ ประกอบด้วย attribute มากกว่า 1 attribute
3.2.3.3. คีย์คู่แข่ง (Candidate Key) คือคีย์ที่เล็กที่สุด ที่แยกความแตกต่างของข้อมูล แต่ละทูเพิลได้ ยกตัวอย่างเช่น ในรีเลชัน Student มีข้อมูลที่สามารถเป็นคีย์คู่แข่ง คือแอตทริบิวส์ รหัสนักศึกษา และการใช้แอตทริบิวส์ ชื่อรวมกับนามสกุล ซึ่งทั้งสองแบบสามารถระบุความแตกต่าง ของข้อมูล แต่ละทูเพิลได้
3.2.3.4. คีย์หลัก (Primary Key) คือคีย์คู่แข่งซึ่งได้เลือกมาเพื่อใช้กำหนดให้เป็นค่าคีย์ หลักของ รีเลชัน ซึ่งข้อมูลที่เป็นคีย์หลักนั้นจะต้องมีข้อมูลที่ไม่ซ้ำกัน และมักจะเลือกคีย์คู่แข่ง ที่มีขนาดเล็กมาเป็นคีย์หลัก ตัวอย่างเช่น การเลือกแอตทริบิวส์รหัสนักศึกษา มาเป็นค่าคีย์หลัก เนื่องจาก มีขนาดเล็กกว่าแอตทริบิวส์ ชื่อ รวมกับ นามสกุล ซึ่งจะทำให้การทำงานเร็วกว่า เนื่องจากมีขนาดเล็กกว่า
3.2.3.5. คีย์รอง (Alternate Key หรือ Secondary key) คือคีย์คู่แข่งอื่นๆ ที่ไม่ได้ ถูกเลือกมาใช้งาน ยกตัวอย่างเช่น แอตทริบิวส์ ชื่อรวมกับนามสกุล ซึ่งไม่ได้ถูกเลือกให้เป็นคีย์หลักของรีเลชัน ก็จะกลายเป็น Alternate Key
3.2.3.6. คีย์นอก (Foreign Key)เป็นคีย์ที่ใช้เชื่อมความสัมพันธ์ของรีเลชัน ตัวอย่างแสดงดังรูปที่ 3.5
3.2.3.7. ซุปเปอร์คีย์ (Super key) หมายถึง attribute หรือ เซ็ทของ attribute ที่ สามารถบ่งบอกว่าแต่ละแถว (Tuple) แตกต่างกัน ในทุก ๆ ความสัมพันธ์ จะต้องมีอย่างน้อย หนึ่ง super key ในเซ็ทของ attributes
3.3. กฎที่เกี่ยวข้องกับการรักษาความถูกต้อง
กฎที่ใช้สำหรับรักษาความถูกต้องของข้อมูล แบ่งออกเป็น 2 กฎคือ กฎที่เกี่ยวข้องกับเอนทิตี้ และกฎที่เกี่ยวข้องกับการเชื่อมโยงความสัมพันธ์ของเอนทิตี้ )3.3.1. กฎความบูรณภาพของเอนทิตี้ (Entity Integrity Rule)
กฎความบูรณภาพของเอนทิตี้ เป็นกฎที่ใช้กำหนดเพื่อให้ข้อมูลของเอนทิตี้ มีความถูกต้อง ซึ่งกล่าวไว้ว่า "แอตทริบิวส์ที่ทำหน้าที่เป็นคีย์หลักของรีเลชัน ไม่สามารถมีค่าเป็นค่าว่างได้ (Null Value)" และจะต้องมีคุณสมบัติที่เป็นเอกลักษณ์ (Identity) คือสามารถระบุข้อมูลแอตทริบิวส์อื่นๆ ที่อยู่ในทูเพิลเดียวกันได้
3.3.2. กฎความบูรณภาพของการอ้างอิง (Referential Integrity Rule)
กฎความบูรณภาพของการอ้างอิง คือกฎที่ใช้รักษาความถูกต้องของข้อมูลที่มีความสัมพันธ์กันของเอนทิตี้ ซึ่งได้กล่าวไว้ว่า "ค่าของคีย์นอกในรีเลชัน จะต้องมีข้อมูลอยู่ในอีก รีเลชันหนึ่ง ที่คีย์นอกของรีเลชันนั้นอ้างอิงถึง"
ในบางกรณีคีย์นอกอาจเป็นค่าว่างได้ ถ้านโยบายขององค์กร อนุญาตให้ค่าคีย์นอกเป็น ค่าว่างได้ กรณีหากมีการลบ หรือแก้ไขข้อมูล ในรีเลชันที่ถูกอ้างอิงถึง ซึ่งจะทำให้สูญเสียความบูรณภาพของข้อมูล ดังตัวอย่างรูปที่ 3.6 หากมีการแก้ไขหรือลบข้อมูลของรีเลชัน Major ในแอตทริบิวส์ Major ซึ่งมีความสัมพันธ์อยู่กับรีเลชัน Student จะทำให้ความสัมพันธ์ของข้อมูลเสียหาย ดังนั้นจึงต้องเลือก การกระทำเพื่อไม่ให้ความสัมพันธ์ของข้อมูลสูญเสียไปดังนี้
กรณีการแก้ไขข้อมูล
1. ห้ามทำการแก้ไขข้อมูลในรีเลชันที่ถูกอ้างถึงนั้น เนื่องจากจะทำให้ข้อมูลในรีเลชันที่อ้างอิงมา ไม่สามารถอ้างอิงข้อมูลได้
2. อนุญาตให้ทำการแก้ไขข้อมูลในรีเลชันที่ถูกอ้างอิงถึงได้ แต่จะต้องตามไปแก้ไขข้อมูล ในรีเลชันที่อ้างอิงมาให้ตรงกับข้อมูลที่แก้ไขใหม่ทั้งหมด
3. อนุญาตให้ทำการแก้ไขข้อมูลในรีเลชันที่ถูกอ้างอิงถึงได้ โดยการแก้ไขข้อมูลในรีเลชัน ที่อ้างอิงมาให้มีค่าเป็น ค่าว่าง
1. ห้ามทำการลบข้อมูลในรีเลชันที่ถูกอ้างถึงนั้น เนื่องจากจะทำให้ข้อมูลใน รีเลชันที่อ้างอิงมา ไม่สามารถอ้างอิงข้อมูลได้ค่าว่าง (Null Values)
2. อนุญาตให้ทำการลบข้อมูลในรีเลชันที่ถูกอ้างอิงถึงได้ แต่จะต้อง ตามไปลบข้อมูลในรีเลชัน ที่อ้างอิงมาทั้งหมด
3. อนุญาตให้ทำการลบข้อมูลในรีเลชันที่ถูกอ้างอิงถึงได้ โดยการแก้ไขข้อมูลในรีเลชัน ที่อ้างอิงมาให้มีค่าเป็น ค่าว่าง (Null value)
ค่าของ Attribute อาจจะเป็นค่าว่าง (Null) คือ ไม่มีค่าหรือยังไม่ทราบค่าได้ ตัวอย่างเช่น จำนวนไข่ของนกกระจอกเทศ จะสามารถบอกได้เมื่อนกกระจอกเทศออกไข่แล้ว แต่ยังไม่ทราบค่า ในขณะที่จำนวนไข่ของช้างนั้นไม่มีค่า เป็นต้น
3.4. การจัดการกับข้อมูล (Data manipulation)
Dr. E.F. Codd ได้นำทฤษฎีของเซท ซึ่งเป็นทฤษฎีทางคณิตศาสตร์มาใช้ในการจัดการกับ ข้อมูลของฐานเชิงสัมพันธ์ ซึ่งมีอยู่หลายการกระทำด้วยกัน ในบทนี้จะกล่าวโดยย่อๆ เท่านั้น เนื่องจากเป็นเนื้อหาทางทฤษฎี ซึ่งการนำไปใช้งานจริงนั้น จะพูดถึงในบทที่เกี่ยวกับคำสั่งที่ใช้ จัดการฐานข้อมูล ซึ่งเนื้อหาจะมีความใกล้เคียงกัน การกระทำเหล่านี้ได้แก่ 3.4.1. Restrictคำว่า Restrict เป็นโอเปอเรเตอร์ทางคณิตศาสตร์ที่ใช้ในการเลือกข้อมูลจากรีเลชั่นหนึ่ง ๆ ที่มีเงื่อนไขตรงตามที่ระบุไว้ กล่าวอีกนัยหนึ่งคือ ใช้ในการแสดงข้อมูลของทูเพิลที่เป็นไปตามเงื่อนไขที่ระบุไว ้
รูปแบบ
ชื่อรีเลชั่น WHERE <COMPARISION> |
ตัวอย่าง จากตารางให้แสดงรายละเอียดของนักศึกษาที่อยู่ นครราชสีมา
นักศึกษา
รหัส | ชื่อ | จังหวัด |
---|---|---|
B001 | แดง | นครราชสีมา |
B002 | ดำ | กรุงเทพฯ |
B003 | เขียว | สระบุรี |
B004 | ขาว | นครราชสีมา |
ผลที่ได้ ดังนี้
นักศึกษา
รหัส | ชื่อ | จังหวัด |
---|---|---|
B001 | แดง | นครราชสีมา |
B004 | ขาว | นครราชสีมา |
3.4.2. Project
คำว่า Project เป็นโอเปอเรเตอร์ทางคณิตศาสตร์ที่ใช้ในการแสดงข้อมูลเพียงบางแอททริบิวต์ จากรีเลชั่นหนึ่ง ๆ ซึ่งการแสดงข้อมูลอาจจะเป็นแบบมีเงื่อนไขหรือไม่มีก็ได้
รูปแบบ
ชื่อรีเลชั่น [ชื่อแอตทริบิวต์ 1, ชื่อแอตทริบิวต์ 2, ...] |
ชื่อรีเลชั่น WHERE <COMPARISION> [ชื่อแอตทริบิวต์ 1, ...] |
นักศึกษา [จังหวัด]
ผลที่ได้ ดังนี้
จังหวัด |
---|
นครราชสีมา |
กรุงเทพฯ |
สระบุรี |
นครราชสีมา |
(นักศึกษา WHERE จังหวัด = 'นครราชสีมา' [ชื่อ,จังหวัด]
ผลที่ได้ ดังนี้
ชื่อ | จังหวัด |
---|---|
แดง | นครราชสีมา |
ขาว | นครราชสีมา |
3.4.3. Product
Product หรือ Cartesian Product เป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทุกกรณีของการ จับคู่กันระหว่าง 2 รีเลชัน ดังตัวอย่างรูปที่ 3.7
รูปแบบ
ชื่อรีเลชั่นแรก TIMES ชื่อรีเลชั่นสอง] |
ผลที่ได้คือ
ชื่อรีเลชั่นแรก UNION ชื่อรีเลชั่นสอง |
A
รหัส | ชื่อ | จังหวัด |
---|---|---|
B001 | แดง | นครราชสีมา |
B002 | ดำ | กรุงเทพฯ |
B003 | เขียว | สระบุรี |
B004 | ขาว | นครราชสีมา |
รหัส | ชื่อ | จังหวัด |
---|---|---|
B001 | แดง | นครราชสีมา |
B005 | ฝน | กรุงเทพฯ |
ผลที่ได้คือ
รหัส | ชื่อ | จังหวัด<>/th> |
---|---|---|
B001 | แดง | นครราชสีมา |
B002 | ดำ | กรุงเทพฯ |
B003 | เขียว | สระบุรี |
B004 | ขาว | นครราชสีมา |
B005 | ฝน | กรุงเทพ |
ชื่อรีเลชั่นแรก INTERSECT ชื่อรีเลชั่นสอง |
A INTERSECT B
ผลที่ได้คือ
รหัส | ชื่อ | จังหวัด<>/th> |
---|---|---|
B001 | แดง | นครราชสีมา |
3.4.6. Difference
คือการแสดงข้อมูลทูเพิลของรีเลชัน ซึ่งไม่มีอยู่ในอีกรีเลชันหนึ่ง ตามทฤษฎีการ Difference ของเซต เช่นถ้านำข้อมูล รีเลชัน A - รีเลชัน B ข้อมูลที่ได้คือข้อมูลของรีเลชัน A ที่ไม่มีในรีเลชัน B ซึ่งจะให้ผลลัพธ์ที่แตกต่างกันกับ รีเลชัน B - รีเลชัน A โดยที่รีเลชั่นทั้งสองเป็นรีเลชั่นที่ไปกันได้ (Compatible Relation) ดังตัวอย่างรูปที่ 3.10 ซึ่งผลลัพธ์ของการทำ Difference คือส่วนที่แรเงา
ชื่อรีเลชั่นแรก MINUS ชื่อรีเลชั่นสอง |
A MINUS B
ผลที่ได้คือ
รหัส | ชื่อ | จังหวัด<>/th> |
---|---|---|
B002 | ดำ | กรุงเทพฯ |
B003 | เขียว | สระบุรี |
B004 | ขาว | นครราชสีมา |
3.4.7. Join
เป็นการกระทำเพื่อแสดงข้อมูลที่เป็นไปได้ทั้งหมดที่เกิดจากการเชื่อมโยง ข้อมูลของ 2 รีเลชั่น ที่มีค่าของข้อมูลใน Attribute ที่กำหนดเหมือนกันโดย Attribute นี้อาจเป็นเพียง Attribute เดียวหรือมากกว่าก็ได้ แต่ที่สำคัญ Attribute นี้ จะต้องมีชื่อที่เหมือนกัน และมี Domain ของข้อมูลเดียวกัน
รูปแบบ
ชื่อรีเลชั่น JOIN ชื่อรีเลชั่น |
ผลที่ได้คือ
ในการ Join ระหว่างรีเลชั่นใด ๆ นั้น ลำดับในการ Join จะไม่มีผลต่อผลลัพธ์ที่เกิดจากการ Join นั้น ดังนั้น ไม่ว่าจะใช้คำสั่ง X JOIN Y หรือ Y JOIN X ย่อมให้ผลลัพธ์เช่นเดียวกัน
3.4.8. Division เป็นการแสดงข้อมูลจากสองรีเลชั่น โดยที่รีเลชั่นทั้งสองมีแอททริบิวต์อย่างน้อยหนึ่งแอททริบิวต์ที่เหมือนกัน ผลลัพธ์ที่ได้ จะเป็นค่าของแอททริบิวต์จากรีเลชั่นที่มีจำนวนแอททริบิวต์มากกว่า ซึ่งเป็นค่าของแอททริบิวต์หนึ่งที่มีค่าหนึ่งที่จับคู่ตรงกับทุกค่าของแอ ททริบิวต์ที่เหมือนกันนี้ในอีกรีเลชั่นที่มีแอททริบิวต์น้อยกว่า รูปแบบ
ชื่อรีเลชั่น DIVIDEBY ชื่อรีเลชั่น |
0 comments:
Post a Comment