การออกแบบฐานข้อมูล ด้วย E-R Model
การออกแบบฐานข้อมูล ในการออกแบบฐานข้อมูลต้องทำการสร้าง Conceptual Model หรือ Logical Design Conceptual model เป็นการจำลองการเก็บข้อมูลให้อยู่ในรูปธรรม จากการวิเคราะห์ความต้องการของผู้ใช้ระบบ ซึ่งโครงสร้างที่เกิดขึ้นจะไม่ขึ้นอยู่กับการเก็บข้อมูลจริงในคอมพิวเตอร์ Conceptual model จะใช้ในการสื่อสารระหว่างทีมงานที่ทำการพัฒนาระบบ เพื่อให้เข้าใจแนวคิดที่ตรงกัน รวมไปจนถึงใช้ในการสื่อสารกับผู้ใช้ ในบางกรณี
การออกแบบฐานข้อมูล การทำ Conceptual Model มี 2 วิธี Top down > E-R Modeling Bottom up > Normalization
Entity-Relationship Modeling เรียกสั้น ๆ ว่า E-R Modeling แนวความคิดในการทำมีดังนี้ การกำหนด Entity และ Attributes Entity คือทุกอย่างที่เกี่ยวข้องกับข้อมูลที่สนใจจัดเก็บ สามารถกำหนดเหมือนเป็นกลุ่มของข้อมูลที่มีความสัมพันธ์กันโดย Key ที่ไม่ซ้ำกัน Entity จะประกอบไปด้วย Entity type และ Entity Occurrence ยกตัวอย่างเช่น
Entity-Relationship Modeling Entity type Entity Occurrence Lecturer อ.อังสนา, อ.ปราณี (หมายถึงคนหนึ่งคน) Room HB5303, HB5350 (หมายถึงห้องหนึ่งห้อง)
Entity-Relationship Modeling การกำหนด Attribute Attribute คือคุณสมบัติ หรือลักษณะของ Entity ที่ต้องการจัดเก็บ Attribute จะประกอบไปด้วย Attribute type และ Attribute occurrence ยกตัวอย่างเช่น
Entity-Relationship Modeling Entity type Attribute type Attribute occurrence Lecturer Lecturer Code Lecturer Name Employed date Academic Position 001 Pranee Wongjamras 01/01/1995 Assoc. Prof. Room Room Name Size HB5330 30
Key attribute Candidate Key คือ Attribute ที่สามารถใช้ในการแยกรายการแต่ละรายการใน Entity ออกจากกัน ในหนึ่ง Entity อาจมี Candidate Key ได้มากกว่าหนึ่ง (Unique และ Not Null) Primary Key (PK) คือ Candidate Key ที่ถูกเลือกออกมาหนึ่งตัว PK อาจประกอบไปด้วย Attribute มากกว่าหนึ่งตัวก็ได้ เรียกว่าเป็น Compound Key หรือ คีย์ประกอบ Compound Key คือ Primary Key ที่มีมากกว่าหนึ่ง Attribute
Key attribute Lecturer (LecturerCode, LecturerName, EmployedDate, AcademicPosition) Candidate Key = LecturerCode, LecturerName Primary Key = LecturerCode มักเลือกตัวที่เป็นตัวเลข หรือขนาดสั้นกว่า
Entity-Relationship Modeling สร้าง Relationships Relationships คือความสัมพันธ์ระหว่าง Entity ที่ทำให้ Model สามารถบ่งบอกถึงภาพรวมของข้อมูลที่จัดเก็บได้ ยกตัวอย่างเช่น
Entity-Relationship Modeling Lecturer Teach in Room Teach Course Student Learn in Author Compose Book
Entity-Relationship Modeling สร้าง Entity-Relationship Diagram หรือที่เรียกว่า E-R Diagram คือรูปภาพที่ใช้แสดงองค์ประกอบของข้อมูลที่สนใจจะจัดเก็บ โดยอยู่ในรูปของ Entity และ Relationships
Entity-Relationship Modeling Cardinality ของ Relationship Cardinality หมายถึงจำนวนสมาชิกของความสัมพันธ์ที่เกิดขึ้น Cardinality มีทั้งหมด 4 ชนิดคือ One-to-one relationship Entity ที่หนึ่งสามารถมีความสัมพันธ์กับ Entity ที่ 2 ได้เพียง 1 ค่าเท่านั้น ยกตัวอย่างเช่น ห้องสมุดมหาวิทยาลัยหนึ่งแห่ง จะมีผู้อำนวยการได้เพียงหนึ่งคนเท่านั้นใน
Entity-Relationship Modeling ยกตัวอย่างเช่น ห้องสมุดมหาวิทยาลัยหนึ่งแห่ง จะมีผู้อำนวยการได้เพียงหนึ่งคนเท่านั้นใน ผอ 1 คน สามารถ manage ห้องสมุดได้ น้อยที่สุด 1 คน และมากที่สุด 1 คน ห้องสมุดหนึ่งแห่ง ถูก manage จาก ผอ ได้ 1 คนเท่านั้น Manage Library Director University Library 1..1 1..1
One-to-one relationship LibraryDirector(DirectoryId, DirectorName, Academic, Position, Faculty) UniversityLibrary(LibraryId, LibraryName, UniversityName) Manage Library Director University Library 1..1 1..1
Entity-Relationship Modeling One-to-many relationship Entity ที่หนึ่งมีความสัมพันธ์กับ Entity ที่สองได้มากกว่า 1 ค่า ยกตัวอย่างเช่น หนังสือหนึ่งชื่อเรื่อง มีได้หลายเล่ม (สำเนา) (Copy) สามารถเขียนได้ดังภาพ
One-to-many relationship หนังสือ 1 ชื่อเรื่องมีสำเนาได้ 1 สำเนาถึงหลายๆ สำเนา สำเนา 1 เล่ม เป็นของหนังสือ 1 ชื่อเรื่องเท่านั้น has Book Copy 1..1 1..* has Book Copy 1..1 1..n
One-to-many relationship 1 2 3 หนังสือ 1 ชื่อมีสำเนาได้ตั้งแต่ 1 เล่มถึง หลายเล่ม สำเนา 1 เล่ม เป็นของหนังสือ 1 ชื่อเท่านั้น has Book Copy 1..1 1..* 4
One-to-many relationship Book(ISBN, Title, Author, Imprint) Copy(RegisterNo, Date-acquried, Date-destroyed) has Book Copy 1..1 1..*
One-to-many relationship คณะ 1 คณะมีนักศึกษาได้หลายคน นักศึกษา 1 คนอยู่ได้ 1 คณะ has STUDENT FACULTY 1..n 1..1
One-to-many relationship วารสาร 1 เล่ม มีบทความได้หลายบทความ 1 บทความจะอยู่ในวารสารได้น้อยที่สุด 1 ชื่อ contain Journal Article 1..1 1..n
One-to-many relationship Subject(SubjectCode, SubjectName, Credit) Course(CourseId, SubjectCode, Semester, Section, TeacherCode) has Subject Course 1..1 1..n
One-to-many relationship Course(CourseId, SubjectCode, Semester, Section, TeacherCode) Teacher(TeacherCode, TeacherName, RoomNo) teach Course Teacher 1..n 1..1
Entity-Relationship Modeling Many-to-many relationship Entity ที่หนึ่งจะมีความสัมพันธ์กับ Entity ที่สองได้มากกว่าหนึ่งค่า และในทางกลับกัน Entity ที่สองก็สามารถมีความสัมพันธ์กับ Entity ที่หนึ่งได้มากกว่าหนึ่งค่าเช่นกัน ยกตัวอย่างเช่น นักศึกษาหนึ่งคนสามารถลงทะเบียนวิชาได้หลายกระบวนวิชา และทุกกระบวนวิชาก็สามารถถูกลงทะเบียนโดยนักศึกษาจำนวนมากกว่าหนึ่งคน
Many-to-many relationship take Student Course 1..n 1..n
Entity-Relationship Modeling Recursive (หรือ involute) relationship Entity หนึ่งมีความสัมพันธ์กับตัวมันเอง ยกตัวอย่างเช่น ผู้อำนวยการห้องสมุดมหาวิทยาลัยคือบุคลากรคนหนึ่งในมหาวิทยาลัย ยกตัวอย่างเช่น ตาราง Personal มีความสัมพันธ์กับตาราง Personal โดยเป็นความสัมพันธ์ของบุคลากรคนหนึ่งที่เป็นผู้อำนวยการ กับบุคลากรคนอื่น ๆ ที่เป็นเจ้าหน้าที่หรืออาจารย์ของห้องสมุดมหาวิทยาลัยซึ่งอาจมีจำนวนมากที่สุด 50 คน จะเขียนได้ว่า 1..50
Recursive relationship
Recursive relationship
Entity-Relationship Modeling Decomposition การเก็บข้อมูล many-to-many ใน Relational DBMS จะทำให้การข้อมูลเก็บและค้นหาข้อมูลได้ยาก จึงต้องมีการทำ Decomposition โดย แตกความสัมพันธ์แบบ many-to-many ออกเป็นสองความสัมพันธ์ ดึงเอา primary key ของทั้งสอง entity มาเป็น ส่วนหนึ่งของ PK ของ entity ใหม่
Decomposition Student(StudentCode, StudentName) Course(CourseId, SubjectCode, Semester, Section) Grade (SubjectCode, Courseld, Grade) has provide Student Grade Course 1..1 1..n 1..n 1..1
ขั้นตอนการ composition ให้สร้าง entity ใหม่ ไว้ตรงกลาง ให้เขียนหัวลูกศรชี้เข้าหา entity ใหม่ทั้งสองฝั่ง เขียน cardinality ตามหัวลูกศร นำเอา PK ของ entity เก่าทั้งสองอัน ไปเป็น attribute ของ entity ใหม่ กำหนด PK ของ entity ใหม่
Entity-Relationship Modeling Key attribute Candidate Key คือ Attribute ที่สามารถใช้ในการแยกรายการแต่ละรายการใน Entity ออกจากกัน ในหนึ่ง Entity อาจมี Candidate Key ได้มากกว่าหนึ่ง (Unique และ Not Null) Primary Key (PK) คือ Candidate Key ที่ถูกเลือกออกมาหนึ่งตัว PK อาจประกอบไปด้วย Attribute มากกว่าหนึ่งตัวก็ได้ เรียกว่าเป็น Compound Key หรือ คีย์ประกอบ Foreign Key (FK) คือ Attribute ที่เป็นสำเนาของ PK ที่ปรากฏใน Entity อื่น และทำหน้าที่ในการเชื่อมโยง Entity เข้าไว้ด้วยกัน และค่าของ FK สามารถเป็นค่าที่ซ้ำกันได้
Example Candidate Key = Primary Key = Foreign Key =
ขั้นตอนการสร้าง E-R Diagram กำหนด Entity ทั้งหมด กำหนด Relationship ระหว่าง Entity เหล่านั้น กำหนด Key Attribute ทั้งหมด คือทั้ง PK และ FK (PK เลือกออกมาจาก Candidate Key และ PK อาจอยู่ในรูปของ Compound Key ก็ได้) กำหนด โครงสร้างเริ่มต้นของ E-R Diagram เติม Attribute ของแต่ละ Entity ตรวจสอบกับผู้ใช้ แล้วนำมาปรับปรุง E-R Diagram
โจทย์การทำ E-R Diagram ออกแบบฐานข้อมูลการสอนวิชาแต่ละเทอมของอาจารย์ 1 section มีคนสอนแค่ 1 คน ให้กำหนด Entity Relationship Attribute
Faculty hire Teacher Subject teach has Course 1..1 1..n 1..1 1..1 1..n Relation Teacher(TeacherCode, TeacherName, RoomNo, FacCode) Subject (SubjectCode, SubjectName, Credit) Course (Courseld, TeacherCode, SubjectCode, Semester, Section) Faculty (FacCode, FacName)
โจทย์การทำ E-R Diagram ออกแบบฐานข้อมูลการสอนวิชาแต่ละเทอมของอาจารย์ 1 section มีคนสอนได้หลายคน ให้กำหนด Entity Relationship Attribute
Faculty Subject hire Teacher has teach has Section Course 1..1 1..n Relation Teacher(TeacherCode, TeacherName, RoomNo, FacCode) Subject (SubjectCode, SubjectName, Credit) Course (Courseld, TeacherCode, SubjectCode, Semester, Section) Faculty (FacCode, FacName) Section (SecNo, SecTime, TeacherCode, Courseld)
โจทย์การทำ E-R Diagram จาก Model เดิมให้เพิ่มการเก็บข้อมูลห้องสอนของแต่ละ Section ในแต่ละเทอม ให้เพิ่ม Entity Relationship Attribute ที่จำเป็น
โจทย์การทำ E-R Diagram จาก Model เดิมให้เพิ่มการเก็บข้อมูล นักศึกษาที่ลงทะเบียนเรียนในแต่ละเทอม พร้อมเกรดที่ได้ เพิ่มคณะที่สังกัดของอาจารย์และนักศึกษา เพิ่มจำนวนรับนักศึกษาที่มากที่สุดของแต่ละกระบวนวิชาในแต่ละเทอม เพิ่มสถานการณ์ลงทะเบียนของนักศึกษาว่า Accepted Add Drop
การบ้านให้ทำ E-R Diagram ฐานข้อมูลทุนการศึกษาของนักศึกษาวิทยาลัยอาชีวศึกษามหาสารคาม มีทุนการศึกษาหลายทุน มีทั้งจากในและต่างประเทศ ทุนการศึกษามี 2 ประเภท ให้ครั้งเดียว ให้ต่อเนื่องทุกปี นักศึกษาได้รับทุนมาจากหลายคณะ