ฐานข้อมูลเชิงสัมพันธ์ Relational Database
ระบบฐานข้อมูล (Database System) ประเภทของฐานข้อมูลแบ่ง 3 ประเภทได้แก่ โครงสร้างแบบตามลำดับชั้น (Hierarchical Model) โครงสร้างแบบเครือข่าย (Network Model) โครงสร้างแบบเชิงสัมพันธ์ (Relational Model)
ระบบฐานข้อมูล (Database System) โครงสร้างแบบตามลำดับชั้น (Hierarchical Model) ระดับรูทโหนด (root node) มหาวิทยาลัยมหาสารคาม โหนดพ่อแม่ (parent node) คณะวิทยาการสารสนเทศ คณะการบัญชีและการจัดการ โหนดลูก (Child node) ICT MC CS BBA B.Econ โครงสร้างแบบตามลำดับชั้น (Hierarchical Model)
ระบบฐานข้อมูล (Database System) โครงสร้างแบบเครือข่าย (Network Model) คณะวิทยาการสารสนเทศ วิชา Database วิชา Math นิสิต 1 นิสิต 2 วิชา Advance Database นิสิต 3 นิสิต n วิชา ITM ……. รูปที่ 1_2 โครงสร้างแบบเครือข่าย (Network Model)
ระบบฐานข้อมูล (Database System) โครงสร้างแบบเชิงสัมพันธ์ (Relational Model) โครงสร้างแบบแบบเชิงสัมพันธ์ (Relational Model)
ฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูลเชิงสัมพันธ์เป็นรูปแบบของฐานข้อมูลที่คิดค้นโดย อี เอฟ คอดด์ (E.F. Codd) เมื่อปี 1970 ฐานข้อมูลเชิงสัมพันธ์เป็นรูปแบบฐานข้อมูลที่เข้าใจง่ายสำหรับผู้ใช้ ไม่ซับซ้อน เป็นรูปแบบฐานข้อมูลที่มีระบบจัดการฐานข้อมูล (Database Management Systems: DBMS) สนับสนุนในการจัดการฐานข้อมูลมากมาย อาทิเช่น DB2, ORACLE, INFORMIX, Power-Builder, INGRES ทำให้การจัดการฐานข้อมูลเชิงสัมพันธ์ สามารถตอบสนองความต้องการของผู้ใช้ในเรื่องการจัดการฐานข้อมูลของระบบได้อย่างมีประสิทธิภาพ Relational Database
ฐานข้อมูลเชิงสัมพันธ์ โมเดลนี้มีวัตถุประสงค์เพื่อรักษาความเป็นอิสระของข้อมูล (Data Independence) และความเป็นอิสระของโครงสร้างข้อมูลในแต่ละระดับ (Structural Independence) กล่าวคือโปรแกรมประยุกต์ใช้งานจะไม่ถูกกระทบ หากมีการปรับเปลี่ยนสถาปัตยกรรมด้านกายภาพ เช่นการปรับเปลี่ยนโครงสร้างการจัดเก็บหรือเรียกใช้ข้อมูลจากแฟ้มในหน่วยความจำสำรองก็จะไม่กระทบโปรแกรมประยุกต์ใช้งาน มีคุณสมบัติที่ช่วยลดความซ้ำซ้อน ตลอดจนปัญหาที่เกิดจากการปรับปรุง เพิ่ม ลบข้อมูล ด้วยแนวคิดในการทำให้เป็นบรรทัดฐาน (Normalization) มาใช้ในการออกแบบ Relational Database
ฐานข้อมูลเชิงสัมพันธ์ (Relational database) ฐานข้อมูลเชิงสัมพันธ์ นั้นจะอยู่ในรูปแบบของตาราง 2 มิติประกอบ ด้วย แถว (ROW) และ คอลัมน์ (COLUMN) คอลัมน์ (COLUMN) แถว (ROW)
โครงสร้างฐานข้อมูลเชิงสัมพันธ์ เป็นฐานข้อมูลที่มีโครงสร้างข้อมูลแบบ Relational Model คือฐานข้อมูลจะประกอบด้วยตาราง (Relation) ที่มีความสัมพันธ์กัน ภาพที่ 3.1 โครงสร้างของตาราง Relational Database
โครงสร้างฐานข้อมูลเชิงสัมพันธ์ Relation เป็นตารางสองมิติ ที่ประกอบด้วย Tuple และ Attribute เพื่อจัดเก็บข้อมูลต่าง ๆ รูปแบบของ Relation สามารถเขียนแทนด้วยสัญลักษณ์ดังนี้ Relational Database
โครงสร้างฐานข้อมูลเชิงสัมพันธ์ Attribute เป็นคอลัมน์ใน Relation จากภาพที่ 5 ประกอบด้วย 4 Attribute Relational Database
โครงสร้างฐานข้อมูลเชิงสัมพันธ์ Tuple เป็นแถวในแต่ละ Relation จากภาพที่ 5 ประกอบด้วย 5 Tuple ประกอบด้วยตัวอย่างข้อมูลดังนี้ Relational Database
โครงสร้างฐานข้อมูลเชิงสัมพันธ์ Domain เป็นการกำหนดขอบเขตค่าข้อมูลและชนิดข้อมูลของแต่ละ Attribute ที่สามารถเป็นไปได้ จากภาพที่ 5 Domain ของ SEX คือกลุ่มของเพศทั้งหมดที่เป็นไปได้คือ M และ F เท่านั้น Relational Database
โครงสร้างฐานข้อมูลเชิงสัมพันธ์ Degree เป็นจำนวนของ Attribute ใน Relation ค่าของดีกรีมักจะไม่มีการเปลี่ยนแปลง จากภาพที่ 3.1 ประกอบด้วย 4 Degree Relational Database
โครงสร้างฐานข้อมูลเชิงสัมพันธ์ Cardinality เป็นจำนวน Tuple ที่บรรจุอยู่ใน Relation และมีความสัมพันธ์ใน Tuple ของอีก Relation หนึ่ง Relational Database
โครงสร้างฐานข้อมูลเชิงสัมพันธ์ ศัพท์ทางเทคนิคในฐานข้อมูลจะมีชื่อเรียกที่แตกต่างกัน แต่มีความหมายเดียวกัน ดังนี้ Relational Database
ข้อดีของฐานข้อมูลเชิงสัมพันธ์ เป็นโมเดลที่สอดคล้องกับหลักการของฐานข้อมูล คือผู้ใช้ไม่ต้องยุ่งเกี่ยวในเรื่องของโครงสร้างทางกายภาพในระดับภายใน (Internal Level) เพราะตารางเป็นข้อมูลในระดับความคิด สามารถใช้แบบสอบถาม (Query) ในลักษณะของการประมวลผลหลายรายการข้อมูล (Record) ได้ในครั้งเดียว ใช้ภาษาแบบสอบถามที่เป็นมาตรฐานคือ SQL (Structured Query Language) Relational Database
คุณสมบัติของ Relation (Properties of Relations) Attribute ของ Relation มีได้เพียงค่าเดียว (Single Value) ชื่อใน Attribute ต้องแตกต่างกัน ซ้ำกันไม่ได้ ค่าของข้อมูลใน Attribute เป็นไปตามข้อกำหนดของ Domain ใน Attribute นั้น ๆ การเรียงลำดับของ Attribute ไม่มีความสำคัญใดๆ Tuple ต้องมีความแตกต่างกัน จะไม่มี Tuple ที่ซ้ำกัน การเรียงลำดับของ Tuple ไม่มีความสำคัญใด ๆ Relational Database
ประเภทของรีเลชั่น Relation ที่ถูกกำหนดขึ้นเพื่อเก็บข้อมูลเพื่อนำไปใช้ 1. รีเลชั่นหลัก (Base Relation) Relation ที่ถูกกำหนดขึ้นเพื่อเก็บข้อมูลเพื่อนำไปใช้ โดย Base Relation จะเป็น relation ที่เก็บข้อมูลอยู่จริง
ประเภทของรีเลชั่น 2. วิว (View) Relation ที่ถูกสร้างขึ้นตามความต้องการของผู้ใช้งานแต่ล่ะคน โดยจะกำหนด view ของตนขึ้นมาจากรีเลชั่นหลัก
Virtual Table Or Derived Table
ความสัมพันธ์ของข้อมูล ความสัมพันธ์ของข้อมูลแบ่งเป็น 3 ประเภท คือ ซึ่งในการออกแบบ ฐานข้อมูลที่มีโครงสร้างเชิงสัมพันธ์ หรือ (Relation database) ก็คือการออกแบบ เทเบิลเพื่อเก็บข้อมูลกลุ่มต่าง ๆ โดยจะต้องสามารถกำหนดความสัมพันธ์ให้ระหว่างกลุ่มข้อมูลเหล่านั้น 1) ความสัมพันธ์แบบ 1:1 (One to One ) 2) ความสัมพันธ์แบบ 1:N (One to Many) 3) ความสัมพันธ์แบบ M:N (Many to Many)
คีย์ (Keys) เมื่อฐานข้อมูลมีขนาดใหญ่ก็จะมีข้อมูลจำนวนมากขึ้น ข้อมูลเหล่านี้อาจมีค่าแตกต่างกัน คล้ายกัน หรือแม้กระทั่งเหมือนกัน ทำให้การแยกแยะโดยอาศัยเพียงตัวข้อมูลอย่างเดียวทำได้อย่างยากลำบาก ดังนั้นจึงมีการกำหนดค่า Keys ประจำข้อมูลเพื่อทำให้การแยกแยะข้อมูลในฐานข้อมูลเป็นไปอย่างถูกต้อง คุณสมบัติหนึ่งที่สำคัญของความสัมพันธ์ก็คือ ความเป็นเอกลักษณ์ (Uniqueness property) สิ่งที่ใช้กำหนดความเป็นเอกลักษณ์ของแถวในความสัมพันธ์ เรียกว่า Keys Relational Database
ประเภทของคีย์ Keys เพื่อเพิ่มประสิทธิภาพในการจัดการฐานข้อมูล เช่นการอ้างอิง การค้นหา การแก้ไขข้อมูลในแถวใด ๆ หรือการกำหนดความสัมพันธ์ระหว่าง เทเบิล ประเภทของคีย์ อาจแบ่งเป็น 5 ประเภทหลัก คือ คีย์หลัก (Primary Key) คีย์ผสม (Composite Key หรือ Compound Key) 3) คีย์ลำดับรอง (Secondary Key) 4) คีย์คู่แข่ง (Candidate Key) 5) คีย์นอก (Foreign Key)
คีย์ (Keys) คีย์หลัก (Primary Key: PK) Key ที่ใช้ในการอ้างถึง Entity ในฐานข้อมูล โดยที่ Key นั้นจะต้องได้มาจาก Attribute ที่มีคุณสมบัติของข้อมูลที่เป็นค่าเอกลักษณ์ (Unique) หรือมีค่าที่ไม่ซ้ำซ้อนกัน Primary Key เป็นข้อมูลสำคัญที่จะทำให้การเข้าถึงข้อมูลบนฐานข้อมูลเป็นไปได้อย่างรวดเร็ว ดังนั้นผู้ใช้จึงควรกำหนด Primary Key ให้ชัดเจนตั้งแต่ขั้นตอนออกแบบฐานข้อมูล Relational Database
คีย์ (Keys) คีย์ผสม (Composite Key) ใน Relation อาจประกอบด้วย Attribute ที่มีคุณสมบัติเป็น Primary Key ได้มากกว่า 1 Attribute ดังนั้นเมื่อนำ Attribute มารวมกัน จะทำให้ Attribute นั้นมีคุณสมบัติที่เป็นเอกลักษณ์ Relational Database
คีย์ (Keys) คีย์รอง (Secondary Key) หมายถึง Attribute ที่ไม่ใช่ Primary Key แต่สามารถใช้ในการสืบค้นข้อมูล จัดเรียงข้อมูล จาก Relation โดยที่ Secondary Key ไม่จำเป็นต้องมีค่าเป็นเอกลักษณ์ Relational Database
คีย์ (Keys) คีย์คู่แข่ง (Candidate Key) หมายถึง Attribute ที่มีคุณสมบัติที่สามารถนำมาเป็นคีย์หลักได้ ซึ่งสามารถประกอบด้วย Attribute เดียว หรือมากกว่า 1 Attribute ก็ได้ แต่ถ้าประกอบด้วย Attribute มากกว่า 1 Attribute จะเรียกว่า Composite Key ดังนั้นจึงไม่อนุญาตให้ส่วนประกอบของ Key เป็นค่าว่างได้ (Null Value) Relational Database
คีย์ (Keys) คีย์นอก (Foreign Key) หมายถึง Attribute ใน Relation หนึ่งที่ใช้อ้างอิงไปยัง Attribute ที่ทำหน้าที่เป็น Primary Key ของอีก Relation หนึ่งที่มีความสัมพันธ์กัน Relational Database
ตัวอย่าง Key แบบต่าง ๆ Relational Database
กฎความคงสภาพ (Integrity Rule) หมายถึงกฎเกณฑ์ที่กำหนดขึ้นมาสำหรับรักษาคุณสมบัติของความเป็นตาราง และความสัมพันธ์ระหว่างตาราง แบ่งออกเป็น 2 แบบคือ กฎความคงสภาพของ Entity (Entity Integrity Rule) กฎความคงภาพของการอ้างอิง (Referential Integrity Rule) Relational Database
กฎความคงสภาพ (Integrity Rule) กฎความคงสภาพของ Entity (Entity Integrity Rule) ใช้สำหรับรักษาคุณสมบัติของความเป็น Relation นั่นคือ Attribute ที่เป็น Primary Key จะต้องมีค่าที่มีความเป็นเอกลักษณ์ และเป็นค่าว่างไม่ได้ หมายถึง Primary Key จะไม่มีค่าไม่ได้ Relational Database
กฎความคงสภาพ (Integrity Rule) กฎความคงภาพของการอ้างอิง (Referential Integrity Rule) ใช้สำหรับรักษาความสัมพันธ์ระหว่าง Relation นั่นคือ ถ้า R1 เป็น Relation ที่มี Foreign Key ที่อ้างอิงถึง Primary Key ใน Relation R2 ค่าของ Foreign Key ใน R1 จะต้องมีค่าเท่ากับ Primary Key ของ Tuple ใด Tuple หนึ่งใน R2 หมายถึงค่าของ Foreign Key จะต้องสามารถอ้างอิงให้ตรงกับค่าของ Primary Key ได้ จึงจะอ้างอิงข้อมูลระหว่างสอง Relation ได้ Relational Database
กฎความคงสภาพ (Integrity Rule) Relational Database
การรักษากฎความคงสภาพ แบ่งออกเป็น 3 ประเภทคือ กระทำแบบเป็นทอด ๆ (Cascade) ยอมแบบมีเงื่อนไข (Restricted) เปลี่ยนเป็นค่าว่าง (Nullify) Relational Database
การรักษากฎความคงสภาพ กระทำแบบเป็นทอด ๆ (Cascade) เป็นการอนุญาตให้ ลบ หรือแก้ไขข้อมูลของ Primary Key ในตารางที่ถูกอ้างอิงจากตารางอื่น ซึ่ง DBMS จะอนุญาตให้ทำการลบ หรือแก้ไขข้อมูลนั้นได้ แต่ DBMS จะทำการแก้ไข หรือลบข้อมูลในตารางที่มีความสัมพันธ์ทั้งหมด Relational Database
การรักษากฎความคงสภาพ ยอมแบบมีเงื่อนไข (Restricted) การอนุญาตให้ ลบ หรือแก้ไขข้อมูลจะทำได้ก็ต่อเมื่อ ข้อมูลของ Primary Key ใน Relation หนึ่งไม่มีข้อมูลที่ถูกอ้างอิงในอีก Relation หนึ่ง Relational Database
การรักษากฎความคงสภาพ เปลี่ยนเป็นค่าว่าง (Nullify) ถ้าต้องการลบ หรือแก้ไขข้อมูลของ Primary Key ตัว DBMS เปลี่ยนแปลงค่า Foreign Key ของตารางที่อ้างอิง ให้กลายเป็นค่าว่าง Relational Database
Relational Algebra Relational Algebra ใช้ในการจัดการข้อมูลโดยระบุตัวกระทำ (operand) กับความสัมพันธ์ที่ต้องการจัดการ จะได้ผลลัพธ์ออกมาเป็นความสัมพันธ์ใหม่ Relational Algebra เรียกได้อีกอย่างว่าเป็น Relational query language ที่ประกอบไปด้วยรูปแบบที่ใช้ในการจัดการและค้นหาข้อมูลจากฐานข้อมูลเชิงสัมพันธ์ Query language ในที่นี้ไม่ใช่ Programming language ดังนั้นจึงไม่ได้สนับสนุนการคำนวณที่ซับซ้อนนัก แต่สนับสนุนการเข้าถึงข้อมูลขนาดใหญ่ด้วยวิธีง่ายๆ และมีประสิทธิภาพ Relational Database
Query language ที่ใช้กับฐานข้อมูลเชิงสัมพันธ์ มี 2 รูปแบบ Relational Algebra ประกอบด้วยตัวกระทำต่างๆ ซึ่งมีประโยชน์มากในการจัดการฐานข้อมูลเชิงสัมพันธ์ Relational Calculus เป็นภาษาที่อาศัยหลักการทางตรรกะคณิตศาสตร์เพื่อการจัดการข้อมูล Relational Database
Relational Algebra แบ่งตามประเภทการใช้งาน การใช้งานขั้นพื้นฐาน ได้แก่ Selection, Projection Cross-product, Difference, Union การใช้งานขั้นสูง ได้แก่ Intersection, Join, Renaming Relational Database
Relational Algebra แบ่งตามการกระทำกับความสัมพันธ์ Unary operators คือ ตัวกระทำที่ต้องการเพียงความสัมพันธ์เดียว เช่น select, project และ rename Binary operators คือ ตัวกระทำที่ต้องการสองความสัมพันธ์ เช่น Union, Intersection, Difference และ Cartesian-product (Join) Relational Database
Selection แสดงทุกฟิลด์ในตารางตามเงื่อนไขที่กำหนดใช้สัญลักษณ์ (sigma) รูปแบบ เครื่องหมายเปรียบเทียบได้แก่ ตัวกระทำทางตรรกะได้แก่ , , Relational Database
ตัวอย่างการใช้งาน Selection สร้าง Relational Algebra และแสดงผลลัพธ์ในรูปของตาราง Relational Database
ตัวอย่างการใช้งาน Selection จากตาราง Player2000 จงหาผู้เล่นที่เล่นตำแหน่งกองหน้า จะได้ ผลลัพธ์ ได้ Relation ใหม่ หรือ วิว ดังนี้ Relational Database
ตัวอย่างการใช้งาน Selection จากตาราง Player2000 จงหาผู้เล่นที่สูงตั้งแต่ 175 ขึ้นไป และน้ำหนักไม่เกิน 80 ผลลัพธ์ ได้ Relation ใหม่ หรือ วิว ดังนี้ Relational Database
Projection แสดงข้อมูลทุกเรคคอร์ดแต่เลือกมาเป็นบางฟิลด์ (pi) รูปแบบ Relational Database
ตัวอย่างการใช้งาน Projection จากตาราง Player2000 จงแสดง ตำแหน่ง อายุ และส่วนสูง ผลลัพธ์ ได้ Relation ใหม่ หรือ วิว ดังนี้ Relational Database
การใช้ Selection ร่วมกับ Projection จากตาราง Player2000 จงแสดง ชื่อและตำแหน่ง เฉพาะผู้เล่นที่สูงกว่า 170 ผลลัพธ์ ได้ Relation ใหม่ หรือ วิว ดังนี้ Relational Database
Union สัญลักษณ์ที่ใช้ U รูปแบบ R1 U R2 โดย ที่ R1 และ R2 คือรีเลชั่นและต้องมีโครงสร้างเหมือนกัน ผลลัพธ์ที่ได้ คือการนำเรคคอร์ดจากทั้งสองรีเลชั่นมารวมกัน ยกเว้นเรคคอร์ดที่ซ้ำกัน Relational Database
ตัวอย่างการใช้ Union จากตาราง Player2000 และ Player2001 จงหาผลลัพธ์ของ Player2000 U Player2001 ผลลัพธ์ที่ได้ Relational Database
Intersection สัญลักษณ์ที่ใช้ รูปแบบ R1 R2 โดย ที่ R1 และ R2 คือรีเลชั่นและต้องมีโครงสร้างเหมือนกัน ผลลัพธ์ที่ได้ คือเลือกเรคคอร์ดจากทั้งสองรีเลชั่นที่เหมือนกันเท่านั้น Relational Database
ตัวอย่างการใช้ Union จากตาราง Player2000 และ Player2001 จงหาผลลัพธ์ของ ผลลัพธ์ที่ได้ Relational Database
Difference สัญลักษณ์ที่ใช้ - รูปแบบ R1 - R2 โดย ที่ R1 และ R2 คือรีเลชั่นและต้องมีโครงสร้างเหมือนกัน ผลลัพธ์ที่ได้ คือเลือกเรคคอร์ดที่อยู่ใน R1 แต่ไม่อยู่ใน R2 Relational Database
ตัวอย่างการใช้ Difference จากตาราง Player2000 และ Player2001 จงหาผลลัพธ์ของ Player2000 - Player2001 ผลลัพธ์ที่ได้ คือ อยู่ใน Player2000 แต่ไม่อยู่ใน Player2001 Relational Database
Cross-Product สัญลักษณ์ที่ใช้ x รูปแบบ R1 x R2 เป็นการนำแต่ละเรคคอร์ดจาก R1 จับคู่กับทุกเรคคอร์ดใน R2 R1 R2 Relational Database
ตัวอย่างการใช้ Cross-Product จากตาราง R และ S จงหา ผลลัพธ์ของ R x S Relational Database
ตัวอย่างการใช้ Cross-Product ผลลัพธ์ที่ได้ Relational Database
Join ใช้สัญลักษณ์ รูปแบบการใช้งาน คล้ายกับ Cross-Product แต่ต่างกันตรงที่ ต้องตรงเงื่อนไขเท่านั้น ถึงจะจับคู่กัน และใช้กับเฉพาะรีเลชั่นที่มีความสัมพันธ์กันเท่านั้น รูปแบบการใช้งาน R1 R2 ฟิลด์ = ฟิลด์ Relational Database
ตัวอย่างการใช้ Join จงหาผลลัพธ์ของ EMP DEPT Dept = Dept Relational Database
Join ผลลัพธ์ที่ได้ Relational Database