19. แผนภาพ E-R (Entity-Relationship Diagram)

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

19. แผนภาพ E-R (Entity-Relationship Diagram)

            การเขียนแผนภาพ E-R อยู่ในขั้นตอนของการออกแบบฐานข้อมูล เป็นการจัดข้อมูลต่างๆให้มีระเบียบและมีความสัมพันธ์กัน การเขียนแผนภาพE-R ก็คือการวางแผนให้เห็นภาพโดยรวมเพื่อทำให้การสร้างฐานข้อมูลง่ายและลดข้อผิดพลาด โดยในการเขียนแผนภาพ E-R จะเป็นการแสดงให้เห็นว่า entities และ attributes ใดบ้างรวมถึงสิ่งเหล่านั้นมีความสัมพันธ์กันแบบใด

การเขียนแผนภาพ

            Entity

            คือสิ่งที่เราสนใจ เช่น พนักงาน หนังสือ หรืออาจะเป็นสถานที่ โดยจะเห็นได้ว่า entity นั้นเป็นคำนามที่มีคุณลักษณะได้ ดังนั้นการตั้งชื่อให้กับ entity จะตั้งชื่อด้วยคำนามและเป็นตัวอักษรตัวใหญ่ เช่น STUDENT, EMPLOYEE, STORE, REGISTRATION, HIRING

            Entity จะเขียนอยู่ในรูปกรอบสี่เหลี่ยม                              นอกจากนี้ entity ยังมีอีก 2 แบบ ได้แก่

            1.Strong Entity เป็น entity หลัก ที่สามารถเขียนได้เลย

            2.Weak Entity เป็น entity ที่ไม่ได้เกิดขึ้นเองแต่ต้องอยู่กับ entity หลัก ถ้า entity หลักถูกลบ weak entity จะถูกลบไปด้วย เขียนแทนด้วย

 

รูป 2-1

            เมื่อมีนักเรียนเราก็อาจจะต้องเก็บข้อมูลของผู้ปกครองด้วย ในกรณีที่มีเหตุฉุกเฉินจะได้สามารถติดต่อผู้ปกครองของเด็กได้ ดังนั้น STUDENT_PARENTS จึงเป็น weak entity เพราะเมื่อนักเรียนหายไปก็จะไม่มีการเก็ยข้อมูลของผู้ปกครอง

            Attribute

            คุณลักษณะของ entity  เช่นนักเรียนก็ต้องมี ชื่อ รหัสนักเรียน ที่อยู่ เบอร์โทร โดยจะใช้สัญลักษณ์วงรี โดยที่ primary key จะถูกขีดเส้นใต้ การตั้งชื่อจะตั้งด้วยตัวเล็กแต่ถ้ามีมากกว่าหนึ่งคำให้ใช้ตัวใหญ่สลับ

            หากต้องการจะสร้าง entity ของนักเรียน ก็จะประกอบไปด้วย รหัส ชื่อ และที่อยู่ จะได้รูปดังข้างล่าง

 

รูป2-2

            แต่จะเห็นได้ว่าในที่อยู่นั้นไม่ได้เก็บข้อมูลแค่อย่างเดียวแต่ต้องเก็บ เลขที่ หมู่บ้าน ถนน แขวง เขต จังหวัด ดังนั้นเราจะต้องแตกออกอีก

 

รูป2-3

            Attribute เช่น stuName เรียกว่า simple attribute ส่วน stuAdress เรียกว่า Composite attribute คือประกอบไปด้วย attribute ย่อยๆอีก

            แต่อย่างไรก็ตามยังมี attribute บางอันที่สามารถเก็บข้อมูลได้มากกว่า 1 ค่า เรียกว่า multivalued Attribute เช่น เบอร์โทรของนักเรียนอาจมีได้มากกว่าหนึ่งเบอร์โทร วิธีแก้ปัญหาก็คือการแตกออกเป็น attribute ย่อยๆ เช่น phone_1, phone_2, phone_3 แต่จะเห็นได้ว่าวิธีนี้อาจจะยังไม่มีประสิทธิภาพเพราะการสร้าง attribute ไว้มากๆเพื่อรองรับการใส่ข้อมูลนั้น อาจเป็นการสร้างทิ้งไว้เปล่าๆ ดังนั้นควรแก้สร้าง entity ขึ้นมาให้และให้มีความสัมพันธ์เชื่อมกับ entity ของนักเรียน

 

รูป2-4

            ความสัมพันธ์(Relationship)

            ความสัมพันธ์เป็นสิ่งที่ใช้เชื่อม entity ใช้บอกว่าแต่ละ entity มีความสัมพันธ์กันแบบใด โดยจะใช้สัญลักษณ์คล้ายๆบนไพ่ข้าวหลามตัด และในปลายของแต่ละข้างให้ระบุความสัมพันธ์ของ entity ลงไป ดูจากรูป 2-4 คือมีความสัมพันธ์แบบ หนึ่งต่อหลาย นักเรียนหนึ่งคนมีได้หลายเบอร์โทร

            ความสัมพันธ์แบบที่เป็นปัญหาก็ได้แก่ความสัมพันธ์แบบหลายต่อหลาย(M:N) เพราะเป็นรูปแบบของความสัมพันธ์ที่ทำให้คนดูงงไปด้วย เช่น ร้านยา – ยาหลายชนิดมีลูกค้ามาซื้อได้หลายคน ในขณะที่ ลูกค้าหลายคนก็ซื้อยาได้หลายชนิด ปัญหาแบบนี้คือควรแยกการกระทำของความสัมพันธ์ออกมาเป็นอีก entity หนึ่ง เช่นในที่นี้มี 2 entity ได้แก่ยากับลูกค้ามีการกระทำระหว่างกันคือการซื้อ ก็แยกการซื้อออกมาเป็นอีก 1 entity

 

รูป2-5

 

รูป2-6

Super-type และ sub-type

            จะคล้ายกับ inheritance คลาสแม่คลาสลูก คือมี entity ที่มี attribute ที่ entity อื่นก็จะมี attribute แบบเดียวกัน เช่น entity ของ พนักงานในบริษัท ประกอบด้วย attribute คือ id, name, address, phone แต่บริษัทมีพนักงานหลายๆส่วนที่ทำงานเฉพาะด้านต่างกัน เช่นพนักงานที่เป็นวิศวกร พนักงานฝ่ายขาย พนักงานบัญชี พิสูจน์อักษร หรืออาจมีพนักงาน part time พนักงานทั้งหลายเหล่านี้ก็ต้องมีการเก็บข้อมูลที่เหมือนกับ entity ของ พนักงานในบริษัทคือเก็บ id, name, address, phone แต่ก็ต้องมี attribute เพิ่มเติมเช่น วิศวกร อาจต้องมี attribute คือ ด้านเฉพาะ เงินเดือน ส่วนพนักงานฝ่ายขาย ก็มี attribute ที่เป็นโบนัสจากการขาย และพนักงานพิสูจน์อักษร  ก็มี attribute เช่น ภาษาที่ตรวจได้ ตรวจงานได้วันละกี่หน้า เป็นต้น ในที่นี้ entity ของ พนักงานในบริษัท ถือเป็น super-type ส่วน พนักงานต่างๆเป็น sub-type การเขียน super-type sub-type ใช้แทนด้วยเครื่องหมายยูเนียน (U)

 

รูป2-7

 

แผนผังการเรียนเขียนโปรแกรม

 

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

 

ใส่ความเห็น