[ บทที่ 5 ] การออกแบบฐานข้อมูล
แบบจำลองฐานข้อมูล(Database Model) คือแบบจำลองที่ใช้อธิบายโครงสร้างและ ความสัมพันธ์ระหว่างข้อมูลภายในฐานข้อมูล ความสัมพันธ์ของข้อมูล (Cardinality) ความสัมพันธ์แบบ One-to-one (1:1) ความสัมพันธ์แบบ one-to-many (1:M) ความสัมพันธ์แบบ many-to-many (M:N)
Data Structure of database Tuple รายการข้อมูลของแต่ละรายการเทียบเท่ากับ record ในระบบ แฟ้มข้อมูล เช่น ประวัติ พนักงานของแต่ละคน Attribute รายละเอียดของแต่ละ attribute ใน Tuple เช่น ประวัติพนักงาน ประกอบด้วย ชื่อ สกุล วันเดือนปีเกิด เพศ การศึกษา เงินเดือน
Attribute Key ค่าของAttribute ที่สามารถชี้ความเป็น Tuple ของ ตัวเองได้ชัดเจน Candidate Key คือ key ขนาดเล็กที่สุดที่ทำให้ ข้อมูลแต่ละ Tuple มีค่าไม่ซ้ำกัน Primary Key Alternate key Foreign key Non key คือฟิลด์อื่นๆที่ไม่ใช่ key แสดง รายละเอียดใดๆ ของ Tuple
( Attribute, Field, Column ) ระเบียนและเขตข้อมูล เขตข้อมูล ( Attribute, Field, Column ) Std_id Name Sex Province 5005001 สมหญิง งามดี ญ เชียงใหม่ 5005002 เทวา งามขำ ช อุดร 5005003 ภรรณกร พงศกร ลำปาง ระเบียน - Tuple - Record - Row
ความสัมพันธ์ของข้อมูลระหว่างตาราง แบบหนึ่งต่อหนึ่ง (One-to-One) One-to-One
ความสัมพันธ์ของข้อมูลระหว่างตาราง แบบหนึ่งต่อหลาย (One-to-Many) One-to-Many
ความสัมพันธ์ของข้อมูลระหว่างตาราง แบบหลายต่อหลาย (Many-to-Many)
ประเภทของ key คีย์หลัก (Primary Key) คือ ฟิลด์ใดฟิลด์หนึ่งหรือหลาย ๆ ฟิลด์ ประกอบกันในตารางที่จะชี้ไปยังข้อมูลแต่ ละเรคอร์ดในตาราง โดยที่คีย์หลัก จะต้องไม่มีค่าที่ซ้ำกัน คีย์นอก (Foreign Key) คือฟิลด์ที่ทำหน้าที่เป็นคีย์หลักในตารางที่ หนึ่ง แต่ทำหน้าที่เป็นฟิลด์ปกติในตารางที่ สอง ซึ่งเราจะเรียกฟิลด์นี้ในตารางที่ สองว่า คือ คีย์นอก (Foreign Key)
อะไรคือ FK ? Employee empNo empName position sex birthDate salary Branch branchNo street city postcode B005 21 ถ.ห้วยแก้ว เชียงใหม่ 50300 B007 56 ถ.พหลโยธิน พิษณุโลก 65150 B003 143 ถ.วิภาวดีรังสิต กรุงเทพฯ 10110 B004 22 ถ.สหมิตร เชียงราย 57000 B002 11 ถ.พหลโยธิน อะไรคือ FK ? Employee empNo empName position sex birthDate salary branchNo E001 ขวัญชัย ศรีมา ผู้จัดการ ชาย 28/2/2535 30000 B005 E003 กิริตา เกษรทอง ผู้ช่วย หญิง 2/3/2536 23000 B003 E004 ธนพล แย้มทวน supervisor 23/1/2536 19500 E012 นุพล สุดใจดี 9/6/2534 B007 E002 พัชรี วิถีไพร 30/12/2537 E013 ธันยาวี ถิ่นสถาน เลขานุการ 13/4/2534 35000
ขั้นตอนการออกแบบฐานข้อมูล 1. พิจารณาองค์ประกอบข้อมูล (ตาราง) ที่ จะรวมไว้ในฐานข้อมูล 2. จัดกลุ่มตารางข้อมูลที่ได้จากข้อ 1 และ ความสัมพันธ์ต่าง ๆ ระหว่างตารางและ ออกแบบโครงสร้างตาราง 3. กำหนดคีย์หลักให้แก่ตาราง (เช่น primary key, foreign key) 4. กำหนดความสัมพันธ์ระหว่างตาราง (เช่น 1:1, 1:M, M:N) 5. ทดลองป้อนข้อมูล และสร้างวัตถุ ฐานข้อมูลอื่น ๆ เช่นแบบฟอร์มและ รายงานว่าตรงกับความต้องการหรือไม่ 6. ทบทวนฐานข้อมูลที่ได้ออกแบบไว้
การวางแผน, การออกแบบ และการบริหารฐานข้อมูล (Database Planning, design and administration)
SDLC Database Systems Development Life Cycle การศึกษาเบื้องต้น (Database Initial Study) การออกแบบฐานข้อมูล (Database Design) การนำไปใช้ (Implementation) การทดสอบและประเมินผล (Testing and Evaluation) Database Systems Development Life Cycle การปฏิบัติงาน (Operation) การบำรุงรักษาและสนับสนุนระบบ (Maintenance and Support)
ให้กล่าวถึง.. ชื่อระบบ (ว่าเป็นระบบอะไร) ปัญหาที่เกิดขึ้นกับระบบเดิม วัตถุประสงค์ที่จะทำระบบใหม่ ขอบเขตของระบบ อธิบาย E-R Diagram
แบบจำลอง E-R (entity-relationship modeling)
จุดประสงค์ สามารถใช้สัญลักษณ์แทนความหมายใน แผนภาพ E-R ได้อย่างถูกต้อง สามารถกำหนดความสัมพันธ์ให้กับเอ็นทิตี้ ได้อย่างถูกต้อง เห็นความสำคัญของกฏเกณฑ์ทางธุรกิจ หรือข้อบังคับ บนความสัมพันธ์ของ แผนภาพ E-R
อะไรคือ..แผนภาพ E-R แบบจำลอง E-R เป็นแบบจำลองเชิง แนวคิด (Conceptual Data Model) นำเสนอในรูปแบบแผนภาพหรือ ไดอะแกรมที่มักเรียกกันว่า แผนภาพ E- R หรือ E-R Diagram ต้องการนำเสนอให้เกิดความเข้าใจ ระหว่างผู้ออกแบบและผู้ใช้งาน
ผู้ออกแบบฐานข้อมูล และ ผู้ใช้ระบบ - รู้ว่ามีเอ็นทิตี้อะไร แอตทริบิวต์อะไร - รู้ว่าข้อมูลมีความสัมพันธ์กันยังไง - รู้ข้อมูลเชิงเทคนิค “ผู้ใช้ระบบ” มันอยากรู้ว่า : - มีอะไรอยู่ในฐานข้อมูลบ้าง? - ข้อมูลมีความสัมพันธ์กันยังไง? - มีกฏเกณฑ์หรือข้อบังคับในการนำข้อมูลเข้าหรือออกมั๊ย? สื่อสารกัน E-R ? ? ? สื่อสารกัน ผู้ออกแบบฐานข้อมูล ผู้ใช้ระบบ
E-R ประกอบด้วยอะไรบ้าง? เอ็นทิตี้ (Entity) Strong Entity, Weak Entity แอตทริบิวต์ (Attributes) Attribute Domain, Simple Attribute, Composite Attribute, Single-valued Attribute, Multivalued Attribute, Derived Attribute ความสัมพันธ์ (Relationship) Unary Relationship, Binary Relationship, Ternary Relationship ข้อบังคับ (Structural Constraints) Cardinality Constraints, Participation Constraints
**การตั้งชื่อเอ็นทิตี้ ชื่อที่ใช้จะต้องเป็น คำนาม เท่านั้น** เอ็นทิตี้ (Entity) บุคคล : EMPLOYEE, STUDENT, PATIENT (พนักงาน, นักศึกษา, ผู้ป่วย) สถานที่ : STORE, WAREHOUSE, STATE (ร้านค้า, คลังสินค้า, สถานี) วัตถุ : MACHINE, BUILDING, AUTOMOBILE (เครื่องจักร, ตึกอาคาร, เครื่องยนต์) เหตุการณ์ : SALE, REGISTRATION, RESERVATION (การขาย, การ ลงทะเบียน, การจองห้องพัก) **การตั้งชื่อเอ็นทิตี้ ชื่อที่ใช้จะต้องเป็น คำนาม เท่านั้น**
เอ็นทิตี้ (Entity) Strong Entity Weak Entity พนักงาน ผู้ค้ำประกัน
ตัวอย่างการเขียนความสัมพันธ์ เขียนความสัมพันธ์แบบมี Strong Entity พนักงาน การขาย สามารถ 1 M เขียนความสัมพันธ์แบบมี Weak Entity พนักงาน ผู้ค้ำประกัน สามารถมี 1
แอตทริบิวต์ (Attributes) Attribute Domain Simple Attribute และ Composite Attribute Single-Valued Attribute และ Multivalued Attribute Derived Attribute
ให้นักศึกษาเขียนความสัมพันธ์ระหว่าง คณะ, สาขาวิชา, นักศึกษา ตาราง Faculty ตาราง Major ตาราง Student f_code f_name m_code f_code m_name std_code stdname address Sex m_code f_code เขียนแบบ Chen Model
ให้นักศึกษาเขียนความสัมพันธ์ระหว่าง คณะ, สาขาวิชา, อาจารย์ผู้สอน ตาราง Faculty ตาราง Major ตาราง Lecturer f_code f_name m_code f_code m_name lect_code name address Sex birthday startdate m_code f_code เขียนแบบ Chen Model
ให้นักศึกษาเขียนความสัมพันธ์ระหว่าง สินค้า, ประเภทสินค้า, พนักงานขาย, การขาย, ลูกค้า ตาราง Product ตาราง protype ตาราง employee ตาราง customer ตาราง sale proid proname price stock typeid typeid typename empid empname address Telephone Datein Salary Username password cusid Cusname cussurname address telephone saleid proid empid cusid saledate qty saleprice เขียนแบบ Chen Model
กรณีที่เกิดเป็นความสัมพันธ์ proid proname cusid proid saleid saleprice saleid price sale_detail sale saledate 1 M M 1 product empid stock typeid qty กรณีที่เกิดเป็นความสัมพันธ์ แบบ M:N
ให้เขียนความสัมพันธ์ของ “นักศึกษา” กับ “วิชา” ตาราง student ตาราง subject มีข้อกำหนดว่า : นักศึกษาสามารถลงทะเบียนได้หลายวิชา และในแต่ละวิชามีนักศึกษาลงทะเบียนได้หลายคน stdid name surname address sex f_id m_id semester_id Quiz_score Mid_score Final_score grade sbj_id sbj_name credit ที่ตารางการลงทะเบียน ใช้ PK ทั้งหมด 3 ตัว รหัสคณะ รหัสสาขาวิชา รหัสภาคการศึกษา คะแนนเก็บ กลางภาค ปลายภาค
ให้เขียนความสัมพันธ์ของ ตาราง Book ตาราง Type ตาราง RentDetail ตาราง member bookid bookname price stock typeid typeid typename rentid bookid memberid rent_date rent_qty rent_price memberid name surname sex address หนังสือแต่ละเล่มเช่าได้หลายครั้ง และแต่ละครั้งก็เช่าได้หลายเล่ม
ให้เขียนความสัมพันธ์ของ ตารางยา” ตารางประเภทยา “ตารางการรักษา” ให้เขียนความสัมพันธ์ของ ตารางยา” ตารางประเภทยา “ตารางการรักษา” ตาราง drug ตาราง type ตาราง treat drugid drugname Detail unit price stock typeid typeid typename treatid drugid treat_date drug_qty drug_price จำนวนยาที่จ่ายไป ราคาของยาแต่ละตัว ในการรักษาแต่ละใบสามารถจ่ายยาได้หลายตัว และยาแต่ละตัวก็สามารถอยู่ในใบรักษาได้หลายใบ
จะปล่อยให้เกิดความสัมพันธ์แบบ M:N ไม่ได้ typeproduct customer product proid proname price stock typeid M 1 typeid typename cusid name surname address M 1 จะปล่อยให้เกิดความสัมพันธ์แบบ M:N ไม่ได้ sale M employee saleid saledate proid empid cusid sale_qty sale_price N empid empname empsurname idcard address M 1
ทำไมต้องแตกตาราง ? ตาราง Sale saleid saledate proid empid cusid sale_qty sale_price S001 13/03/2011 P102 Emp01 C003 350 150 P103 30 1000 S002 20/03/2011 Emp05 C018 S003 1/04/2011 P112 C005 500 20 P115 100 80
typeproduct customer product saledetail employee sale typeid cusid 1 M typeid typename cusid name surname address proid proname price stock typeid 1 saledetail 1 M saleid proid sale_qty sale_price M employee sale 1 M empid empname empsurname idcard address saleid Saledate empid cusid 1 M
M have N product sale 1 M M 1 product sale saledetail
Participation Constraints Total Participation หรือ Mandatory คือ ความสัมพันธ์ชนิดบังคับ Partial Participation หรือ Optional คือ ความสัมพันธ์ชนิดเลือกได้
สัญลักษณ์บังคับ บน(เส้น)ความสัมพันธ์ในรูปแบบต่างๆ ความหมาย Mandatory One (one and only one) 1…1 Mandatory Many (one or more) 1…* zero or one 0…1 zero or more 0…*
แบบฝึกหัด ข้อที่ 1. ให้นักศึกษา ยกตัวอย่างมาซัก 4 ตัวอย่าง เพื่อใช้สัญลักษณ์ทั้ง 4 รูปแบบ ให้ครบ
** โดยจะต้องมีสัญลักษณ์ในหนังสือหน้า 175 ครบทุกสัญลักษณ์ ** แบบฝึกหัด ข้อที่ 2. ให้นักศึกษาเขียน E-R ของระบบเช่า อะไรก็ได้? ห้ามลุกจากที่ กำหนดเอ็นทิตี้เอง กำหนดแอตตริบิวต์เอง กำหนด primary key เอง กำหนดความสัมพันธ์เอง ** โดยจะต้องมีสัญลักษณ์ในหนังสือหน้า 175 ครบทุกสัญลักษณ์ **
book typebook member rentdetail employee reference rent bookid bookname price stock typebookid typebookid typename Memberid name surname Birthday age address rentdetail rentid bookid rent_qty rent_price employee empid empname empsurname birthday age address reference ref_id ref_name ref_surname telephone address Work_address rent rentid rentdate empid memberid
THE END