หน่วยการเรียนรู้ที่ 5
แบบจำลองเอนทิตี้ั - ความสัมพันธ์
5.1 บทนำ
Entity – Relationship Model หรือที่นิยมเรียกสั้น ๆว่า E-R Model ถูกคิดค้นโดย Chen(1976) ถือว่าเป็นแบบจำลองที่ใช้ในการแสดงการออกแบบฐานข้อมูลในระดับแนวคิด(High
– level Conceptual Data Model) ซึ่งเป็นอิสระจากระบบจัดการฐานข้อมูล(Database Management System :
DBMS) โดย E-R Model จะแสดงเค้าร่างฐานข้อมูล (Conceptual Database Schema) ที่ประกอบด้วย เอนติตี้(Entity) , แอททริบิวต์(Attribute) และความสัมพันธ์ระหว่างแอททริบิวต์(Relationship) ผลการออกแบบโดยใช้ E-R
Model สามารถแสดงได้ด้วยการเขียนแผนภาพที่เรียกว่า Entity
Relationship Diagram(ERD) ซึ่งถือว่าเป็นเครื่องมือที่ใช้อธิบายองค์ประกอบและข้อกำหนดของฐานข้อมูล
ที่นักวิเคราะห์และออกแบบระบบใช้เป็นสื่อกลางในการสื่อสารระหว่างผู้ใช้และนักพัฒนาโปรแกรม
เนื่องจากมีสัญลักษณ์ที่สื่อความหมายให้เข้าใจได้ง่าย
หลังจากออกแบบฐานข้อมูลและเขียนแผนภาพ ERD ที่ถูกต้องเหมาะสมกับระบบงานแล้ว และเลือกระบบจัดการฐานข้อมูล (DBMS) ที่จะนำมาใช้งานได้แล้ว
ก็จะทำการแปลง(Mapping Data Model)แผนภาพ
ERD ให้เป็นเค้าร่างฐานข้อมูลให้สอดคล้องกับระบบการจัดการฐานข้อมูลที่เลือกใช้
เช่น
สมมุติว่าเลือกระบบการจัดการฐานข้อมูลแบบเชิงสัมพันธ์(Relational
Database Management System : RDBMS) ซึ่งได้แก่ Oracle หรือ Microsoft SQL Server เป็นต้น ก็จะนำ E- R Diagram มาเทียบแปลงเป็นเค้าร่างฐานข้อมูลเชิงสัมพันธ์( Relational Schema) ที่เหมาะสม
5.2 องค์ประกอบของ
E – R Model
E
– R Model เป็นการออกแบบในระดับแนวคิด(Conceptual
Design) ในลักษณะจากบนลงล่าง(Top-Down
Strategy) โดยผลจากการออกแบบฐานข้อมูล จะได้เค้าร่างในระดับแนวคิดที่ประกอบด้วย
·
เอนติตี้ที่ควรจะมีในระบบ(Entity)
·
ความสัมพันธ์ระหว่างเอนติตี้ว่าเป็นอย่างไร(Relationship)
·
แอททริบิวต์ซึ่งเป็นรายละเอียดที่อธิบายเอนติตี้
และมีความสัมพันธ์กันอย่างไรบ้าง(Attribute)
5.2.1
เอนติตี้(Entity)
เอนติตี้(Entity หรือ Entity type) หมายถึง กลุ่มของสิ่งต่าง ๆ
ที่เราสนใจจะเก็บข้อมูลไว้ในฐานข้อมูล
ซึ่งอาจจะเป็น บุคคล สถานที่ การกระทำ
หรือ กิจกรรมต่าง ๆ ตัวอย่างของเอนติตี้ ได้แก่
· เอนติตี้ที่เป็น บุคคล เช่น
พนักงาน , นักศึกษา , อาจารย์ , แพทย์ ,
พยาบาล , ผู้ป่วย , นักบิน , พนักงานขับรถ
เป็นต้น
· เอนติตี้ที่เป็น สถานที่ เช่น
ประเทศ , จังหวัด , อำเภอ , น้ำตก , ภูเขา , โรงแรม , ห้องพัก , ห้องเช่า ,
ห้องเรียน เป็นต้น
· เอนติตี้ที่เป็น วัตถุ , สิ่งของ ,
อุปกรณ์ เช่น รถ , สินค้า ,
หนังสือ , อะไหล่ , วัตถุดิบ , อาหาร , เครื่องใช้ เป็นต้น
· เอนติตี้ที่เป็น นามธรรม เช่น
วัน , วิชา , ความสามารถพิเศษ , คำทำนาย , คำพยากรณ์ เป็นต้น
Entity instance หรือ Entity occurrence หมายถึง กรณีตัวอย่างที่แตกต่างกันของเอนติตี้ เช่น
นักศึกษา 1 คน , รถยนต์ 1 คัน , การเจ็บป่วย 1 ครั้ง , หนังสือ 1 เล่ม , ภาพยนตร์
1 เรื่อง , เหตุการณ์ 1 เหตุการณ์ ดังนั้น
เอนติตี้(Entity type) “นักศึกษา”
มีนักศึกษา 100 คน ก็หมายถึง มี Entity instance 100
ข้อมูลที่แตกต่างกันคนละคน เป็นต้น
เอนติตี้แบบปกติ(Regular
Entity หรือ Strong Entity) คือ
เอนติตี้ที่เราสามารถกำหนดให้มีในระบบได้อย่างอิสระ
ไม่ขึ้นกับข้อมูลของเอนติตี้อื่น
สามารถกำหนดแอททริบิวต์หรือฟิลด์ที่อยู่ในเอนติตี้ให้เป็นคีย์หลัก(Primary
Key) เพื่อจำแนกข้อมูลแต่ละรายการได้ สัญลักษณ์ที่แทนเอนติตี้แบบปกติ ใน ERD
คือสี่เหลี่ยมผืนผ้าแทนแต่ละเอนติตี้ ภายในบรรจุชื่อของเอนติตี้นั้น
ๆ
รูปที่ 5.1 สัญลักษณ์และตัวอย่างของเอนติตี้แบบปกติ
5.2.2 แอททริบิวต์(Attribute)
แอททริบิวต์(Attribute) หมายถึง
ลักษณะหรือคุณสมบัติที่นำมาอธิบายเอนติตี้ และ ความสัมพันธ์ ตัวอย่างของแอททริบิวต์ของเอนติตี้ เช่น
แอททริบิวต์ของเอนติตี้
“นักศึกษา” ได้แก่ รหัสนักศึกษา ,
คำนำหน้าชื่อ , ชื่อ , นามสกุล , วันเกิด , โปรแกรมวิชาที่สังกัด ,
เกรดเฉลี่ยสะสม
แอททริบิวต์ของเอนติตี้
“ผู้ป่วย” ได้แก่ รหัสผู้ป่วย , ชื่อ ,
นามสกุล , สถานภาพ , วันที่เข้ารักษาครั้งแรก , ที่อยู่ , โทรศัพท์
แอททริบิวต์ของเอนติตี้
“สินค้า” ได้แก่ รหัสสินค้า , ชื่อสินค้า , ราคา/หน่วย , จำนวนคงเหลือ
แอททริบิวต์ของเอนติตี้ “วิชาเรียน”
ได้แก่ รหัสวิชา , ชื่อวิชา ,
จำนวนหน่วยกิต
ประเภทของแอททริบิวต์แบ่งออกได้ดังนี้
· Simple Attribute หรือ Atomic
Attribute หมายถึง
แอททริบิวต์ที่ไม่สามารถแยกข้อมูลออกเป็นข้อมูลย่อย ๆ ได้อีก ตัวอย่างเช่น “รหัสนักศึกษา” , “เงินเดือน” ไม่สามารถแยกออกเป็นข้อมูลอื่น
ได้อีก สัญลักษณ์ที่ใช้คือ วงรีเส้นขอบเส้นเดี่ยว มีชื่อแอททริบิวต์บรรจุอยู่ภายใน
ดังรูป
รูปที่ 5.2
สัญลักษณ์และตัวอย่างของแอททริบิวต์แบบ
Simple attribute
·
Composite
Attribute หมายถึง หมายถึง แอททริบิวต์ที่สามารถแบ่งออกเป็นแอททริบิวต์ย่อย
ๆ ได้อีก เช่น แอททริบิวต์ “ที่อยู่” สามารถแบ่งออกเป็นแอททริบิวต์ย่อยได้เป็น
บ้านเลขที่ , ถนน , ตำบล , อำเภอ , จังหวัด เป็นต้น สัญลักษณ์ที่ใช้แสดง Composite
Attribute คือวงรีเส้นขอบเส้นเดี่ยว แต่มีวงรีย่อยมาเชื่อมต่อด้วย
ดังรูป
รูปที่ 5.3
สัญลักษณ์และตัวอย่างของแอททริบิวต์แบบ
Composite attribute
·
Single-valued
Attribute หมายถึง
แอททริบิวต์ที่ค่าของข้อมูลได้เพียงค่าเดียวในแต่ละแอททริบิวต์ เช่น แอททริบิวต์ “รหัสนักศึกษา” ของนักศึกษาแต่ละคนก็จะมีรหัสนักศึกษาเพียงรหัสเดียว สัญลักษณ์ที่ใช้คือ วงรีเส้นขอบเส้นเดี่ยว
มีชื่อแอททริบิวต์บรรจุอยู่ภายในเช่นเดียวกันกับ Atomic หรือ
Simple attribute (รูปที่ 6.2)
สำหรับแอททริบิวต์ที่ถูกกำหนดให้ทำหน้าที่เป็นคีย์หลัก(primary key) ของเอนติตี้ก็จะขีดเส้นทึบใต้ชื่อของแอททริบิวต์
เพื่อแสดงให้รู้ว่าเป็นคีย์หลัก
· Multivalued Attribute หมายถึง
แอททริบิวต์เดียวที่กำหนดให้สามารถมีค่าได้มากกว่า 1 ค่า เช่น ในเอนติตี้ “พนักงาน” ประกอบด้วย แอททริบิวต์ รหัสพนักงาน ,
ชื่อ-นามสกุล , เงินเดือน , ความสามารถพิเศษ เมื่อพิจารณาแล้วพบว่า พนักงาน 1 คน
ก็จะมีรหัสพนักงาน 1 ค่า , ชื่อและนามสกุล 1 ค่า , เงินเดือนมี 1 ค่า
แต่อาจจะมีค่าข้อมูลความสามารถพิเศษมากกว่า 1 อย่าง หรือ
มีแค่ความสามารถพิเศษเดียว หรือ ไม่มีความสามารถพิเศษเลยก็ได้ ดังนั้น แอททริบิวต์
“ความสามารถพิเศษ” จึงถือว่าเป็น
Multivalued Attribute เพราะสามารถมีค่าข้อมูลได้มากกว่า 1
ค่าข้อมูล สัญลักษณ์ที่ใช้แสดง Multivalued Attribute คือวงรีที่มีเส้นขอบเป็นเส้นคู่
บรรจุชื่อ แอททริ บิวต์ภายใน ดังรูป
รูปที่ 5.4
สัญลักษณ์และตัวอย่างของแอททริบิวต์แบบ
Multivalued attribute
·
Derived
Attribute หมายถึง
แอททริบิวต์ที่มีค่าของแอททริบิวต์ประกอบมาจากค่าของแอททริบิวต์อื่นหรือจากเอนติตี้ เช่น แอททริบิวต์ “อายุ” เกิดจาก การนำเอาค่าจากแอททริบิวต์ “วันเกิด” มาลบกับวันเดือนปีปัจจุบัน ก็จะได้ค่าอายุ สัญลักษณ์ที่แสดง Derived Attribute เป็นวงรีที่มีเส้นขอบเป็นเส้นประ มีชื่อแอททริบิวต์บรรจุภายใน ดังรูป
รูปที่ 5.5
สัญลักษณ์และตัวอย่างของแอททริบิวต์แบบ
Derived attribute
รูปที่ 5.6
ตัวอย่างการแสดงเอนติตี้ “พนักงาน” และแอททริบิวต์ของเอนติตี้
5.2.3 ความสัมพันธ์(Relationship)
ความสัมพันธ์(Relationship) หมายถึง ความสัมพันธ์ระหว่างเอนติตี้ต่าง ๆ ตัวอย่างเช่น เราสามารถกำหนดความสัมพันธ์ให้กับอาจารย์ “พนารัตน์” กับนักศึกษา “วนิดา”
ให้มีความสัมพันธ์กันโดยอาจารย์ “พนารัตน์” เป็นอาจารย์ที่ปรึกษาของนักศึกษา “วนิดา”
กลุ่มความสัมพันธ์(Relationship set)
คือ กลุ่มของความสัมพันธ์ระหว่างกลุ่มของเอนติตี้(Entity
type) พิจารณาตัวอย่างความสัมพันธ์ระหว่างอาจารย์กับนักศึกษาที่มีความสัมพันธ์เป็นอาจารย์ที่ปรึกษา
ดังรูป
รูปที่ 5.7 กลุ่มความสัมพันธ์
“เป็นที่ปรึกษา”
สัญลักษณ์ที่ใช้แสดงความสัมพันธ์ใน
ERD คือ
สี่เหลี่ยมขนมเปียกปูน มีชื่อที่แสดงความสัมพันธ์อยู่ภายใน ดังรูป
รูปที่ 5.8
ตัวอย่างความสัมพันธ์ระหว่างเอนติตี้
5.2.4 เอนติตี้อ่อนแอ(Weak Entity)
เอนติตี้อ่อนแอ
หมายถึง เอนติตี้ที่ไม่สามารถมีแอททริบิวต์ที่นำมากำหนดเป็นคีย์หลัก(Primary key)ของตัวเองได้ ซึ่งแตกต่างจากเอนติตี้ปกติ(Regular
Entity) ที่สามารถกำหนดคีย์หลักของเอนติตี้ตัวเองได้
เอนติตี้แบบอ่อนนี้จะคงอยู่หรือมีตัวตนได้ต้องอาศัยการเชื่อมโยงข้อมูลบางส่วนจากเอนติตี้อื่น
กล่าวได้ว่า เอนติตี้อ่อนแอมี “การขึ้นต่อกันเชิงปรากฏ(Existence
dependency)”กับเอนติตี้ที่เป็นเจ้าของ(Owner Entity) ความสัมพันธ์นี้เรียกว่า “ความสัมพันธ์เชิงระบุ(Identifying relationship)” หมายถึง สมาชิกของเอนติตี้เจ้าของ 1 รายการ สามารถระบุสมาชิกของเอนติตี้อ่อนแอ 1 รายการหรือหลายรายการได้ การกำหนดคีย์หลักของเอนติตี้อ่อนแอ
ต้องอาศัยข้อมูลจากแอททริบิวต์ของเอนติตี้ที่สัมพันธ์กัน(Owner Entity)มาประกอบแอททริบิวต์ของเอนติตี้อ่อนแอเป็นคีย์หลัก
พิจารณาความสัมพันธ์ “มีผลการทดสอบ”
ระหว่าง “นักศึกษา” และ “ผลการทดสอบ” ดังรูปที่ 5.9 จะสังเกตว่า ข้อมูล ”ครั้งที่” ของ”ผลการทดสอบ” จะมีข้อมูลที่ซ้ำกันบางรายการทำให้ไม่สามารถกำหนดคีย์หลักของเอนติตี้ได้
มีลักษณะเป็น เอนติตี้อ่อนแอ
แต่ถ้านำข้อมูลของ “นักศึกษา”
มาพิจารณาประกอบจะพบว่า ”ครั้งที่”
ของการสอบแต่ละรายการก็จะสามารถระบุได้ว่าเป็นผลการสอบของนักศึกษาคนใด เรียก “ครั้งที่” ว่าเป็นตัวแยก(Discriminator) ซึ่งจะนำแอททริบิวต์ที่เป็นตัวแยกนี้มาประกอบกับแอททริบิวต์ของเอนติตี้เจ้าของเป็นตัวระบุรายการข้อมูลที่แตกต่างกันแต่ละรายการ สามารถเรียกตัวแยกนี้ว่าเป็น ส่วนประกอบของคีย์(Partial
key)
สัญลักษณ์ที่ใช้แสดงเอนติตี้อ่อนแอใน
ERD คือ
สี่เหลี่ยมผืนผ้าที่มีเส้นขอบเป็นเส้นทึบคู่ มีชื่อเอนติตี้อยู่ภายใน ดังรูปที่ 5.10 แอททริบิวต์ที่เป็นส่วนประกอบของคีย์(Partial
key) จะขีดเส้นประใต้ชื่อแอททริบิวต์
รูปที่ 5.9 กลุ่มความสัมพันธ์
“มีผลการทดสอบ”
รูปที่ 5.10
ตัวอย่างความสัมพันธ์ระหว่างเอนติตี้อ่อนแอและเอนติตี้ปกติ
5.3 ข้อกำหนด(Constraints)
5.3.1 ดีกรีของความสัมพันธ์(Degree of Relationship)
ดีกรีของความสัมพันธ์ หมายถึง
จำนวนของเอนติตี้ที่มาสัมพันธ์กันในความสัมพันธ์หนึ่งๆ ซึ่งแบ่งออกได้ดังนี้
·
ความสัมพันธ์กับเอนติตี้ตนเอง(Unary Relationship หรือ Recursive
Relationship)
เป็นความสัมพันธ์ระหว่างเอนติตี้ภายในเอนติตี้เดียวกัน เช่น ความสัมพันธ์ชื่อ “บังคับเรียนก่อน”
ซึ่งเป็นความสัมพันธ์ระหว่าง เอนติตี้ “วิชาเรียน” กับเอนติตี้ “วิชาเรียน” ด้วยกันเอง กล่าวคือ
วิชาเรียนบางวิชาบังคับให้ต้องเรียนบางวิชาก่อนจึงจะสามารถเรียนวิชาดังกล่าวได้แสดงได้ดังรูปที่ 5.11
รูปที่ 5.11
ตัวอย่างความสัมพันธ์ระหว่างเอนติตี้แบบ Unary
Relationship
·
ความสัมพันธ์ระหว่างสองเอนติตี้(Binary Relationship)
เป็นความสัมพันธ์ระหว่างเอนติตี้
2 เอนติตี้ เช่น
-
ความสัมพันธ์ที่ชื่อ
“สอน”
ระหว่างเอนติตี้ “นักศึกษา”
กับเอนติตี้ “อาจารย์”
-
ความสัมพันธ์ที่ชื่อ
“ลงทะเบียน” ระหว่างเอนติตี้ “นักศึกษา”
กับเอนติตี้ “วิชาเรียน”
-
ความสัมพันธ์ที่ชื่อ
“สั่งซื้อ” ระหว่างเอนติตี้ “ลูกค้า”
กับเอนติตี้ “สินค้า”
แสดงสัญลักษณ์ใน
ERD ดังรูปที่ 5.12
รูปที่ 5.12
ตัวอย่างความสัมพันธ์ระหว่างเอนติตี้แบบ Binary
Relationship
·
ความสัมพันธ์ระหว่างเอนติตี้มากกว่าสองเอนติตี้(N-ary Relationship)
เป็นความสัมพันธ์ระหว่างเอนติตี้ตั้งแต่
3 เอนติตี้ขึ้นไป โดย N หมายถึง
จำนวนเอนติตี้ที่มาสัมพันธ์กับความสัมพันธ์หนึ่ง ตัวอย่างเช่น
ถ้ามีเอนติตี้มีความสัมพันธ์กันในความสัมพันธ์หนึ่งใด 3 เอนติตี้ จะเรียกว่า Ternary
Relationship , ถ้ามี 4
เอนติตี้มาสัมพันธ์กัน เรียกว่า Quaternary Relationship ตัวอย่าง
N – ary Relationship ดังรูปที่ 5.13
รูปที่ 5.13
ตัวอย่างความสัมพันธ์ระหว่างเอนติตี้แบบ N-ary
Relationship
5.3.2 สัดส่วนจำนวนข้อมูลระหว่างเอนติตี้ที่สัมพันธ์กัน(Cardinality Ratio)
สัดส่วนจำนวนข้อมูลระหว่างเอนติตี้ที่มาสัมพันธ์กันในความสัมพันธ์ใดความสัมพันธ์หนึ่ง สามารถแบ่งออกได้ ดังนี้
·
ความสัมพันธ์แบบหนึ่งต่อหนึ่ง(One-to-One Relationship หรือ 1 :
1)
เป็นการแสดงความสัมพันธ์ของจำนวนข้อมูลของเอนติตี้ A ว่า ข้อมูล 1 รายการ
มีความสัมพันธ์กับข้อมูลเอนติตี้ B ได้ไม่เกิน 1 รายการ ตัวอย่างเช่น
มีเอนติตี้ 2 เอนติตี้ คือ “อาจารย์” และ “คณะวิชา” สัมพันธ์กันด้วยความสัมพันธ์ชื่อ
“บริหาร” แบบ 1 : 1 หมายถึง อาจารย์ 1 คน จะสามารถเป็นคณบดีได้ 1 แผนก และในขณะเดียวกัน
คณะวิชาแต่ละคณะ ก็มีอาจารย์ที่ทำหน้าที่เป็นคณบดีได้เพียง 1 คนเท่านั้น สามารถแสดงความสัมพันธ์ ได้ดังรูปที่ 5.14
รูปที่ 6.14
ความสัมพันธ์ระหว่างเอนติตี้แบบ One-to-One
Relationship
·
ความสัมพันธ์แบบหนึ่งต่อกลุ่ม(One-to-Many Relationship หรือ 1
: N)
เป็นการแสดงความสัมพันธ์ของจำนวนข้อมูลของเอนติตี้ A ว่า ข้อมูล 1 รายการ
มีความสัมพันธ์กับข้อมูลเอนติตี้ B ได้มากกว่า 1 รายการ ตัวอย่างเช่น มีเอนติตี้ 2 เอนติตี้ คือ “อาจารย์” และ “นักศึกษา”
สัมพันธ์กันด้วยความสัมพันธ์ชื่อ “เป็นที่ปรึกษา”
แบบ 1 : N หมายถึง อาจารย์ 1 คน
จะสามารถมีนักศึกษาที่ปรึกษาได้มากกว่า 1 คน และในขณะเดียวกัน
นักศึกษาแต่ละคนต้องมีอาจารย์ที่ปรึกษาคนใดคนหนึ่งเท่านั้น สามารถแสดงความสัมพันธ์ ได้ดังรูป ที่ 5.15
รูปที่ 5.15
ความสัมพันธ์ระหว่างเอนติตี้แบบ One-to-Many
Relationship
·
ความสัมพันธ์แบบกลุ่มต่อหนึ่ง(Many-to-One Relationship หรือ N
: 1)
เป็นการแสดงความสัมพันธ์ของจำนวนข้อมูลของเอนติตี้ A ว่า ข้อมูล 1
รายการ มีความสัมพันธ์กับข้อมูลเอนติตี้ B ได้แค่ 1
รายการ ในขณะที่ข้อมูลเอนติตี้ B มีความสัมพันธ์กับเอนติตี้ A ได้มากกว่า 1 รายการ ตัวอย่างเช่น มีเอนติตี้ 2
เอนติตี้ คือ เอนติตี้ “คณะวิชา” และ เอนติตี้ “นักศึกษา”
มีความสัมพันธ์กันชื่อ “สังกัด” แบบ N
: 1 หมายถึง
โดยนักศึกษาแต่ละคนจะสามารถสังกัดคณะวิชาได้แค่ 1 คณะ ในขณะที่ 1 คณะวิชาสามารถมีนักศึกษามาสังกัดได้หลายคน สามารถแสดงความสัมพันธ์ ได้ดังรูป ที่ 5.16
รูปที่ 5.16
ความสัมพันธ์ระหว่างเอนติตี้แบบ Many-to-One
Relationship
·
แบบกลุ่มต่อกลุ่ม(Many-to-Many Relationship หรือ M
: N)
เป็นการแสดงความสัมพันธ์ของจำนวนข้อมูลของเอนติตี้ A ว่า ข้อมูล 1 รายการ
มีความสัมพันธ์กับข้อมูลเอนติตี้ B ได้มากกว่า 1 รายการ และในทางกลับกัน
ข้อมูล 1 รายการของเอนติตี้ B ก็มีความสัมพันธ์กับเอนติตี้ A
ได้มากกว่า 1 รายการเช่นกัน
ตัวอย่างเช่น มีเอนติตี้ 2 เอนติตี้
คือ “นักศึกษา” และ “วิชาเรียน” สัมพันธ์กันด้วยความสัมพันธ์ชื่อ “ลงทะเบียน” แบบ M : N กล่าวคือ
นักศึกษา 1 คน จะสามารถลงทะเบียนเรียนในวิชาเรียนได้มากกว่า 1 วิชา ในขณะเดียวกัน
วิชาเรียนแต่ละวิชาก็สามารถมีนักศึกษาลงทะเบียนเรียนได้มากกว่า 1 คน เช่นกัน สามารถแสดงความสัมพันธ์โดยใช้
Semantic Net ได้ดังรูป ที่ 5.17
รูปที่ 5.17
ความสัมพันธ์ระหว่างเอนติตี้แบบ Many-to-Many
Relationship
5.3.3 ข้อกำหนดการมีส่วนร่วมในความสัมพันธ์(Participation Constraints)
ในการวิเคราะห์ความสัมพันธ์ระหว่างเอนติตี
ในเรื่องสัดส่วนของข้อมูลที่เกี่ยวข้องกับความสัมพันธ์(Cardinality Ratio) ยังสามารถพิจารณาละเอียดถึงข้อกำหนดของการมีส่วนร่วมในความสัมพันธ์ระหว่างเอนติตี้
ซึ่งการกำหนดนี้ใช้เพื่อกำหนดคุณสมบัติของคีย์นอก(Foreign Key) ว่าจะเป็นค่าว่าง(Null) หรือไม่เป็นค่าว่าง(Not
Null) ซึ่งข้อกำหนดนี้ขึ้นอยู่กับเกณฑ์ที่ถือปฎิบัติในการทำงานของระบบงาน(Business
Rule) แบ่งออกได้ดังนี้
· การมีส่วนร่วมทั้งหมด(Total Participation หรือ Mandatory
Participation)
เป็นข้อกำหนดว่า “ทุกรายการข้อมูลในเอนติตี้ A จะต้องมีความสัมพันธ์กับรายการข้อมูลในเอนติตี้
B เสมอ” ตัวอย่างเช่น
หากกำหนดเกณฑ์ถือปฏิบัติว่า นักศึกษาทุกคนต้องสังกัดคณะวิชา และสังกัดได้เพียงแค่ 1 คณะ
และในขณะที่แต่ละคณะก็ต้องมีนักศึกษาสังกัดอย่างน้อย 1 คน ด้วยเช่นกัน
สามารถแสดงได้ดังรูปที่ 5.18
รูปที่ 5.18 ตัวอย่างการมีส่วนความสัมพันธ์แบบ
Total Participation ด้วยสัดส่วน M : 1
· การมีส่วนร่วมบางส่วน(Partial Participation หรือ Optional
Participation)
เป็นข้อกำหนดว่า “รายการข้อมูลในเอนติตี้ A อาจมีความสัมพันธ์กับรายการข้อมูลในเอนติตี้
B หรือไม่ก็ได้” ตัวอย่างเช่น หากกำหนดเกณฑ์ถือปฏิบัติว่า นักศึกษาแต่ละคนอาจจะลงทะเบียนเรียนในวิชาใดๆ
หรือไม่ก็ได้ และวิชาเรียนบางวิชาก็อาจจะมีคนลงทะเบียนเรียนหรือไม่ก็ได้ สามารถแสดงดังรูปที่ 5.17
5.4 สัญลักษณ์ที่ใช้ในการเขียนแผนภาพ E-R (ERD Notation)
ในการเขียนแผนภาพ E-R Diagram จะมีสัญลักษณ์ที่ใช้ในการสื่อความหมายของ
เอนติตี้(Entity),แอททริบิวต์(Attribute)ประเภทต่าง ๆ และ ความสัมพันธ์(Relationship) รวมทั้งข้อกำหนดต่าง
ๆ ที่ได้กล่าวในหัวข้อที่ผ่านมา โดยใช้สัญลักษณ์ของ Chen ซึ่งถือว่าเป็นสัญลักษณ์ที่ได้รับความนิยมในการเขียน
E-R Diagram มานาน
สรุปได้ดังนี้
ตารางที่ 5.1 สัญลักษณ์ในการเขียน ERD
นอกจากนี้ยังมีสัญลักษณ์ในการเขียนแผนภาพ ER แบบอื่น ๆ ที่มีการพัฒนาเพิ่มเติม
เช่น สัญลักษณ์ของ Crow’s foot , Bachman , UML เป็นต้น
รูปที่ 5.24 สัญลักษณ์ ERD ที่ใช้ใน Oracle Designer CASE
Tool
(ที่มา http://cisnet.baruch.cuny.edu/holowczak/classes/9440/entityrelationship/#erdiagrams)
รูปที่ 5.25 สัญลักษณ์ ERD แบบ Visible Analyst Notation
รูปที่ 5.26 สัญลักษณ์ ERD ที่ใช้ใน Sybase PowerDesigner
(ที่มา http://cisnet.baruch.cuny.edu/holowczak/classes/9440/entityrelationship/#erdiagrams)
รูปที่ 5.27 สัญลักษณ์ ERD แบบ UML
(ที่มา http://cisnet.baruch.cuny.edu/holowczak/classes/9440/entityrelationship/#erdiagrams)
ในการสร้างแผนภาพ ER โดยการใช้ CASE Tool มักมีลักษณะคล้าย Class Diagram โดยเขียนชื่อเอนติตี้และแอททริบิวต์ไว้ภายใน
รูปสี่เหลี่ยมผืนผ้า
และแสดงชื่อความสัมพันธ์ไว้บนเส้นที่เชื่อมโยงระหว่างเอนติตี้ แสดงตัวอย่างดังรูปที่ 5.28
รูปที่ 5.28 ตัวอย่าง
ERD ที่พัฒนาโดยใช้เครื่องมือ Popkin System Architect CASE
Tool
(ที่มา http://cisnet.baruch.cuny.edu/holowczak/classes/9440/entityrelationship/#erdiagrams)
6.5 ขั้นตอนการพัฒนาแบบจำลองข้อมูล
การออกแบบฐานข้อมูลโดยใช้
E-R Model มีขั้นตอนที่เกี่ยวข้องหลายขั้นตอน และต้องใช้ความรอบคอบในการออกแบบเพื่อให้ได้ E-R Diagram ที่ถูกต้องเหมาะสมกับระบบงาน โดยมีขั้นตอนในการพัฒนาดังนี้
1. กำหนดเอนติตี้ที่มีในระบบงาน
โดยดูจากลักษณะหน้าที่ของระบบงาน ว่ามีรายละเอียดในการทำงานอย่างไร ในการกำหนดเอนติตี้จะต้องพิจารณาด้วยว่าเป็นเอนติตี้ประเภทใด
เช่นเป็นเอนติตี้แบบปกติ(Regular Entity) หรือว่าเป็นเอนติตี้แบบอ่อน(Weak Entity)
2. กำหนดแอททริวบิวต์ต่าง ๆ ของแต่ละเอนติตี้
รวมทั้งพิจารณาแอททริบิวต์ที่จะทำหน้าที่เป็นคีย์หลักของเอนติตี้ด้วย
3. กำหนดความสัมพันธ์ระหว่างเอนติตี้ว่ามีความสัมพันธ์แบบใดบ้าง รวมทั้งข้อกำหนดของความสัมพันธ์(Participation Constraint) ด้วย
4. นำรายละเอียดการออกแบบตั้งข้อ 1 - 3 มาวาดประกอบกันเป็น E-R
Diagram ทบทวนการออกแบบว่าถูกต้องหรือไม่
6.6 กรณีศึกษา
: การพัฒนา E-R Model
บริษัท R.T. Trading Co.Ltd. เป็นบริษัทค้าส่งรายใหญ่ ต้องการพัฒนาระบบงานฐานข้อมูลเพื่อจัดเก็บข้อมูล โดยระบบงานที่สร้างขึ้นต้องสามารถรองรับการทำงานด้านต่างๆ
ของบริษัท โดยมีขอบเขตของกาจัดเก็บข้อมูลของบริษัทมีการจัดเก็บข้อมูลเกี่ยวกับ
แผนกการทำงานของบริษัท , พนักงาน , ลูกค้าของบริษัท
, สินค้าที่นำมาจำหน่าย , ผู้ผลิตสินค้า,
การสั่งซื้อสินค้าเข้ามาจำหน่ายและการออกใบเสร็จให้กับลูกค้า โดยมีรายละเอียดในการจัดเก็บข้อมูลดังนี้
-
ข้อมูลแผนกการทำงาน
ประกอบด้วยข้อมูล รหัสแผนกที่ไม่ซ้ำกัน , ชื่อแผนก , เบอร์โทรศัพท์ติดต่อ
ซึ่งสามารถมีได้หลายเบอร์
-
ข้อมูลพนักงาน
ประกอบด้วย รหัสพนักงานที่ไม่ซ้ำกัน , ชื่อพนักงาน(คำนำชื่อ , ชื่อ ,
นามสกุล) , ตำแหน่งงาน , เงินเดือน , เบอร์โทรศัพท์ , วันเกิด
, อายุ(คำนวณจากวันเกิดได้) , วันที่รับตำแหน่ง
-
ข้อมูลลูกค้า
ประกอบด้วย รหัสลูกค้าที่ไม่ซ้ำกัน , ชื่อลูกค้า(คำนำชื่อ , ชื่อ ,
นามสกุล) , ที่อยู่(บ้านเลขที่
, ถนน , อำเภอ/เมือง
, จังหวัด/รัฐ , รหัสไปรษณีย์)
, เบอร์โทรศัพท์(บ้าน , มือถือ)
, E-Mail Address
-
-ข้อมูลสินค้า
ประกอบด้วย รหัสสินค้าที่ไม่ซ้ำกัน , ชื่อสินค้า , ราคา , จำนวนคงเหลือ , ระดับคงเหลือสั่งซื้อ
-
ข้อมูลผู้ผลิตสินค้า
ประกอบด้วย รหัสผู้ผลิตที่ไม่ซ้ำกัน , ชื่อบริษัท , เบอร์โทรศัพท์ติดต่อ , E-Mail
Address ,ที่อยู่(เลขที่ , ถนน , อำเภอ/เมือง , จังหวัด/รัฐ , รหัสไปรษณีย์)
-
ข้อมูลใบสั่งซื้อสินค้าของบริษัท
ประกอบด้วย หมายเลขใบสั่งซื้อที่ไม่ซ้ำกัน ,
วันที่สั่งซื้อ ,ยอดรวมทั้งหมด(คำนวณจากรายการที่สั่งทั้งหมดได้)
-
ข้อมูลใบเสร็จรับเงินของลูกค้า
ประกอบด้วย หมายเลขใบเสร็จที่ไม้ซ้ำกัน , วันที่ออกใบเสร็จ , ยอดรวมทั้งหมด(คำนวณจากรายการที่สั่งทั้งหมดได้)
ข้อกำหนดการทำงานของบริษัท(Business rule) มีลักษณะดังนี้
-
การทำงานของบริษัท
พนักงาน แต่ละคนต้องสังกัดแผนกใดแผนกหนึ่ง เพียงแค่ 1 แผนกเท่านั้น ซึ่งในทุก ๆ
แผนกก็ต้องมีพนักงานที่สังกัดอย่างน้อย 1 คน
-
การบริหารงานของแผนก
จะมีพนักงานบางคนที่ถูกแต่งตั้งให้ดำรงตำแหน่งผู้จัดการแผนก
โดยแต่ละแผนกจะมีผู้จัดการแผนกละ 1 คน ไม่ซ้ำคนกันในแต่ละแผนก
-
การบริหารงานของพนักงาน
จะมีการแบ่งสายงานของพนักงานออกเป็นกลุ่มงาน
โดยจะมีพนักงานบางคนถูกคัดเลือกให้ทำหน้าที่เป็นหัวหน้าสายงานที่ดูแลพนักงานในสายงานของตนเอง
ทำให้ทราบว่าพนักงานแต่ละคนมีใครเป็นหัวหน้าสายงานของตนเอง
-
ในการนำสินค้าเข้ามาขายของบริษัท บริษัทจะสั่งซื้อสินค้าจากผู้ผลิตเข้ามาขาย ในการสั่งซื้อแต่ละครั้งจะสั่งจากผู้ผลิต
1 ราย
แต่สามารถสั่งซื้อสินค้าเข้ามาได้หลายรายการ
โดยระบุจำนวนที่สั่งในแต่ละครั้งที่สั่งซื้อ
-
ในการขายสินค้าให้กับลูกค้า
บริษัทจะออกใบเสร็จรับเงินเพื่อยืนยันการขาย โดยใน 1ใบเสร็จสามารถระบุรายการสินค้าที่ซื้อได้หลายรายการ
และระบุจำนวนที่ซื้อแต่ละรายการ ราคารวม และยอดขายสุทธิ(คำนวณจากราคาสินค้าได้) ตัวอย่างใบเสร็จรับเงินดังรูปที่
4.29
-
ในการออกใบเสร็จรับเงินจะมีพนักงานเป็นผู้ยืนยันการขายในแต่ละครั้งด้วยเสมอ
รูปที่ 5.29 ตัวอย่างใบเสร็จรับเงิน
การออกแบบแบบจำลองข้อมูล
1. กำหนดเอนติตี้ของระบบงาน ประกอบด้วย
·
แผนก
·
พนักงาน
·
ลูกค้า
·
สินค้า
·
ผู้ผลิต
·
ใบสั่งซื้อ
·
ใบเสร็จรับเงิน
2. กำหนดแอททริบิวต์ให้กับแต่ละเอนติตี้
รูปที่ 5.30เอนติตี้และแอททริบิวต์ของระบบงานตัวอย่าง
3. กำหนดความสัมพันธ์ในแต่ละเอนติตี้ที่มีความสัมพันธ์ตามขอบเขตงาน
·
การทำงานของบริษัท
พนักงาน แต่ละคนต้องสังกัดแผนกใดแผนกหนึ่ง เพียงแค่ 1 แผนกเท่านั้น ซึ่งในทุก ๆ
แผนกก็ต้องมีพนักงานที่สังกัดอย่างน้อย 1 คน เป็นความสัมพันธ์ระหว่าง เอนติตี้ “พนักงาน" กับเอนติตี้ “แผนก” ใช้ชื่อความสัมพันธ์ว่า “สังกัด” เป็นแบบ N : 1 ดังรูปที่ 5.31
รูปที่ 5.31 ความสัมพันธ์ชื่อ “สังกัด”
ระหว่างเอนติตี้ “พนักงาน” กับเอนติตี้ “แผนก”
·
การบริหารงานของแผนกจะมีผู้จัดการแผนกทำหน้าที่บริหารงาน
โดยแต่ละแผนกจะมีผู้จัดการแผนกละ 1 คน ไม่ซ้ำคนกันในแต่ละแผนก
เป็นความสัมพันธ์ระหว่าง เอนติตี้ “พนักงาน" กับเอนติตี้ “แผนก” ใช้ชื่อความสัมพันธ์ว่า “บริหาร” เป็นแบบ 1 : 1 ดังรูปที่ 5.32
รูปที่ 5.32 ความสัมพันธ์ชื่อ
“บริหาร” ระหว่างเอนติตี้ “พนักงาน” กับเอนติตี้
“แผนก”
·
การบริหารงานของพนักงาน จะมีการแบ่งสายงานของพนักงานออกเป็นกลุ่มงาน
โดยจะมีพนักงานบางคนถูกคัดเลือกให้ทำหน้าที่เป็นหัวหน้าสายงานที่ดูแลพนักงานในสายงานของตนเอง
ทำให้ทราบว่าพนักงานแต่ละคนมีใครเป็นหัวหน้าสายงานของตนเอง เป็นความสัมพันธ์ระหว่าง
เอนติตี้ “พนักงาน" กับเอนติตี้ “พนักงาน” ด้วยกันเอง ใช้ชื่อความสัมพันธ์ว่า “ควบคุม” เป็นแบบ 1 : N โดยความสัมพันธ์ด้าน 1 เป็นของเอนติตี้ “พนักงาน” ที่ทำหน้าที่เป็น
หัวหน้าสายงาน ส่วนความสัมพันธ์ด้าน N
เป็นของเอนติตี้ “พนักงาน” ที่เป็นลูกน้องในสายงาน ดังรูปที่ 5.33
รูปที่ 5.33 ความสัมพันธ์ชื่อ “ควบคุม” ระหว่างเอนติตี้
“พนักงาน” กับเอนติตี้ “พนักงาน”
·
ในการนำสินค้าเข้ามาขายของบริษัท บริษัทจะสั่งซื้อสินค้าจากผู้ผลิตเข้ามาขาย ในการสั่งซื้อแต่ละครั้งจะสั่งจากผู้ผลิต
1 ราย
แต่สามารถสั่งซื้อสินค้าเข้ามาได้หลายรายการ
ซึ่งจะระบุจำนวนที่สั่งในแต่ละครั้งที่สั่งซื้อ
เป็นความสัมพันธ์ระหว่าง เอนติตี้ “ผู้ผลิต” กับ เอนติตี้ “ใบสั่งซื้อ” ใช้ความสัมพันธ์ชื่อว่า
“รับ” เป็นความสัมพันธ์แบบ 1 :
N และความสัมพันธ์ชื่อ “มีรายการสั่งซื้อ” เป็นความสัมพันธ์ระหว่างเอนติตี้ “ใบสั่งซื้อ” กับเอนติตี้ “สินค้า”
เป็นความสัมพันธ์แบบ M:N ดังรูปที่ 5.34
รูปที่ 5.34 ความสัมพันธ์ชื่อ “รับ” ระหว่างเอนติตี้
“ผู้ผลิต” กับเอนติตี้ “ใบสั่งซื้อ”
และความสัมพันธ์ชื่อ
“มีรายการ” ระหว่างเอนติตี้ “ใบสั่งซื้อ” กับเอนติตี้ “สินค้า”
·
ในการขายสินค้าให้กับลูกค้า
บริษัทจะออกใบเสร็จรับเงินเพื่อยืนยันการขาย โดยใน 1 ใบเสร็จสามารถระบุรายการสินค้าที่ซื้อได้หลายรายการ
และระบุจำนวนที่ซื้อแต่ละรายการ ราคารวม และยอดขายสุทธิ(คำนวณจากราคาสินค้าได้)
เป็นความสัมพันธ์ระหว่าง เอนติตี้ “ลูกค้า”
กับ เอนติตี้ “ใบเสร็จ” ใช้ความสัมพันธ์ชื่อว่า
“ได้รับ” เป็นความสัมพันธ์แบบ 1
: N และความสัมพันธ์ชื่อ “มีรายการสินค้า” เป็นความสัมพันธ์ระหว่างเอนติตี้ “ใบเสร็จ” กับเอนติตี้ “สินค้า”
เป็นความสัมพันธ์แบบ M:N ดังรูปที่ 5.35
รูปที่ 5.35
ความสัมพันธ์ชื่อ “รับ” ระหว่างเอนติตี้ “ลูกค้า”
กับเอนติตี้ “ใบเสร็จ”
และความสัมพันธ์ชื่อ
“มีรายการ” ระหว่างเอนติตี้ “ใบเสร็จ” กับเอนติตี้ “สินค้า”
·
ในการออกใบเสร็จรับเงินจะมีพนักงานทั่วไปเป็นผู้ยืนยันการขายในแต่ละครั้งด้วยเสมอ เป็นความสัมพันธ์ระหว่างเอนติตี้ “พนักงาน” กับเอนติตี้
“ใบเสร็จ” ให้ความสัมพันธ์ชื่อ “ออก” เป็นแบบ 1:N ดังรูปที่ 5.36
รูปที่ 5.36 ความสัมพันธ์ชื่อ
“ออก” ระหว่างเอนติตี้ “พนักงานทั่วไป” กับเอนติตี้ “ใบเสร็จ”
4.
นำองค์ประกอบต่าง
ๆ ที่วิเคราะห์แล้วมารวมกันเป็นแผนภาพ E-R ดังรูปที่ 5.37
รูปที่ 5.37 ตัวอย่างแผนภาพ E-R ของระบบงานฐานข้อมูล
5.7 การแปลง
E-R Diagram ให้เป็นโครงสร้างตาราง(Relational
Schema)
การเปลี่ยน E-R Diagram ให้เป็นโครงสร้างตารางเชิงสัมพันธ์แบ่งออกเป็น
4 กรณี ดังนี้
กรณีที่ 1 แปลงเอนติตี้ปกติ(Regular Entity)
กรณีที่ 2 แปลงเอนติตี้แบบอ่อนแอ Weak Entity
กรณีที่ 3 แปลงความสัมพันธ์(Relationship)
5.6.1 แปลงเอนติตี้ปกติ(Regular Entity)
ให้เป็น Relational Schema
ถ้า A เป็นเอนติตี้ปกติ(Regular
Entity) ประกอบด้วยแอททริบิวต์
{ a1 , a2 , … , an} สามารถแปลงเป็นรีเลชัน 1 รีเลชัน ชื่อรีเลชันว่า A
ประกอบด้วยแอททริบิวต์ของรีเลชัน ซึ่ง 1 แอททริบิวต์ แทนด้วย 1 แอททริบิวต์ของเอนติตี้ หมายความว่า ถ้า A เป็น เอนติตี้ปกติ(Regular
Entity) ที่มีแอททริบิวต์
แบบ Simple Attribute หรือ Atomic Attribute จำนวน n แอททริบิวต์ สามารถแปลงเป็นรีเลชันชื่อ A
ที่ประกอบด้วยแอททริบิวต์
n แอททริบิวต์
รูปที่ 5.39
การแปลง เอนติตี้ปกติ(Regular Entity)
ให้เป็น Relational Schema
ตัวอย่าง
รูปที่ 5.40ตัวอย่างการแปลงเอนติตี้ “นักศึกษา” ให้เป็น Relational
Schema
*** ถ้าสมมุติ คีย์หลักของเอนติตี้ A
คือ แอททริบิวต์ a1 ภายหลังจากที่แปลงเป็นรีเลชันแล้ว
แอททริบิวต์ a1 ก็จะกลายเป็นคีย์หลักของรีเลชัน A
ด้วย
·
เอนติตี้ที่ประกอบด้วย
Composite Attribute
ถ้าในเอนติตี้ประกอบด้วย
Composite Attribute ให้แปลงแอททริบิวต์ที่เป็นแอททริบิวต์เป็นแอททริบิวต์แต่ละคอลัมน์ของรีเลชัน
รูปที่ 5.41
การแปลง เอนติตี้ปกติ(Regular Entity)
ที่มี Composite Attribute ให้เป็น Relational
Schema
ตัวอย่าง
รูปที่ 5.42 การแปลง เอนติตี้
“นักศึกษา” ที่มี Composite
Attribute ให้เป็น Relational Schema
·
เอนติตี้ที่ประกอบด้วย
Multivalued Attribute
ถ้าในเอนติตี้ประกอบด้วย
Multivalued Attribute ในการแปลง จะได้รีเลชัน 2
รีชัน คือ
รีเลชันแรกเป็นรีเลชันที่เกิดจากการแปลงเอนติตี้ปกติและแอททริบิวต์ของเอนติตี้
ยกเว้นแอททริบิวต์ที่เป็น Multivalue Attribute ส่วนรีเลชัน ที่ 2 ประกอบด้วย 2 แอททริบิวต์ คือ คีย์หลักของเอนติตี้และแอททริบิวต์ที่เป็น Multivalued
Attribute ซึ่งทั้งสองแอททริ-บิวต์นี้จะทำหน้าที่เป็นคีย์หลักของรีเลชันใหม่ ส่วนคีย์นอก(foreign key) ของรีเลชันใหม่คือ แอททริบิวต์ที่เป็นคีย์หลักของเอนติตี้ที่ยกมาด้วย
จะเชื่อมโยงไปยังรีเลชันแรก
รูปที่ 5.43 การแปลง เอนติตี้ปกติ(Regular Entity)
ที่มี Multivalued Attribute ให้เป็น Relational
Schema
ตัวอย่าง
รูปที่ 5.44 การแปลง เอนติตี้
“นักศึกษา” ที่มี Multivalued Attribute ให้เป็น Relational
Schema
5.6.2 แปลง เอนติตี้แบบอ่อนแอ(Weak
Entity) ให้เป็น Relational Schema
ในการแปลงเอนติตี้แบบอ่อนแอเป็น
Relational Schema ให้กำหนดแต่ละเอนติตี้แบบอ่อนเป็นแต่ละรีเลชันที่ประกอบด้วยแอททริบิวต์ของเอนติตี้แบบอ่อนแอ โดยคีย์หลักของรีเลชันคือ
คีย์หลักจากรีเลชันหลักที่มีความสัมพันธ์แบบเชิงระบุ(Identifying
Relationship)กับเอนติตี้แบบอ่อนแอ และแอททริบิวต์ที่เป็นส่วนประกอบของคีย์(Partial
key)จากเอนติตี้แบบอ่อนแอประกอบกันเป็นคีย์หลักของรีเลชัน
รูปที่ 5.45 การแปลง เอนติตี้แบบอ่อนแอ(Weak Entity) ให้เป็น Relational Schema
ตัวอย่าง
รูปที่ 5.46 การแปลง เอนติตี้
“ผลการทดสอบ” ให้เป็น Relational Schema
5.6.3 แปลง ความสัมพันธ์(Relationship)
ให้เป็น Relational Schema
· การแปลงความสัมพันธ์แบบ 1 : 1
ในการแปลงความสัมพันธ์แบบ
1 : 1
ไม่จำเป็นต้องสร้างรีเลชันขึ้นใหม่ สามารถแปลงโดยใช้วิธีการดังนี้
-
ถ้าเป็นความสัมพันธ์แบบ
Total participation หรือ Partial
participation ทั้งสองฝั่ง
ให้นำเอาคีย์หลักของรีเลชันฝั่งใดฝั่งหนึ่งมาไว้ในรีเลชันอีกฝั่ง
เพื่อทำหน้าที่เป็นคีย์นอกในการเชื่อมโยงรีเลชัน
ถ้ามีแอททริบิวต์บนความสัมพันธ์ให้ย้ายไปไว้ในรีเลชันฝั่งที่มีคีย์นอก
รูปที่ 5.47 การแปลง
ความสัมพันธ์แบบ 1 : 1 ให้เป็น
Relational Schema
-
ถ้าเป็นความสัมพันธ์แบบฝั่งหนึ่งเป็น
Total participation อีกฝั่ง
เป็น Partial participation ให้นำคีย์หลักฝั่งที่เป็น Partial participation มาไว้ที่ฝั่งที่เป็น
Total participation ทำหน้าที่เป็นคีย์นอก ถ้ามีแอททริบิวต์บนความสัมพันธ์
ให้นำมาไว้ฝั่งที่มีคีย์นอก
รูปที่ 5.48
การแปลง ความสัมพันธ์แบบ 1 : 1 ให้เป็น Relational Schema
ตัวอย่าง
รูปที่ 5.49
การแปลง ความสัมพันธ์ “บริหาร” แบบ 1
: 1 ระหว่างให้เป็น Relational Schema
·
การแปลงความสัมพันธ์แบบ
1 : N
ในการแปลงความสัมพันธ์แบบ
1 : N
ไม่จำเป็นต้องสร้างรีเลชันขึ้นใหม่ สามารถแปลงโดยใช้วิธีการดังนี้
-
ถ้าเป็นความสัมพันธ์ที่มีดีกรีแบบ
Binary Relationship ให้นำคีย์หลักฝั่งความสัมพันธ์
1 ไปไว้ที่ฝั่งความสัมพันธ์ N ทำหน้าที่เป็นคีย์นอกของรีเลชัน
ถ้ามีแอททริบิวต์บนความสัมพันธ์ให้นำมาไว้ฝั่งที่มีคีย์นอก
รูปที่ 5.50
การแปลง ความสัมพันธ์ Binary Degree แบบ 1 : N ให้เป็น Relational Schema
ตัวอย่าง
รูปที่ 5.51
การแปลง ความสัมพันธ์ “สังกัด” แบบ 1 : N ให้เป็น
Relational Schema
-
ถ้าเป็นความสัมพันธ์ที่มีดีกรีแบบ
Unary Relationship หรือ Recursive
Relationship ให้นำเอาคีย์หลักของรีเลชันมาสร้างเป็นคีย์นอกไว้ในรีเลชันรีเลชันเดิม
แต่ต้องเปลี่ยนชื่อแอททริบิวต์ที่เป็นคีย์นอกให้ต่างจากชื่อของแอท-ทริบิวต์ที่เป็นคีย์หลัก
รูปที่ 5.52 การแปลง
ความสัมพันธ์ Unary Degree
แบบ 1 : N ให้เป็น Relational Schema
ตัวอย่าง
·
การแปลงความสัมพันธ์แบบ
M : N
ต้องสร้างรีเลชันเพิ่มขี้นอีก
1 รีเลชัน สามารถแปลงโดยใช้วิธีการดังนี้
- ถ้าเป็นความสัมพันธ์แบบ Binary
Relationship สร้างรีเลชันใหม่
โดยเอาคีย์หลักของทั้ง 2 รีเลชัน
มารวมกันเป็นคีย์หลักของรีเลชันใหม่ที่สร้างขึ้น
ถ้าความสัมพันธ์มีแอททริบิวต์เกิดขึ้นบนความสัมพันธ์ ให้นำแอททริบิวต์นั้นมาใส่ไว้ในรีเลชันใหม่ที่สร้างขึ้นด้วย
รูปที่ 5.54 การแปลง ความสัมพันธ์ Binary Degree แบบ M : N ให้เป็น Relational Schema
รูปที่ 5.55 การแปลง ความสัมพันธ์ “ลงทะเบียน” แบบ M : N ให้เป็น Relational
Schema
- ถ้าเป็นความสัมพันธ์แบบ Unary
Relationship สร้างรีเลชันใหม่
โดยเอาคีย์หลักของรีเลชันเดิม
มารวมกันเป็นคีย์หลักของรีเลชันใหม่ที่สร้างขึ้น โดยคีย์หลักตัวแรกใช้ชื่อเดิม ส่วนอีกตัวให้เปลี่ยนชื่อใหม่ที่ไม่ซ้ำ
รูปที่ 5.56 การแปลง ความสัมพันธ์แบบ M : N แบบ Unary Degree ให้เป็น Relational Schema
ตัวอย่าง
รูปที่ 5.57 การแปลง ความสัมพันธ์ “บังคับเรียนก่อน”
แบบ M :
N ให้เป็น Relational
Schema
·
การแปลงความสัมพันธ์แบบ
N- ary Relationship
ในการแปลงความสัมพันธ์แบบ
N-ary Relationship ให้สร้างรีเลชันใหม่
โดยนำเอาคีย์หลักของแต่ละเอนติตี้มารวมกันเป็นคีย์หลักของรีเลชันใหม่แต่ละแอททริบิวต์ทำหน้าที่เป็นคีย์นอกที่เชื่อมโยงรีชันใหม่ไปยังรีเลชันเดิม
รูปที่ 5.58 การแปลง ความสัมพันธ์ N-ary Relationship ให้เป็น Relational
Schema
ตัวอย่าง
รูปที่ 5.59 การแปลง ความสัมพันธ์ “ทำงาน” แบบ N-ary Relationship ให้เป็น Relational Schema
จากตัวอย่างในรูปที่ 6.38 แปลงเป็น Relational Schema ได้ 10 รีเลชัน ดังนี้
แผนก (รหัสแผนก , ชื่อแผนก , เบอร์ติดต่อ
, รหัสพนักงาน , วันที่รับตำแหน่ง)
เบอร์โทรแผนก(รหัสแผนก , เบอร์โทรศัพท์)
พนักงาน (รหัสพนักงาน , คำนำชื่อ ,ชื่อหน้า , นามสกุล , ตำแหน่ง , เงินเดือน , วันเกิด
, รหัสแผนก ,
รหัสหัว หน้าสายงาน)
ลูกค้า (รหัสลูกค้า , คำนำชื่อ , ชื่อหน้า ,นามสกุล เลขที่ ,ถนน , อำเภอ ,
จังหวัด , รหัสไปรษณีย์, โทรศัพท์(มือถือ) , โทรศัพท์บ้าน , Email)
ผู้ผลิต (รหัสผู้ผลิต, ชื่อบริษัท , เลขที่ , ถนน , อำเภอ , จังหวัด ,
รหัสไปรษณีย์ , เบอร์โทรศัพท์ , EMail)
สินค้า (รหัสสินค้า , ชื่อสินค้า , ราคา , จำนวนคงเหลือ)
ใบสั่งซื้อ (หมายเลขใบสั่งซื้อ , วันที่สั่งซื้อ , รหัสผู้ผลิต)
รายการสั่งซื้อ (หมายเลขใบสั่งซื้อ , รหัสสินค้า , จำนวนที่สั่งซื้อ)
ใบเสร็จรับเงิน (หมายเลขใบเสร็จ , วันที่สั่งซื้อ , รหัสลูกค้า , รหัสพนักงาน)
รายการที่ซื้อ (หมายเลขใบเสร็จ , รหัสสินค้า , จำนวนที่สั่งซื้อ)
รูปที่ 5.60 Relational
Schema Diagram
ตารางที่ 6.2
ตัวอย่างพจนานุกรมข้อมูล(Data Dictionary)
Table
Name
|
Attribute
Name
|
Description
|
Data
Type
|
Size/Format
|
Null
|
Key
|
Reference
|
Department
|
Dept_No
|
รหัสแผนก
|
CHAR
|
3
|
N
|
PK
|
|
Dept_Name
|
ชื่อแผนก
|
VARCHAR
|
20
|
N
|
|||
Emp_NO
|
รหัสผู้จัดการแผนก
|
CHAR
|
5
|
Y
|
FK
|
Employee
|
|
Start_Date
|
วันที่รับตำแหน่ง
|
DATE
|
dd/mm/yyyy
|
Y
|
|||
Dept_Phone
|
Dept_No
|
รหัสแผนก
|
CHAR
|
3
|
N
|
PK,FK
|
Department
|
Dept_Phone
|
เบอร์โทรศัพท์
|
CHAR
|
10
|
N
|
PK
|
||
Employee
|
Emp_NO
|
รหัสพนักงาน
|
CAHR
|
5
|
N
|
PK
|
|
Title
|
คำนำชื่อ
|
VARCHAR
|
10
|
Y
|
|||
Emp_Fname
|
ชื่อ
|
VARCHAR
|
20
|
N
|
|||
Emp_Lname
|
นามสกุล
|
VARCHAR
|
30
|
N
|
|||
Position
|
ตำแหน่ง
|
VARCHAR
|
20
|
Y
|
|||
Salary
|
เงินเดือน
|
DECIMAL
|
8,2
|
Y
|
|||
Phone
|
เบอร์โทรศัพท์
|
CHAR
|
10
|
Y
|
|||
Bdate
|
วันเกิด
|
DATE
|
dd/mm/yyy
|
Y
|
|||
Dept_No
|
รหัสแผนกที่สังกัด
|
CHAR
|
3
|
Y
|
FK
|
Department
|
|
SEmp_NO
|
รหัสหัวหน้างาน
|
CHAR
|
5
|
Y
|
FK
|
Employee
|
|
Customer
|
Cus_NO
|
รหัสลูกค้า
|
CHAR
|
5
|
N
|
PK
|
|
Title
|
คำนำชื่อ
|
VARCHAR
|
10
|
Y
|
|||
Cus_Fname
|
ชื่อ
|
VARCHAR
|
20
|
N
|
|||
Cus_LName
|
นามสกุล
|
VARCHAR
|
30
|
N
|
ตารางที่ 6.2
ตัวอย่างพจนานุกรมข้อมูล(Data Dictionary) (ต่อ)
Table
Name
|
Attribute
Name
|
Description
|
Data
Type
|
Size/Format
|
Null
|
Key
|
Reference
|
Customer
|
Address
|
บ้านเลขที่
|
VARCHAR
|
10
|
Y
|
||
Street
|
ถนน
|
VARCHAR
|
20
|
Y
|
|||
City
|
อำเภอ/เมือง
|
VARCHAR
|
20
|
Y
|
|||
Province
|
จังหวัด
|
VARCHAR
|
25
|
Y
|
|||
Zipcode
|
รหัสไปรษณีย์
|
VARCHAR
|
15
|
Y
|
|||
H_Phone
|
เบอร์โทรบ้าน
|
CHAR
|
10
|
Y
|
|||
M_Phone
|
เบอร์มือถือ
|
CHAR
|
10
|
Y
|
|||
EMail
|
อีเมลล์
|
VARCHAR
|
35
|
Y
|
|||
Product
|
Prod_NO
|
รหัสสินค้า
|
CHAR
|
5
|
N
|
PK
|
|
Prod_Name
|
ชื่อสินค้า
|
VARCHAR
|
20
|
Y
|
|||
Price
|
ราคา
|
DECIMAL
|
8,2
|
Y
|
|||
P_On_Hand
|
จำนวนคงเหลือ
|
NUMBER
|
Y
|
||||
Stock_Level
|
ระดับคงเหลือคลัง
|
NUMBER
|
Y
|
||||
Receipt
|
Rec_NO
|
หมายเลขใบเสร็จ
|
NUMBER
|
N
|
PK
|
||
Rec_Date
|
วันที่ออก
|
DATE
|
dd/mm/yyyy
|
N
|
|||
Cus_NO
|
รหัสลูกค้า
|
CHAR
|
5
|
Y
|
FK
|
Customer
|
|
Emp_NO
|
รหัสพนักงานผู้ออก
|
CHAR
|
5
|
Y
|
FK
|
Employee
|
|
Rec_Detail
|
Rec_NO
|
หมายเลขใบเสร็จ
|
NUMBER
|
N
|
PK,FK
|
Receipt
|
|
Prod_NO
|
รหัสสินค้า
|
CHAR
|
5
|
N
|
PK.FK
|
Product
|
|
QTY
|
จำนวนซื้อ
|
NUMBER
|
Y
|
ที่มา : อ.นราวิชญ์ คำหมั่น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น