Lecture7 การแปลงโมเดลแบบ E-R เป็นรูปแบบโมเดลเชิงสัมพันธ์
- 1. การแปลงโมเดลแบบ E-R เป็ นรู ปแบบโมเดลเชิงสัมพันธ์
รหัสคนงาน วันที่ที่เริ่ มทางาน
ชื่อคนงาน อัตราค่าแรง/ช.ม.
จ.น.ช.ม.ทั้งหมดที่ทา
1 N
ชานาญด้าน
N คนงาน ได้รับ การทางาน
มอบหมาย
N N
1
ชานาญด้าน ชานาญด้าน
1 1
ความชานาญ สถานที่ก่อสร้าง
ประเภทความชานาญ อัตราโบนัส ที่อยู่ ประเภท
จานวนชัวโมงขั้นต่า
่ รหัสสถานที่ก่อสร้าง
BC326 Database Management Numtip Trakulmaykee
- 2. ขั้นตอนการแปลง
โมเดลแบบ E-R เป็ นรู ปแบบโมเดลเชิงสัมพันธ์
1. แปลงเอนติต้ ีปกติและแอททริ บิวท์ของเอนติต้ ี
เป็ นขั้นตอนการแปลงอย่างตรงไปตรงมา โดยจะทาการแปลง Entity ปกติที่ไม่ใช่
่
Weak Entity ให้อยูในรู ปของ Relation ซึ่งชื่อของ Entity คือ ชื่อของ Relation และ
attribute ของ Entity จะเป็ น attribute ของ Relation และ ทาการขีดเส้นใต้ attribute ที่
เป็ นคียหลัก
์
คนงาน(รหัสคนงาน,ชื่อคนงาน,อัตราค่าแรง/ช.ม.)
ความชานาญ(ประเภทความชานาญ,อัตราโบนัส,จานวนช.ม.ขั้นต่า)
สถานที่ก่อสร้าง(รหัสสถานที่ก่อสร้าง,ที่อยู,่ ประเภทสถานที่ก่อสร้าง)
หมายเหตุ ในกรณี ที่ attribute มีค่าได้มากกว่า 1 ค่า(Multivalue) หรื อมีกลุ่มซ้ า (Repeating
Group) จะใช้วงเล็บครอบกลุ่ม attribute นั้น ๆ
BC326 Database Management Numtip Trakulmaykee
- 3. ขั้นตอนการแปลง
โมเดลแบบ E-R เป็ นรู ปแบบโมเดลเชิงสัมพันธ์
การแปลง Weak Entity
่
เช่น Entity การทางาน จะเป็ นเอนติต้ ีแบบอ่อนเนื่องจากจะมีเอนติต้ ีการทางานอยูใน
ฐานข้อมูลนี้ได้จะต้องมีเอนติต้ ีคนงานและเอนติต้ ีสถานที่ก่อสร้างปรากฎอยูดวย
่ ้
การทางาน(วันที่เริ่ มทางาน,จานวนช.ม.ทั้งหมดที่ทา)
Entity ใดมีคุณสมบัติเป็ น Weak Entity และมีการขึ้นต่อกันเชิงระบุ จาเป็ นที่จะต้องนา
์ ั ่ ้
attribute ที่เป็ นคียของ Entity ที่มนขึ้นอยูดวยมาร่ วมเป็ นคียของ Relation แทน
์
การทางาน(รหัสคนงาน,รหัสสถานที่ก่อสร้าง,วันที่เริ่ มทางาน,จานวนช.ม.ทั้งหมดที่ทา)
BC326 Database Management Numtip Trakulmaykee
- 4. ขั้นตอนการแปลง
โมเดลแบบ E-R เป็ นรู ปแบบโมเดลเชิงสัมพันธ์
2. แปลงความสัมพันธ์ระหว่างเอนติต้ ี
การแทนความสั มพันธ์ แบบหนึ่งต่ อหนึ่ง (1:1)
เช่น ถ้าบริ ษทแห่งหนึ่งกาหนดว่าลูกค้าคนหนึ่งจะซื้อรถยนต์ได้เพียง 1 คันเท่านั้นและรถยนต์ 1
ั
คันเป็ นของลูกค้าได้เพียงคนเดียวเท่านั้น จะได้ความสัมพันธ์ดงนี้
ั
ที่อยู่ หมายเลขเครื่ อง
ชื่อลูกค้า ลูกค้ า 1
มีการซื้อ
1
รถยนต์ รุ่ น
รหัสลูกค้า
เบอร์โทรศัพท์ สี รถ
BC326 Database Management Numtip Trakulmaykee
- 5. การแทนความสัมพันธ์แบบหนึ่งต่อหนึ่ง (1:1)
1. แปลง Entity แต่ ละ Entity ให้ เป็ น relation โดยชื่อ Entity คือชื่อ relation และกาหนดคีย์
หลักของแต่ ละรีเลชัน ดังนี้
ลูกค้า(รหัสลูกค้า,ชื่อลูกค้า,ที่อยู,่ เบอร์โทรศัพท์)
รถยนต์(หมายเลขเครื่ อง,รุ่ น,สี รถ)
2. เพิมคีย์ของ relation หนึ่งลงไปเป็ น attribute หนึ่งของอีก relation
่
รู ปแบบที่ 1 ลูกค้า(รหัสลูกค้า,ชื่อลูกค้า,ที่อยู,่ เบอร์โทรศัพท์)
รถยนต์(หมายเลขเครื่ อง,รุ่ น,สี รถ,รหัสลูกค้า)
รู ปแบบที่ 2 ลูกค้า(รหัสลูกค้า,ชื่อลูกค้า,ที่อยู,่ เบอร์โทรศัพท์,หมายเลขเครื่ อง)
รถยนต์(หมายเลขเครื่ อง,รุ่ น,สี รถ)
*** คียนอก (Foreign Key) นั้น จะแทนด้วยการขีดเส้นใต้ดวยเส้นประ
์ ้
BC326 Database Management Numtip Trakulmaykee
- 6. การแทนความสัมพันธ์แบบหนึ่งต่อกลุ่ม (1:N)
1. แปลง entity ปกติแต่ ละ entity ให้ เป็ น relation โดยชื่อ entity ก็คอชื่อ relation
ื
และกาหนดคีย์หลักของแต่ ละ relation
คนงาน(รหัสคนงาน,ชื่อคนงาน,อัตราค่าแรง/ช.ม.)
ความชานาญ(ประเภทความชานาญ,อัตราโบนัส,จานวนช.ม.ขั้นต่า)
2. นาคีย์หลักของ entity ทีอยู่ด้านความสั มพันธ์ เป็ น 1 ไปเก็บเป็ น attribute ของ
่
relation ด้ านทีมีความสั มพันธ์ เป็ น N
่
คนงาน(รหัสคนงาน,ชื่อคนงาน,ประเภทความชานาญ,อัตราค่าแรง/ช.ม.)
ความชานาญ(ประเภทความชานาญ,อัตราโบนัส,จานวนช.ม.ขั้นต่า)
BC326 Database Management Numtip Trakulmaykee
- 7. การแทนความสัมพันธ์แบบ Recursive
่ ้
ให้เพิ่มคียหลักของ relation ที่อยูดานความสัมพันธ์เป็ นหนึ่งไปเป็ น attribute
์
ของรี เลชันด้านที่มีความสัมพันธ์เป็ นกลุ่ม โดยเปลี่ยนชื่อของแอททริ บิวท์
ใหม่
คนงาน เป็ นหัวหน้างาน
คนงาน(รหัสคนงาน,ชื่อคนงาน,ประเภทความชานาญ,อัตราค่าแรง/ช.ม.,หัวหน้างาน)
BC326 Database Management Numtip Trakulmaykee
- 8. การแทนความสัมพันธ์แบบหนึ่งต่อกลุ่ม (M:N)
ในกรณี ที่เอนติต้ ีมีความสัมพันธ์แบบกลุ่มต่อกลุ่ม (M:N) เราสามารถเขียนแผนภาพ
ได้ 2 แบบ แบบแรกคือการเชื่อมเอนติต้ ีน้ นด้วยความสัมพันธ์แบบกลุ่มต่อกลุ่ม
ั
วันที่ทางาน จานวนช.ม.ทั้งหมดที่ทา
M N
คนงาน มีการทางาน สถานทีก่อสร้ าง
่
แบบที่สองคือยอมให้ความสัมพันธ์น้ นสามารถมีแอททริ บิวท์ในตัวมันเองได้
ั
โดยการแปลงความสัมพันธ์ที่เชื่อมระหว่างเอนติต้ ีน้ นให้เป็ นแอนติต้ ีใหม่
ั
ขึ้นมาและเปลี่ยนรู ปแบบความสัมพันธ์แบบหนึ่งต่อกลุ่ม (1:N)
วันที่ทางาน จานวนช.ม.ทั้งหมดที่ทา
คนงาน 1
ทางานที่
N
การทางาน
N
ทางานที่
1
สถานที่ก่อสร้าง
BC326 Database Management Numtip Trakulmaykee
- 9. การแปลงความสัมพันธ์แบบ M:N ให้เป็ น relation จะไม่ใช้หลักการเดียวกับ
ความสัมพันธ์แบบ 1:1 หรื อ 1:N โดยการเอาคียของ relation หนึ่งไปเก็บเป็ น
์
attribute ในอีก relation หนึ่ง เหมือนดังรู ปแบบดังนี้
คนงาน(รหัสคนงาน,ชื่อคนงาน,ประเภทความชานาญ,อัตราค่าแรง/ช.ม.)
สถานที่ก่อสร้าง(รหัสสถานที่ก่อสร้าง,ที่อยู,่ ประเภทสถานที่ก่อสร้าง,รหัสคนงาน)
เพราะเป็ นวิธีการที่ไม่ถูกต้อง เนื่องจากจะทาให้เกิดปัญหาเกี่ยวกับความผิดปกติที่
เกี่ยวกับการจัดการข้อมูลไม่วาจะเป็ นการเพิ่ม ลบ หรื อปรับปรุ งข้อมูล เช่น
่
คนงานรหัส 1411 ได้ลาออกไป การลบข้อมูลใน relation สถานที่ก่อสร้างในแถวที่มี
คนงานรหัส 1411 นั้นอยูจะทาให้เราต้องสูญเสี ยข้อมูลเกี่ยวกับสถานที่ก่อสร้างรหัส 450 ไป
่
ด้วย หรื อถ้าบริ ษทรับก่อสร้างสถานที่แห่งใหม่แต่ยงไม่ได้กาหนดว่าใครเป็ นผูไปทาการ
ั ั ้
ก่อสร้างที่นนบ้าง จะทาให้เราไม่สามารถเพิ่มข้อมูลที่เกี่ยวกับสถานที่ก่อสร้างแห่งใหม่เข้าไป
ั่
ยัง relation สถานที่ก่อสร้างได้
BC326 Database Management Numtip Trakulmaykee
- 10. ดังนั้นจึงไม่สามารถแปลงความสัมพันธ์ M:N โดยวิธีแบบ 1:1 หรื อ 1:N ได้ แต่ให้
แปลงความสัมพันธ์โดยมีข้นตอนต่อไปนี้
ั
ั
ขั้นตอนที่ 1. แปลงเอนติต้ ีที่มีความสัมพันธ์กนนี้นให้เป็ นรี เลชัน โดยชื่เอนติต้ ี คือ
ชื่อของรี เลชัน และแอททริ บิวต์ของเอนติต้ ี คือ แอททริ บิวต์ของรี เลชัน ดังนี้
คนงาน(รหัสคนงาน,ชื่อคนงาน,ประเภทความชานาญ,อัตราค่าแรง/ช.ม.)
สถานที่ก่อสร้าง(รหัสสถานที่ก่อสร้าง,ที่อยู,่ ประเภทสถานที่ก่อสร้าง)
ขั้นตอนที่ 2. สร้างรี เลชันขึ้นมาใหม่หนึ่งรี เลชัน โดยรี เลชันที่สร้างขึ้นใหม่จะ
ประกอบด้วยแอททริ บิวต์ของความสัมพันธ์แบบ N:M และจะมีการสร้างคียหลัก ์
่
ของรี เลชันที่มีความสัมพันธ์แบบ N:M นั้นมาสร้างเป็ นคียหลักอยูในรี เลชันใหม่
์
นี้ดวย
้
การทางาน(รหัสคนงาน,รหัสสถานที่ก่อสร้าง,วันที่เริ่ มทางาน,จานวนช.ม.ทั้งหมดที่ทา)
BC326 Database Management Numtip Trakulmaykee
- 11. ขั้นตอนที่ 3. จะได้ ความสั มพันธ์ ระหว่ างรีเลชันเดิมกับรีเลชันใหม่ เปลียนไปเป็ นแบบ
่
1:N ดังนี้
คนงาน(รหัสคนงาน,ชื่อคนงาน,ประเภทความชานาญ,อัตราค่าแรง/ช.ม.)
สถานที่ก่อสร้าง(รหัสสถานที่ก่อสร้าง,ที่อยู,่ ประเภทสถานที่ก่อสร้าง)
การทางาน(รหัสคนงาน,รหัสสถานที่ก่อสร้าง,วันที่เริ่ มทางาน,จานวนช.ม.ทั้งหมดที่ทา)
สุ ดท้ าย คือ การพิจารณาเค้ าร่ างข้ อมูลแต่ ละรีเลชันทีได้ 2
่
ขั้นตอนแรก คือการเขียนรีเลชันทั้งหมดที่ได้ จากการแปลง
ใหม่ และพิจารณาในเรื่องความซ้าซ้ อนของข้ อมูลด้ วย
BC326 Database Management Numtip Trakulmaykee
- 12. Ex จากระบบฐานข้ อมูลภาระงานสอนของอาจารย์ ให้ เขียน E-R Diagram และแปลง
เป็ นโมเดลเชิงสั มพันธ์ (Relational Model) โดยมีรายละเอียดดังนี้ คือ
ฐานข้อมูลประกอบด้วย 4 เอนติต้ ี คือ
1. เอนติต้ ีคณะ ประกอบด้วยแอททริ บิวต์ รหัสคณะและชื่อคณะ
2. เอนติต้ ีภาควิชา ประกอบด้วยแอททริ บิวต์ รหัสภาควิชา,ชื่อภาควิชา,ที่ทาการ
3. เอนติต้ ีอาจารย์ ประกอบด้วยแอททริ บิวต์ รหัสอาจารย์,ชื่ออาจารย์,วันที่เริ่ มทางาน
,เงินเดือน
4. เอนติต้ ีชุดวิชา ประกอบด้วยแอททริ บิวต์ รหัสชุดวิชา,ชื่อชุดวิชา,จานวนหน่วยกิต
และฐานข้อมูลมีความสัมพันธ์ระหว่างเอนติต้ ี 5 ความสัมพันธ์ คือ
1. ความสัมพันธ์แบบ 1:N ระหว่าง เอนติต้ ีคณะ และ เอนติต้ ีภาควิชา
2. ความสัมพันธ์แบบ 1:N ระหว่าง เอนติต้ ีภาควิชา และ เอนติต้ ีอาจารย์
3. ความสัมพันธ์แบบ Recursive ระหว่าง เอนติต้ ีอาจารย์
4. ความสัมพันธ์แบบ 1:N ระหว่าง เอนติต้ ีภาควิชา และ เอนติต้ ีชุดวิชา
5. ความสัมพันธ์แบบ N:M ระหว่าง เอนติต้ ีชุดวิชา และ เอนติต้ ีอาจารย์
BC326 Database Management Numtip Trakulmaykee