320 likes | 938 Views
Chapter 7 : ขั้นตอนการแปลงแผนภาพ ER มาเป็นรีเลชั่น ( ER-to-Relational Mapping Algorithm ). 4122205Z ระบบฐานข้อมูลและการออกแบบ อ.คเชนทร์ ซ่อนกลิ่น. ขั้นตอนการเขียน E-R Diagram. 1. ศึกษารายละเอียดและลักษณะหน้าที่งานของระบบ 2. กำหนด Entity ที่ควรมีในระบบฐานข้อมูล
E N D
Chapter 7 : ขั้นตอนการแปลงแผนภาพ ER มาเป็นรีเลชั่น ( ER-to-Relational Mapping Algorithm ) 4122205Z ระบบฐานข้อมูลและการออกแบบ อ.คเชนทร์ ซ่อนกลิ่น
ขั้นตอนการเขียน E-R Diagram 1. ศึกษารายละเอียดและลักษณะหน้าที่งานของระบบ 2. กำหนด Entity ที่ควรมีในระบบฐานข้อมูล 3. การกำหนดความสัมพันธ์ระหว่าง Entity 4. การกำหนด Attribute ของ Entity ให้ครบ 5. การกำหนด Primary Key ของแต่ละ Entity
รูปแสดงโครงสร้างของตาราง( Relation ) ชื่อ Relation Attribute นักศึกษา Tuple หรือ Record ช่องใส่ข้อมูล (Cell)
รูปแบบที่ใช้แทนตาราง(Relation) สามารถเขียนแทนได้ดังนี้ นักศึกษา หรือ โครงสร้างตาราง(Relation Schema) นักศึกษา(รหัสประจำตัว,ชื่อ,คณะ,ที่อยู่)
แสดงความสัมพันธ์ระหว่างตารางพนักงานและตารางแผนกแสดงความสัมพันธ์ระหว่างตารางพนักงานและตารางแผนก Foreign Key Employee Department
รูปแบบที่ใช้แทนตาราง(Relation) สามารถเขียนแทนได้ดังนี้ Employee Department หรือ โครงสร้างตาราง(Relation Schema) Employee(E-ID, NAME, ADDRESS, PHONE,DeptNo) FK (DeptNo) to Department Department(DeptNo,DeptName) มี FK (คีย์นอก) ชื่อว่าDeptNoจากตาราง Department
การแปลง E-R Diagram ไปเป็นตาราง(Relation)
Step 1 : Entity แบบปกติ • กรณี Simple Attribute • ขั้นตอนการแปลง Entity • - สร้างรีเลชั่นสำหรับ Entity • - ชื่อของ รีเลชั่นนำมาจาก ชื่อของ Entity • - ชื่อของคอลัมน์ นำมาจากชื่อของ Attribute ของ Entity • - Primary Key ของ รีเลชั่นนำมาจาก Primary Key ของ Entity นักศึกษา รหัสนักศึกษา วันเกิด ชื่อ นามสกุล หรือ นักศึกษา(รหัสนักศึกษา,ชื่อ,นามสกุล,วันเกิด)
Step 1 : Entity แบบปกติ • กรณี Composite Attribute นักศึกษา • ขั้นตอนการแปลง Entity • - แยก Simple Attribute ที่บรรจุอยู่ใน Composite Attribute ออกมาเป็นแต่ละแอททริบิวท์ของ รีเลชั่น เลขที่ รหัสนักศึกษา ตำบล ชื่อ ที่อยู่ อำเภอ จังหวัด รหัสไปรษณีย์ หรือ นักศึกษา(รหัสนักศึกษา,ชื่อ,เลขที่,ตำบล, อำเภอ, จังหวัด, รหัสไปรษณีย์)
Step 1 : Entity แบบปกติ • กรณี Multivalued Attribute นักศึกษา เบอร์โทรศัพท์ • ขั้นตอนการแปลง Entity • - ต้องมีการสร้างรีเลชั่นสองรีเลชั่น • - รีเลชั่นแรกจะบรรจุค่าแอททริบิวท์ที่มีอยู่ใน Entity ทั้งหมด ยกเว้นแอททริบิวท์ที่เป็นแบบ Multivalued • - รีเลชั่นที่สองให้บรรจุ 2 แอททริบิวท์ • -แอททริบิวท์แรกคือ คีย์หลักที่อยู่ในรีเลชั่นแรก • -แอททริบิวท์สอง คือแอททริบิวท์ที่เป็น Multivalued รหัสนักศึกษา นามสกุล ชื่อ นักศึกษา เบอร์โทรศัพท์ หรือ นักศึกษา(รหัสนักศึกษา,ชื่อ,นามสกุล) เบอร์โทรศัพท์(รหัสนักศึกษา, เบอร์โทรศัพท์) FK (รหัสนักศึกษา) to นักศึกษา
Step 2 : Weak Entity มี • ขั้นตอนการแปลง Weak Entity • - สร้างรีเลชั่นใหม่สำหรับ Weak Entity นำ Primary Key จาก Master Entity มาเป็น Primary Key ร่วมกับ Primary Key เดิมของ Weak Entity • - แอททริบิวท์นั้นจะมาเป็น Foreign Key สำหรับชี้ไปยังรีเลชั่นของ Master Entity ลำดับที่ แผนก ชื่อสมาชิก ชื่อ รหัสพนักงาน 1 M สมาชิกในครอบครัว พนักงาน พนักงาน พนักงาน(รหัสพนักงาน,ชื่อ,แผนก) สมาชิกในครอบครัว(รหัสพนักงาน,ลำดับที่,ชื่อสมาชิก) หรือ FK (รหัสพนักงาน) to พนักงาน สมาชิกในครอบครัว
การเปลี่ยนจากความสัมพันธ์เป็นตาราง(Relation)การเปลี่ยนจากความสัมพันธ์เป็นตาราง(Relation)
Step 1 : One-to-One Relationship (1:1) • ขั้นตอนการแปลงความสัมพันธ์แบบ 1:1 เป็นตาราง • ให้นำ Primary Key ของ Entity ที่มีความสัมพันธ์กัน มาเป็นForeign Key สำหรับชี้ไปยังรีเลชั่นที่มีความสัมพันธ์กัน โดยจะนำจาก Entity ด้านใดก็ได้ รหัสพนักงาน หมายเลขที่จอดรถยนต์ ที่ตั้ง จอดรถ 1 1 ชื่อ พนักงาน ที่จอดรถ พนักงาน พนักงาน หรือ ที่จอดรถยนต์ ที่จอดรถยนต์
Step 2 : One-to-Many Relationship (1:M) • ขั้นตอนการแปลงความสัมพันธ์แบบ 1:M เป็นตาราง • -ให้นำ Primary Key ของ Entity ฝั่ง one ไปแอททริบิวท์หนึ่งของ Entity ฝั่ง many ซึ่งแอททริบิวท์นั้นเป็นForeign Key อ้างถึง Primary Key ของรีเลชั่นที่ต้องการอ้างถึง(ฝั่ง One) • - การแปลง Many-to-One ก็กระทำอย่างเดียวกัน รหัสนักศึกษา รหัสอาจารย์ 1 M เป็นที่ปรึกษา นักศึกษา อาจารย์ ชื่ออาจารย์ ชื่อนักศึกษา อาจารย์ อาจารย์(รหัสอาจารย์,ชื่ออาจารย์) นักศึกษา(รหัสนักศึกษา,ชื่อนักศึกษา,รหัสอาจารย์) หรือ FK (รหัสอาจารย์) to อาจารย์ นักศึกษา
Step 3 : Many-to-Many Relationship (M:N) • ขั้นตอนการแปลงความสัมพันธ์แบบ M:N เป็นตาราง • - ให้นำความสัมพันธ์นั้นมาสร้างเป็นตารางใหม่ โดยนำ Primary Key ของเอนทิตี้ที่มีความสัมพันธ์กับความสัมพันธ์นั้นมากำหนดเป็นแอททริบิวท์ของตารางใหม่ • - พร้อมทั้งกำหนดให้ทำหน้าที่เป็น Primary Key หากความสัมพันธ์นั้นมีแอททริบิวท์ของความสัมพันธ์ด้วย ก็นำแอททริบิวท์นั้นมาเป็น แอททริบิวต์ของตารางใหม่ด้วย
Step 3 : Many-to-Many Relationship (M:N) ภาคการศึกษา รหัสวิชา รหัสนักศึกษา ชื่อวิชา ลงทะเบียน M N ชื่อนักศึกษา นักศึกษา วิชา จำนวนหน่วยกิต นักศึกษา นักศึกษา(รหัสนักศึกษา,ชื่อนักศึกษา) การลงทะเบียน(รหัสนักศึกษา,รหัสวิชา, ภาคการศึกษา) การลงทะเบียน หรือ FK (รหัสนักศึกษา) to นักศึกษา FK (รหัสวิชา) to วิชา วิชา(รหัสวิชา,ชื่อวิชา,จำนวนหน่วยกิต) วิชา
Step 3 : Many-to-Many Relationship (M:N) ภาคการศึกษา รหัสนักศึกษา รหัสวิชา ชื่อนักศึกษา ชื่อวิชา จำนวนหน่วยกิต ลงทะเบียน M N นักศึกษา วิชา รหัสวิชา รหัสนักศึกษา ชื่อวิชา ชื่อนักศึกษา จำนวนหน่วยกิต การลงทะเบียน 1 M 1 N วิชา นักศึกษา รหัสนักศึกษา รหัสวิชา ภาคการศึกษา
Step 4 : การแปลงความสัมพันธ์แบบ Unary ความสัมพันธ์แบบ Unary เป็นความสัมพันธ์ระหว่างเอ็นทิตี้เดียว หรือเรียกว่า ความสัมพันธ์แบบรีเคอร์ซีพ - ความสัมพันธ์แบบ Unary ชนิดหนึ่งต่อหนึ่ง (1:1) - ความสัมพันธ์แบบ Unary ชนิดหนึ่งต่อกลุ่ม (1:M) - ความสัมพันธ์แบบ Unary ชนิดกลุ่มต่อกลุ่ม (M:N)
Step 4 : การแปลงความสัมพันธ์แบบ Unary แต่งงานกับ • ความสัมพันธ์แบบ Unary ชนิดหนึ่งต่อหนึ่ง (1:1) • - สร้างรีเลชั่นใหม่หนึ่งรีเลชั่นแทนเอ็นทิตี้หนึ่งเอ็นทิตี้ที่มีความสัมพันธ์ระหว่างกัน • - แปลงแอททริบิวท์ของเอ็นทิตี้ เป็น แอททริบิวท์ของรีเลชั่น • - กำหนด Foreign Key ให้กับรีเลชั่น โดยนำมาจาก Primary Key ของรีเลชั่นเดียวกันและทำการเปลี่ยนชื่อแอททริบิวท์นั้นใหม่ 1 1 • พนักงานแต่ละคนจะแต่งงานกับพนักงานเพียงคนเดียวเท่านั้น พนักงาน ชื่อพนักงาน รหัสพนักงาน พนักงาน
Step 4 : การแปลงความสัมพันธ์แบบ Unary ถูกควบคุม • ความสัมพันธ์แบบ Unary ชนิดหนึ่งต่อกลุ่ม (1:M) • - สร้างรีเลชั่นใหม่หนึ่งรีเลชั่นแทนเอ็นทิตี้หนึ่งเอ็นทิตี้ที่มีความสัมพันธ์ระหว่างกัน • - แปลงแอททริบิวท์ของเอ็นทิตี้ เป็น แอททริบิวท์ของรีเลชั่น • - กำหนด Foreign Key ให้กับรีเลชั่น โดยนำมาจาก Primary Key ของรีเลชั่นเดียวกันและทำการเปลี่ยนชื่อแอททริบิวท์นั้นใหม่ 1 M • ผู้คุมคนงานสามารถคุมคนงานได้มากกว่าหนึ่งคนขึ้นไป • คนงานแต่ละคนจะถูกควบคุมโดยผู้ควบคุมเพียงคนเดียว คนงาน ชื่อคนงาน รหัสคนงาน คนงาน
Step 4 : การแปลงความสัมพันธ์แบบ Unary การเป็นเงื่อนไขวิชา • วิชาแต่ละวิชาสามารถมีเงื่อนไขของวิชาซึ่งเป็นวิชาอื่นๆได้มากกว่าหนึ่งวิชาขึ้นไป • วิชาที่เป็นเงื่อนไขของรายวิชาหนึ่งๆก็สามารถเป็นเงื่อนไขของวิชาอื่นได้มากกว่าหนึ่งวิชาเช่นกัน • ความสัมพันธ์แบบ Unary ชนิดกลุ่มต่อกลุ่ม (M:N) • - จะต้องสร้างรีเลชั่น 2 รีเลชั่นด้วยกัน • - โดยรีเลชั่นแรกจะมีคีย์หลักพร้อม • แอททริบิวท์ที่เกี่ยวข้อง • - ส่วนอีกรีเลชั่นประกอบด้วยสอง • แอททริบิวท์ที่ใช้เป็นคีย์หลัก ซึ่ง • แอททริบิวท์ทั้งสองก็คือค่าข้อมูลเดียวกันกับคีย์หลักในเอ็นทิตี้แรก แต่เปลี่ยนชื่อให้แตกต่างกัน ชื่อวิชา รหัสวิชา M N วิชา วิชา การเป็นเงื่อนไขรายวิชา
Step 5 : การแปลงความสัมพันธ์แบบ Ternary รหัสผู้ผลิต รหัสสินค้า วันที่ส่ง จำนวนสินค้า ชื่อสินค้า ชื่อผู้ผลิต ผลิต/ส่ง รหัสลูกค้า ชื่อลูกค้า ลูกค้า รหัสสินค้า รหัสลูกค้า M N M N M ผู้ผลิต สินค้า ผู้ผลิต สินค้า รหัสผู้ผลิต วันที่ส่ง จำนวนสินค้า รหัสผู้ผลิต รหัสสินค้า N M 1 ชื่อสินค้า M 1 ชื่อผู้ผลิต การผลิตและส่งสินค้า M รหัสลูกค้า ชื่อลูกค้า 1 ลูกค้า
Step 5 : การแปลงความสัมพันธ์แบบ Ternary • ความสัมพันธ์แบบ Ternary • ชนิดกลุ่มต่อกลุ่ม (M:N) • - จะต้องสร้างรีเลชั่น 4 รีเลชั่นด้วยกัน • - โดยจะมีเอ็นทิตี้หนึ่งเชื่อมโยงระหว่าง • สามเอ็นทิตี้เข้าด้วยกัน • - เอ็นทิตี้นั้นจะนำPrimary Key ใน • สามเอ็นทิตี้มาเป็น Primary Key และอาจเพิ่มเติม Primary Key ได้ สินค้า ลูกค้า ผู้ผลิต การผลิตและส่งสินค้า
1.จงแปลง ER Diagram ต่อไปนี้ให้เป็นตาราง แบบฝึกหัด ชื่อนักแสดง รหัสนักแสดง รหัสภาพยนตร์ ชื่อภาพยนตร์ ประวัติการแสดง วันเปิดตัว N M แสดง ภาพยนตร์ ผู้แสดง ผู้กำกับ M เข้าฉาย N โรงภาพยนตร์ รหัสโรงภาพยนตร์ เบอร์โทรศัพท์ ชื่อโรงภาพยนตร์ ที่อยู่
Faculty_ID Faculty_Name Faculty 2. จงแปลง ER Diagram ต่อไปนี้ให้เป็นตาราง 1 has Dep_Name M Department has Dep_ID 1 1 Teacher_ID has Teacher_Name Subject _Name Salary M M N M teach Subject Teacher Unit M 1 Subject_ID Leader
Emp_ID 3.จงแปลง ER Diagram ต่อไปนี้ให้เป็นตาราง Emp_name Employee Product_ID Product_name 1 salary Product_ID have Price_s Detail_ID Bill_No price M Bill M 1 Bill_detail N 1 Bill_date Product M M Amount Bill_No has get TypeName 1 Cus_ID TypeID TypeProduct 1 Cus_name Customer Address