CHAPTER 11 Database Design
2 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ Agenda Data Organization Relational Database Entity, Attribute, Relationship, Key E-R Model Relational Database Model
3 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ Data Organization Data Pyramid Software สำหรับสร้าง และจัดการการทำงาน ของ Database เช่น Microsoft Access
4 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ ระดับข้อมูลตัวอย่าง BIT (Binary Digit)0 or 1 Only BYTE or CHARACTER A, ก, 1, …and (Blank) FIELD Mark, RECORD FILE Data Organization
5 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ DATABASEเช่น ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ตารางลูกค้า ตารางสินค้า ตารางใบสั่งซื้อ ความสัมพันธ์ Data Organization
6 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ คำศัพท์ที่ควรรู้จัก - Entity คือสิ่งที่เราสนใจ ใช้อ้างอิงถึงบุคคล สถานที่ เหตุการณ์ หรือสิ่งของต่าง ๆ เช่น ลูกค้า สินค้า ใบสั่งซื้อ สินค้า เป็นต้น - Attribute คือลักษณะของ entity เช่น attribute ของ ลูกค้า ได้แก่ ชื่อ ที่อยู่ รหัสไปรษณีย์ เบอร์โทรศัพท์ เป็นต้น - Relationship คือความสัมพันธ์ระหว่าง entity ต่าง ๆ เช่น ความสัมพันธ์ระหว่างลูกค้า และใบสั่งซื้อสินค้า คือ ลูกค้า สามารถสั่งซื้อสินค้าได้หลาย ๆ ครั้ง คือ ลูกค้าหนึ่งคนสามารถมี ใบสั่งซื้อสินค้าได้หลาย ๆ ใบ เป็นต้น Relational Database
7 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ –Entity ได้แก่ นักศึกษา, วิชา, อาจารย์ที่ปรึกษา และ โปรเจค เป็นต้น –Attribute ของ นักศึกษา ได้แก่ รหัส, ชื่อ, คณะ, ภาควิชา และ GPA เป็นต้น –Attribute ของ วิชา ได้แก่ รหัส, ชื่อ และ หน่วยกิต เป็นต้น ตัวอย่างระบบการลงทะเบียนเรียนของมหาวิทยาลัย
8 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ ฐานข้อมูลเชิงสัมพันธ์ คือ การรวบรวม entity ที่อยู่ในระบบที่มี ความสัมพันธ์กันเข้าไว้ด้วยกัน - Relational database เป็น database system ที่นิยมใช้มากที่สุด -Relational database จะประกอบไปด้วยตารางข้อมูล (Table) ที่ สัมพันธ์กันหลาย ๆ ตาราง โดยที่ 1 ตารางจะแทนข้อมูลของ 1 entity - RDBMS (Relational Database Management System) ที่เป็นที่ นิยม เช่น Microsoft SQL Server, Oracle, MS-Access, Sybase, DB2, Informix, MySQL เป็นต้น Relational Database
9 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ Table ตาราง 1 ตาราง จะใช้แทนข้อมูลของ 1 entity ประกอบด้วยแถว (row) และคอลัมน์ (column) โดยข้อมูลใน 1 แถว คือข้อมูล 1 ระเบียน (record) ส่วนข้อมูลแต่ละคอลัมน์คือข้อมูล attribute ของ entity หรืออาจเรียกว่า filed นั่นเอง
10 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ ประเภทของ Relationship –1:1One-to-One –1:NOne-to-Many –M:NMany-to-Many ตัวอย่างของ Relationship ประเภทต่าง ๆ –1:1นักศึกษา และ โปรเจค –1:Nอาจารย์ที่ปรึกษา และ นักศึกษา –M:Nนักศึกษา และ วิชาที่ลงทะเบียนเรียน Relationship
11 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ 1. ความสัมพันธ์แบบ 1:1 (One-to-One) เป็นความสัมพันธ์ที่แถวหนึ่งใน table ใด ๆ สามารถจับคู่กับ หนึ่งแถวในอีก table หนึ่ง เช่น นักศึกษา 1 คน จะทำโปรเจค ได้ 1 หัวข้อเท่านั้น 2. ความสัมพันธ์แบบ 1:N (One-to-Many) เป็นความสัมพันธ์ที่แถวหนึ่งใน table ใด ๆ สามารถจับคู่กับ หลายแถวในอีก table หนึ่ง เช่น อาจารย์ 1 คน สามารถให้ คำปรึกษานักศึกษาได้หลายคน Relationship
12 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ 3. ความสัมพันธ์แบบ M:N (Many-to-Many) เป็นความสัมพันธ์ที่แถวหลาย ๆ แถวใน table ใด ๆ สามารถ จับคู่กับหลายแถวในอีก table หนึ่ง เช่น นักศึกษา 1 คน สามารถเรียนได้หลายวิชา และวิชา 1 วิชา สามารถลงเรียนได้ จากนักศึกษาหลายคน ถ้าเรานำ table ทั้งสองมาเชื่อมโยงกัน จะเห็นว่าทำไม่ได้ เนื่องจากไม่มี column ที่เป็น column ร่วมกันของทั้ง 2 table การสร้างความสัมพันธ์แบบ M:N จึงต้องใช้ table อื่นเข้ามา ช่วยในการเชื่อมโยง Relationship
13 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ E-R ย่อมาจาก Entity-Relationship เป็นแผนภาพที่แสดงถึง Entity ต่าง ๆ ในระบบ ว่ามี ความสัมพันธ์ (Relationship) กันอย่างไร และ ประเภทไหน E-R Model ที่ได้ออกแบบไว้ จะนำไปแปลงเป็น Relational Database Model เพื่อนำไปสร้างใน DBMS ต่อไป สัญลักษณ์ที่ใช้ได้แก่ E-R Model ใช้แทน entity ใช้แทน relationship
14 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ ADVISOR ADVISES COURSE STUDENT WORK_ON REGISTER 1 1 1N M N PROJECT ตัวอย่าง E-R Model ของระบบลงทะเบียน
15 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ เพื่อเพิ่มประสิทธิภาพในการจัดการฐานข้อมูล เช่น การอ้างอิง การค้นหา การแก้ไขข้อมูล ในแถวใด ๆ หรือ การกำหนดความสัมพันธ์ระหว่าง entity จะต้องกำหนดคีย์ ดังนี้ ประเภทของคีย์ 1. คีย์หลัก (Primary key) หมายถึง attribute หรือกลุ่มของ attribute ที่มี ข้อมูลไม่ซ้ำกัน และไม่เป็นค่า Null ทำให้สามารถระบุได้ว่าเป็นข้อมูลเรคอร์ด ใด Keys 2. คีย์นอก (Foreign key) คีย์นอก หมายถึง attribute ที่อยู่ใน ตารางหนึ่ง แต่ไปปรากฏเป็น attribute ใน อีกตารางหนึ่ง และทำให้ทั้งสองตารางมีความสัมพันธ์กัน
16 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ ตัวอย่าง Keys PK FK ตารางลูกค้า ตารางสินค้า ตารางใบสั่งซื้อ PK: Primary key FK: Foreign key
17 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ การแปลง E-R Model ไปเป็น Relational Database Model 1)ออกแบบ Table โดยการระบุทุก ๆ Attribute ในแต่ละ Entity โดยทั่วไปแล้ว 1 Table แทน 1 Entity และพิจารณาเฉพาะ คุณสมบัติของ Entity ตัวเองเท่านั้น ไม่พิจารณาถึงคุณสมบัติที่มี ความสัมพันธ์กับ Entity อื่น 2)เลือก PK ของแต่ละ Table โดยพิจารณาจาก Attribute ทั้งหมด 3)เพิ่ม FK ของแต่ละ Table โดยพิจารณาจาก Entity ที่มี ความสัมพันธ์กัน –สำหรับความสัมพันธ์แบบ 1:N แล้ว FK จะถูกเพิ่มไปที่ Table ของ Entity ด้าน N –สำหรับความสัมพันธ์แบบ 1:1 แล้ว FK จะถูกเพิ่มไปที่ Table ด้านใดด้านหนึ่งเพียงด้านเดียว 4)สำหรับการแปลงความสัมพันธ์แบบ M:N ต้องเพิ่มตารางใหม่ โดย นำ PK ของทั้งสองตารางมาใช้เป็น PK ร่วมกันในตารางใหม่
18 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ STUDENT(scode, sname, major, birthday, address ) PROJECT(proj_code, proj_name, year) ADVISOR(adv_code, adv_name, office, tel_no) COURSE(course_code, cname, credit_lect, credit_lab) REGISTER(scode, course_code, semester, year, grade), adv_code, proj_code Relational Database Model ของระบบลงทะเบียน
19 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ ตัวอย่างตารางที่ได้จากระบบลงทะเบียน scodesnamemajorbirthdayaddressadv_codeproj_code นายสมชาย อดทน คอมพิวเตอร์ 1/7/27 หอชาย 2 ม. ช นางสาวชูใจ รัก เรียน คณิตศาสตร์ 29/2/25 หอหญิง 5 ม. ช proj_codeproj_nameyear 015The Clustering Algorithm with a Large Data Set A Dynamic Automata2551 STUDENT PROJECT adv_codeadv_nameofficetel_no 123 รศ. ทศพร จันทร์คง MB ต่อ รศ. วิไลพร สิริมังครา รัตน์ CSB ต่อ 102 ADVISOR
20 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ course_codec_namecredit_lectcredit_lab Computer Programming I Information Technology I21 COURSE scodecourse_codesemesteryeargrade A C REGISTER ตัวอย่างตารางที่ได้จากระบบลงทะเบียน