890 likes | 1.48k Views
บทที่ 4 ฐานข้อมูลเชิงสัมพันธ์ ( Relational Database). ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) คิดค้นโดย E.F. Codd เนื่องจากเป็นรูปแบบของฐานข้อมูลที่เข้าใจง่าย ไม่ซับซ้อน และระบบฐานข้อมูลมีเครื่องมือที่ช่วยให้ผู้ใช้สามารถค้นหาปัญหาที่เกิดขึ้นจากการออกแบบได้โดยง่าย
E N D
บทที่ 4 ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) คิดค้นโดย E.F. Codd เนื่องจากเป็นรูปแบบของฐานข้อมูลที่เข้าใจง่าย ไม่ซับซ้อน และระบบฐานข้อมูลมีเครื่องมือที่ช่วยให้ผู้ใช้สามารถค้นหาปัญหาที่เกิดขึ้นจากการออกแบบได้โดยง่าย ระบบฐานข้อมูลในปัจจุบันเป็นระบบฐานข้อมูลเชิงสัมพันธ์เป็นส่วนใหญ่ เช่น Oracle, Foxpro, Access, Ingress เป็นต้น
ศัพท์เทคนิคที่เกี่ยวข้องศัพท์เทคนิคที่เกี่ยวข้อง
ความหมายของรีเลชัน รีเลชัน หมายถึง การรวบรวมข้อมูลจัดเก็บในรูปของตาราง 2 มิติ ประกอบด้วยแอททริบิวต์ ซึ่งแสดงคุณสมบัติของรีเลชันนั้นๆ โดยมีคุณสมบัติดังนี้ 1. แต่ละแถวใช้แทนทัพเพิล (Tuple) หรือเรคคอร์ดในรีเลชัน 2. ลำดับของทัพเพิลไม่มีความสำคัญ 3. ลำดับของแอททริบิวต์ หรือคอลัมน์ไม่มีความสำคัญ 4. ทุกทัพเพิลต้องมีความแตกต่างกันโดยเนื้อหาหรือข้อเท็จจริง หรือ ข้อมูลในแต่ละทัพเพิลต้องไม่ซ้ำกัน
ความหมายของรีเลชัน (ต่อ) 5. แต่ละทัพเพิล(แถว) จะบรรจุข้อมูลเพียงค่าเดียว 6. ค่าที่อยู่ในแต่ละแอตทริบิวต์(คอลัมน์)จะเป็นค่าของ แอตทริบิวต์ที่ระบุในหัวแอตทริบิวต์นั้นๆ 7. ชื่อของแต่ละคอลัมน์ คือ ชื่อของแอตทริบิวต์ซึ่งจะต้อง แตกต่างกัน
ตัวอย่างรีเลชันในฐานข้อมูลเชิงสัมพันธ์ตัวอย่างรีเลชันในฐานข้อมูลเชิงสัมพันธ์ แอตทริบิวต์ รีเลชัน Department ทัพเพิล ภาพ 4.1 รีเลชันในฐานข้อมูลเชิงสัมพันธ์
ความหมายของฐานข้อมูลเชิงสัมพันธ์ความหมายของฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูลเชิงสัมพันธ์ หมายถึง การรวบรวมรีเลชันต่างๆ ที่มีความสัมพันธ์ระหว่างกันเข้าด้วยกัน โดยรีเลชันต่างๆ ได้ผ่านกระบวนการทำรีเลชันให้เป็นบรรทัดฐาน (Normalized) แล้ว เพื่อให้การจัดการฐานข้อมูลเป็นไปอย่างมีประสิทธิภาพ
เอนทิทีและรีเลชันชิพ (entity and relationship) เอนทิตี (Entity) หมายถึง ชื่อของสิ่งใดสิ่งหนึ่ง อยู่ในรูปของคำนาม อาจได้แก่ คน สถานที่ สิ่งของ การกระทำ ที่ต้องการจัดเก็บไว้ เช่น เอนทิตีลูกค้า เอนทิตีพนักงาน เอนทิตีนักศึกษา ซึ่งจะถูกสร้างขึ้นโดยชุดของแอตทริบิวต์ รีเลชันชิพ(Relationship)หมายถึง ความสัมพันธ์ระหว่างเอนทิตี
แอตทริบิวต์ (Attributes) และโดเมน (Domains) แอตทริบิวต์ หมายถึง คุณลักษณะเฉพาะของแต่ละเอนทิตี และค่าในแต่ละแอตทริบิวต์เป็นค่าที่นำมาจากโดเมนใดโดเมนหนึ่งเท่านั้น โดเมน ความหมายที่ 1 คือ ขอบเขตของค่าของข้อมูลในแอตทริบิวต์หนึ่งๆ เช่น วันที่เริ่มเข้ารับการศึกษา จะเป็นค่าวันที่ในปฏิทิน หรือนักศึกษาแต่ละคนอาจสมัครเป็นสมาชิกชมรมใดก็ได้ที่ตนสนใจหรืออาจไม่เป็นสมาชิกชมรมใดเลยก็ได้
โดเมน ความหมายที่ 2 โดเมนคือ เซตของค่าที่เป็นไปได้ในแอตทริ-บิวต์นั้น เช่น โดเมนของแอตทริบิวต์ Location คือค่าที่เป็นไปได้ใน แอตทริบิวต์ Location ดังแสดงในภาพ 4.2 ซึ่งจะไม่สามารถนำค่าอื่นที่ไม่อยู่ในโดเมนที่กำหนด เช่น ขอนแก่น มาใส่ไว้ในแอตทริบิวต์นี้ได้
ตัวอย่างโดเมนของแอตทริบิวต์ตัวอย่างโดเมนของแอตทริบิวต์ Location ค่าที่เป็นไปได้ในแอตทริบิวต์ Location ภาพ 4.2 ตัวอย่างโดเมนของแอตทริบิวต์
คุณสมบัติของค่าแอตทริบิวต์คุณสมบัติของค่าแอตทริบิวต์ ค่าของแอตทริบิวต์ที่จะใส่ลงไปในรีเลชันต้องมีคุณสมบัติดังนี้ เป็นค่าที่เป็นอะตอมมิค (atomic) หมายถึง ค่าที่ไม่สามารถแบ่งย่อยต่อไปอีก ไม่อนุญาตให้มีแอตทริบิวต์ที่มีหลายค่า (multivalued attribute) ซึ่งเป็นคุณสมบัติที่เรียกว่า First Narmal Form)
คุณสมบัติของโดเมน แต่ละโดเมนจะถูกกำหนดด้วยชื่อ, ชนิดข้อมูล (Data type) และรูปแบบ (Format) ดังตัวอย่างภาพที่ 4.3 ภาพ 4.3 คุณสมบัติของโดเมน
การใช้งานโดเมน การหาความสัมพันธ์ในแบบจำลองข้อมูลเชิงสัมพันธ์ ทำได้โดยการเปรียบเทียบค่าของแอตทริบิวต์ที่ใช้ร่วมกัน โดยที่คู่ของค่าเหล่านี้จะมีความหมายก็ต่อเมื่อเป็นค่าที่มาจากโดเมนเดียวกัน ดังตัวอย่างในภาพ 4.4
การใช้งานโดเมน (ต่อ) โดเมน Airport โดเมน time Flight ภาพ 4.4 ตัวอย่างการใช้งานโดเมน
การใช้งานโดเมน (ต่อ) Airport ภาพ 4.4 ตัวอย่างการใช้งานโดเมน (ต่อ)
ดีกรี (Degree) และคาร์ดินัลลิตี (Cardinality) ของรีเลชัน ดีกรีของรีเลชัน หมายถึง จำนวนของแอตทริบิวต์ (คอลัมน์) ในรีเลชันนั้น คาร์ดินัลลิตีของรีเลชัน หมายถึง จำนวนของทัพเพิล(แถว) ในรีเลชันนั้น ดังภาพที่ 4.5
ตัวอย่างดีกรีและคาร์ดินัลลิตีตัวอย่างดีกรีและคาร์ดินัลลิตี ดีกรี =3 คาร์ดินัลลิตี =4 Department
เงื่อนไข (Constrains) เงื่อนไขในฐานข้อมูล หมายถึง การกำหนดคุณสมบัติเพื่อจำกัดว่าข้อมูลชนิดใดบ้างที่จะสามารถนำมาจัดเก็บไว้ได้ในแต่ละคอลัมน์(แอตทริบิวต์) ของฐานข้อมูล เงื่อนไขที่มีมาโดยธรรมชาติของรีเลชันในระบบฐานข้อมูลเชิงสัมพันธ์คือ ลำดับของคอลัมน์(แอตทริบิวต์) ไม่มีความสำคัญ ลำดับของแถว(ทัพเพิล) ไม่มีความสำคัญ รีเลชันต้องประกอบด้วยทัพเพิลที่ไม่ซ้ำกัน
คีย์ (key) คีย์ หมายถึง แอตทริบิวต์ที่สามารถบ่งบอกความแตกต่างของแต่ละทัพเพิลในรีเลชันได้ แอตทริบิวต์ที่เป็นส่วนหนึ่งของคีย์เรียกว่า คีย์แอตทริบิวต์ และคีย์แอตทริบิวต์ที่เกิดจากการนำเอาหลายแอตทริบิวต์มารวมกันเรียกว่า คอมโพสิตคีย์(Composite key)
ซูเปอร์คีย์ (Superkey) คือ แอตทริบิวต์หรือกลุ่มของแอตทริบิวต์ ที่สามารถบ่งบอกความแตกต่างของแต่ละทัพเพิลในรีเลชันได้ ในหนึ่งรีเลชันจะมีซูเปอร์คีย์ได้หลายตัว เช่น จากรีเลชันนักศึกษา ประกอบด้วย นักศึกษา(รหัสนักศึกษา,ชื่อ,ที่อยู่,วันเดือนปีเกิด,เลขที่บัตรประชาชน)
ซูเปอร์คีย์ (Superkey) (ต่อ) รีเลชันนักศึกษา มีซูเปอร์คีย์ได้หลายตัว เช่น รหัสนักศึกษา รหัสนักศึกษา, ชื่อ รหัสนักศึกษา, ชื่อ, ที่อยู่ เลขที่บัตรประชาชน
แคนดิเดตคีย์ (Candidate key) คือ ซูเปอร์คีย์ที่น้อยที่สุดที่สามารถบ่งบอกความแตกต่างของแต่ละทัพเพิลในรีเลชันได้ ในหนึ่งรีเลชันอาจจะมีแคนดิเดตคีย์หลายตัว จากตัวอย่างรีเลชันนักศึกษา มีแคนดิเดตคีย์ 2 ตัว คือ รหัสนักศึกษา และเลขที่บัตรประชาชน
คีย์หลัก (Primary key) คือ แคนดิเดตคีย์ที่ถูกเลือกเพื่อใช้บอกความแตกต่างของแต่ละทัพเพิลในรีเลชัน และต้องไม่มีค่าเป็น null คีย์หลักอาจเกิดจากแอตทริบิวต์เดียวหรือหลายแอตทริบิวต์รวมกันได้
คีย์นอก (Foreign key) คือแอตทริบิวต์ที่ใช้ในการเชื่อมต่อกับรีเลชันอื่นหรือกับตัวมันเองเพื่อแสดงความสัมพันธ์ระหว่างรีเลชัน โดยคีย์นอกสามารถมีค่าซ้ำกันหรือเป็น null ได้ และถ้าไม่เป็น null จะเป็นค่าที่ชี้ไปที่คีย์หลักของรีเลชันที่มีความสัมพันธ์อยู่
คีย์นอก ตัวอย่างคีย์นอก คีย์รอง นักศึกษา แคนดิเดตคีย์ ที่ปรึกษา
คีย์รอง (Secondary key) คือ แอตทริบิวต์หรือกลุ่มของแอตทริบิวต์ที่ใช้ในการเข้าถึงหรือค้นคืนข้อมูลในฐานข้อมูล คีย์รองไม่มีความจำเป็นต้องเป็นเอกลักษณ์ คือสามารถมีค่าซ้ำได้ เช่น การค้นข้อมูลพนักงานที่ต้องการเฉพาะพนักงานที่มีไปรษณีย์ตามที่กำหนดเท่านั้น
อินทิกริตี (Integrity) หมายถึง การควบคุมความถูกต้องต่างๆ ในระบบฐานข้อมูล โดยในระบบฐานข้อมูลเชิงสัมพันธ์มีการควบคุมดังต่อไปนี้ 1. เอนทิทีอินทิกริตี(Entity integrity) เป็นการกำหนดว่า แต่ละเอนทิทีในแต่ละรีเลชันต้องมีค่าไม่ซ้ำกัน สามารถทำได้โดยการกำหนดให้ทุกรีเลชันต้องมีคีย์หลัก และคีย์หลักต้องมีค่าไม่เป็น null
อินทิกริตี (Integrity) (ต่อ) 2.เรเฟอเรนเชียลอินทิกริตี (referential integrity)เป็นกระบวนการตรวจสอบเพื่อหลีกเลี่ยงการป้อนข้อมูลเข้าที่ผิดพลาด หรือป้องกันการลบทัพเพิลใดๆ ทิ้งไปทั้งที่มี คีย์นอก จากรีเลชันอื่นมาอ้างอิงถึงอยู่ ทำได้โดยการกำหนดให้คีย์นอกมีค่าเป็น null
ตัวอย่างเรเฟอเรนเชียลอินทิกริตีตัวอย่างเรเฟอเรนเชียลอินทิกริตี R1 : Supplier(S#,..) R2 : Parts(P#,…) R3 : Supply(S#,P#,…) R4 : Order(S#,P#,Date) ถ้าบริษัท A ต้องการใช้รีเลชัน R4 เพื่อควบคุมสารสนเทศที่มีการสั่งซื้อ ทุกรายการในใบสั่งซื้อ (order) ต้องมีสินค้า (parts) และผู้ขาย (supplier) ด้วย จึงต้องกำหนดเรเฟอเรนเชียลอินทิกริตีซึ่งเป็นการกำหนดตามความต้องการของผู้ใช้
โอเปอเรเตอร์ในแบบจำลองเชิงสัมพันธ์โอเปอเรเตอร์ในแบบจำลองเชิงสัมพันธ์ ชนิดของโอเปอเรเตอร์แบ่งเป็น 2 กลุ่ม ดังนี้ โอเปอเรเตอร์ในการจัดการฐานข้อมูล(Manipulative Operators) ได้แก่ INSERT, DELETE, UPDATE โอเปอเรเตอร์พื้นฐาน (Basic Operators) ได้แก่ SELECTION, PROJECTION, JOIN, DIVISION, UNION, INTERSECTION, DIFFERENCE, CARTESIAN, PRODUCT
1. โอเปอเรเตอร์ในการจัดการฐานข้อมูล INSERT เป็นโอเปอเรเตอร์ที่ใช้ในการเพิ่มข้อมูลเข้าไปในรีเลชัน INSERT(40,’วางแผน’,’ลำปาง’)into Department
จากภาพ • ถ้าต้องการเพิ่มค่าคีย์หลัก (Dept_no) มีค่า =10 ซึ่งไปซ้ำกับค่าที่มีในรีเลชัน ไม่สามารถกระทำได้ ต้องแก้ปัญหาโดยกระทำดังนี้ 1. ยกเลิกการเพิ่มข้อมูล 2. แก้ไขสาเหตุของความผิดพลาดให้ถูกต้อง เช่น เปลี่ยนค่าของคีย์หลักไม่ให้ซ้ำกับค่าที่มีอยู่ใน ฐานข้อมูล
1. โอเปอเรเตอร์ในการจัดการฐานข้อมูล (ต่อ) DELETE เป็นโอเปอเรเตอร์ที่ใช้ในการลบทัพเพิลออกจากรีเลชัน ละเมิดเงื่อนไขเรเฟอเรนเชียลอินทิกริตี DELETE
จากภาพ ถ้าต้องการลบทัพเพิลที่มี Dept_no= 20 ซึ่งทำไม่ได้ มีแนวทางในการแก้ไขปัญหาคือ ยกเลิกการ DELETE ทำการลบข้อมูลแบบที่มีผลกระทบต่อเนื่อง (Cascading) คือ ไปลบทุกทัพเพิลที่อ้างอิงมาที่ข้อมูลนี้ด้วย แก้ไขค่าในแอตทริบิวต์ที่อ้างอิงมา
1. โอเปอเรเตอร์ในการจัดการฐานข้อมูล (ต่อ) UPDATE เป็นโอเปอเรเตอร์ที่ใช้ในการเปลี่ยนแปลงแก้ไขข้อมูลในทัพเพิลของรีเลชัน อาจเกิดปัญหาได้ถ้ามีการแก้ไขแอตทริบิวต์ที่เป็นคีย์หลักหรือคีย์นอก การใช้ UPDATE โอเปอเรเตอร์เพื่อแก้ไขคีย์นอกจะถูกต้องเมื่อค่าใหม่ที่ใส่ลงไปมีความสอดคล้องกันกับค่าที่มีอยู่ในรีเลชันที่มันอ้างอิงไป
โอเปอเรเตอร์พื้นฐาน (Basic Operators) ơ(SELECT) เป็นโอเปอเรเตอร์ที่ใช้ในการเลือกชุดของทัพเพิลในรีเลชันที่มีค่าเป็นไปตามเงื่อนไขที่กำหนดให้ ơ โอเปอเรเตอร์มีรูปภาพแบบดังนี้ เงื่อนไขที่ใช้จะเป็นนิพจน์ทางบูลีน โดยอาจประกอบด้วยโอเปอเรเตอร์ดังนี้ โอเปอเรเตอร์ที่ใช้ในการเปรียบเทียบ ได้แก่ =, <>, >, >=, <, <= บูลีนโอเปอเรเตอร์ ได้แก่ AND, OR, NOT ơ<เงื่อนไข>(<ชื่อรีเลชัน>)
โอเปอเรเตอร์พื้นฐาน (Basic Operators) (ต่อ) ผลที่ได้จากการใช้ ơคือ รีเลชันที่มีจำนวนแอตทริบิวต์เช่นเดียวกันกับรีเลชันที่กำหนด เช่น ต้อการเลือกทุกทัพเพิลในรีเลชัน EMPLOYEE ที่มี Salary มากกว่า 10,000 บาท
Employee ơSalary >10000(Employee) Employee
โอเปอเรเตอร์พื้นฐาน (Basic Operators) (ต่อ) π<ชุดของแอตทริบิวต์>(<ชื่อรีเลชัน>) 2. π (PROJECT) เป็นโอเปอเรเตอร์ที่ใช้ในการเลือกชุดของคอลัมน์ที่ต้องการπโอเปอเรเตอร์มีรูปแบบดังนี้ ผลลัพธ์ที่ได้จากการใช้ π คือ รีเลชันที่มีจำนวนแอตทริบิวต์ตามกำหนดในชุดของแอตทริบิวต์ เช่น ต้องการเลือกเฉพาะคอลัมน์ Job และ Salary นำมาแสดงผล
Employee πJob, Salary(Employee) Employee
โอเปอเรเตอร์พื้นฐาน (Basic Operators) (ต่อ) 3. U(UNION)การใช้ UNION, INTERSECT และ DIFFERENCE เป็นโอเปอเรเตอร์ที่ใช้ในการทำงานตามทฤษฎีของเซต การใช้โอเปอเรเตอร์เหล่านี้ โอเปอแรนด์จะต้องเข้ากันได้ ผลลัพธ์ที่ได้จากการ UNION ระหว่างรีเลชัน R1 และ R2(R1 U R2)คือรีเลชันที่ประกอบด้วยทุกทัพเพิลใน R1 และ R2 แต่ไม่มีค่าที่ซ้ำกัน และมีจำนวนแอตทริบิวต์เท่ากับจำนวนแอตทริบิวต์ของ R1 หรือ R2
Employee Manager U Staff
โอเปอเรเตอร์พื้นฐาน (Basic Operators) (ต่อ) 4.∩(INTERSECTION) ผลลัพธ์ที่ได้จากการ INTERSECTION ระหว่างรีเลชัน R1 และ R2 (R1 ∩R2) คือ รีเลชันที่ประกอบด้วยเฉพาะทัพเพิลที่มีอยู่ทั้งใน R1 และ R2 และมีจำนวนแอตทริบิวต์เท่ากับจำนวนแอตทริบิวต์ของ R1 และ R2
Employee Manager U Manager-Employee
โอเปอเรเตอร์พื้นฐาน (Basic Operators) (ต่อ) 5. – (DIFFERENCE) ผลลัพธ์ที่ได้จากการ DIFFERENCE ระหว่างรีเลชัน R1 และ R2 (R1-R2) คือ รีเลชันที่ประกอบด้วยเฉพาะทัพเพิลที่มีอยู่ใน R1 แต่ไม่มีอยู่ใน R2 และมีจำนวน แอตทริบิวต์เท่ากับจำนวนแอตทริบิวต์ของ R1 หรือ R2
Employee Manager - Non-Manager-Employee
โอเปอเรเตอร์พื้นฐาน (Basic Operators) (ต่อ) 6. X (CARTESIAN PRODUCT)ผลลัพธ์ที่ได้จากการ CARTESIAN PRODUCT ระหว่างรีเลชัน R1 และ R2(R1xR2) คือ รีเลชันที่เกิดจากการนำเอาทุกทัพเพิลที่อยู่ใน R1 และ R2 มาเรียงต่อกันในทุกโอกาสที่เป็นไปได้ และมีจำนวนแอตทริบิวต์เท่ากับผลบวกของจำนวนแอตทริบิวต์ของ R1 กับ R2 และจำนวนทัพเพิลทั้งหมดเท่ากับผลคูณของจำนวนทัพเพิลใน R1 กับ R2
DEPARTMENT DEPARTMENT X EMPLOYEE EMPLOYEE
โอเปอเรเตอร์พื้นฐาน (Basic Operators) (ต่อ) 7. JOIN ผลลัพธ์ของการ JOIN สองรีเลชัน คือ R1(A1,A2,..An) และ R2(B1,B2,..Bm) จะได้รีเลชัน R3 ที่มีดีกรี k= n+m และแอตทริบิวต์ (A1,A2,..An, B1,B2,..Bm) ที่เป็นไปตามเงื่อนไขของ JOIN R1 X <เงื่อนไขการ JOIN>R2
Employee Department SAME-LOCATION = EMPLOYEE X (Emp_loc = Dept_loc) DEPARTMENT