หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์สาระสาคญั ฐานข้อมูลเชิงสมั พันธ์ เป็นฐานข้อมูลท่ไี ด้รับความนิยมใช้กนั มากท่สี ดุ ในปัจจุบนั เน่ืองจาก ความง่ายในการทาความเข้าใจและท่สี าคัญคือ เป็นฐานข้อมูลท่สี ามารถแก้ปัญหาในเร่ืองของData Redundancy และ Data Inconsistency รวมท้งั มกี ารแยกโครงสร้างของฐานข้อมูลออกเป็น Logical และ Physicalจงึ ทาให้เกดิ ความเป็นอสิ ระของข้อมูล (Data Independence)ท้งั หมดน้ีเราได้ศกึ ษากนั ในบทท่ี 1 แล้ว ดงั น้ันในบทน้ีเราจะทาการศึกษาและความเข้าใจถึงลักษณะฐานข้อมูลเชิงสมั พันธว์ ่ามีลักษณะหรือรูปแบบในการเกบ็ ข้อมูลอย่างไรระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์จุดประสงคท์ วั่ ไป เพ่ือให้ร้จู ักโครงสร้างของฐานข้อมูลเชิงสมั พันธ์ เพ่ือให้ทราบหลักการควบคุมความถูกต้องให้กบั ข้อมูล เพ่ือให้ร้จู ักคียป์ ระเภทต่างๆ เพ่ือให้ร้จู ักกฎความคงสภาพของ Entity เพ่ือให้ร้จู ักกฎความคงสภาพของการอ้างองิระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์จุดประสงคเ์ ชิงพฤติกรรม สามารถบอกความหมายของโครงสร้างภายในแต่ละตวั ของ ฐานข้อมูลเชิงสมั พันธไ์ ด้ สามารถบอกลักษณะของคยี ใ์ นแต่ละประเภทได้ สามารถกาหนดคียใ์ นตารางฐานข้อมูลได้อย่างถูกต้อง สามารถรักษากฎความคงสภาพของ Entity และกฎความ คงสภาพของการอ้างองิ เพ่ือให้ตารางฐานข้อมูลมคี วาม ถูกต้อง สามารถจัดการได้อย่างถูกต้องเม่อื มกี ารผดิ กฎความคง สภาพของการอ้างองิระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์เน้ อื หาสาระ โครงสร้างของฐานข้อมูลเชิงสมั พันธ์ การควบคุมความถูกต้องให้กบั ข้อมูล (Data Integrity)ระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ 2.1 โครงสรา้ งของฐานขอ้ มูลเชิงสมั พนั ธ์ ฐานข้อมูลเชิงสมั พันธ์ เป็นการจัดเกบ็ ข้อมูลในรปู แบบของตาราง (Tap) ท่มี ลี ักษณะเป็นสองมิติ คือ แถว (Row) และคอลัมน์ (Column) ฐานข้อมูล (Database) ลักษณะโครงสร้างการจัดเกบ็ ภายในฐานข้อมูลเชิงสมั พันธท์ ่สี าคัญ คือ ฐานข้อมูล (Database) สามารถประกอบข้นึ จาก ตาราง (Table) ต้ังแต่ 1 ตารางข้นึ ไปฐานข้อมูลเชิงสมั พันธจ์ ะเรียกตารางน้ีว่า Relation ตาราง 1 ตารางประกอบข้นึ จากกลุ่มของข้อมูลเร่ืองใดเร่ืองหน่ึง ซ่ึง เรียกว่า ฟิ ลด์ (Field) ในฐานข้อมูลเชิงสมั พันธจ์ ะเรียกฟิ ลดน์ ้ีว่า Attributeระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ จานวนฟิ ลด์ หรือ Attribute จะเรียกว่า Degree และข้อมูลในแต่ละชุด หรือแต่ละแถว จะเรียกว่า เรคคอร์ด (Record) ในฐานข้อมูลเชิงสมั พันธจ์ ะเรียกเรคคอร์ดน้ีว่า Tuple จานวน Record หรือ Tuple ในตารางหน่ึงท่มี ีความสมั พันธก์ บั Tuple ในอกี ตารางหน่งึ เรียกว่า Cardinality ในการเช่ือมโยงกนั ระหว่างข้อมูลในตาราง 2 ตาราง หรือมากกว่า จะ เช่ือมโยงโดยใช้ฟิ ลด์ท่มี อี ยู่ในตารางท่ตี ้องการเช่ือมโยงข้อมูลกนั ดัง รปู ภาพต่อไปน้ีระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ Database Table : user Field หรือ Attribute id name password group_id Record 0 หรือ 0 Chanchai Chan123 1 Tuple 1 Weraya Wera456 Table : group name Group_id Admin 0 User 1 … รูปท่ี 2.1 ลักษณะโครงสร้างของฐานข้อมูลเชิงสมั พันธ์ระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ จากรูปโครงสร้างฐานข้อมูล สามารถประกอบไปด้วยตารางได้ต้ังแต่ 1 ตาราง ยกตวั อย่างในรปู เราจะเหน็ ตาราง user ท่ใี ช้เกบ็ข้อมูลรายละเอยี ดของผู้ใช้งาน โดยตาราง user น้ี ประกอบข้นึ จาก 4ฟิ ลด์ คอื id, name, password และ group_id (กล่าวได้ว่าตาราง user น้ีเป็นตารางท่มี ี Degree เท่ากบั 4) และในตารางuser น้ีประกอบไปด้วยชุดข้อมูลของข้อมูล 2 เรคคอร์ด คอืเรคคอรด์ ที่ 1 รหัสผู้ใช้ เทา่ กบั 0 ช่ือ chanchai รหัสผ่านchan123 และอยู่กลุ่มผู้ใช้ท่ี 0เรคคอรด์ ที่ 2 รหัสผู้ใช้ เทา่ กบั 1 ช่ือ weraya รหัสผ่าน wera456และอยู่กลุ่มผู้ใช้ท่ี 1ระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ นอกจากน้ัน ในตาราง user ยังเช่ือมโยงข้อมูลไปยังตารางgroup ผ่านทางฟิ ลด์ group_id ดังน้ัน เราสามารถสรปุ ได้ว่าผู้ใช้ช่ือ chanchai เป็นผู้ใช้ระดับ Admin ส่วนผู้ใช้ช่ือ werayaเป็นผู้ใช้ระดับ User จากความสมั พันธข์ อง 2 ตารางน้ีCardinality เท่ากบั (1,1) เน่ืองจากผู้ใช้แต่ละคนจะมีสถานนะในกล่มุ การใช้งานกลุ่มใดกลุ่มหน่ึงเท่าน้ันระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์2.2 การควบคมุ ความถูกตอ้ งใหก้ บั ขอ้ มูล (Data Integrity) เพ่ือความถูกต้องของข้อมูลภายในฐานข้อมูลจึงได้มกี ารต้งักฎเพ่ือควบคุมความถูกต้องของข้อมูลข้นึ เรียกว่า DataIntegrity หรือ Integrity Rule โดยฐานข้อมูลแต่ละตวั อาจจะมีกฎท่แี ตกต่างกนั ไป เช่น ฐานข้อมูลพนักงานกจ็ ะมี IntegrityRule ดงั น้ี พนักงานแต่ละคนจะต้องสงั กดั ในแผนกงานใดแผนกหน่ึง การระบุเพศของพนักงานให้ใช้สญั ลักษณ์ M = เพศชาย และ F = เพศหญิงระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ วนั เดอื นปี เกดิ ของพนักงานให้จดั เกบ็ อยู่ในรปู แบบ วนั /เดือน/ปี เงนิ เดือนของพนักงานต้องเป็นค่าบวก จะตดิ ลบไม่ได้ ประเดน็ สาคญั ของ Data Integrity คือ เร่ืองของคีย์ (key)สามารถสรปุ ลักษณะท่สี าคัญของคยี ์ในแต่ละประเภทในฐานข้อมูลเชิงสมั พันธ์ ได้ดังน้ีระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ Primary Key จะเป็นฟิ ลด์ท่มี คี ่าไม่ซา้ กนั เลยในแต่ละเรคคอร์ดใน ตารางน้ัน เราสามารถใช้ฟิ ลดท์ ่เี ป็น Primary Key น้ีเป็นตวั แทน ของตารางน้ันได้ทนั ที ฟิ ลด์ท่จี ะสามรถเลือกให้เป็น Primary Key ได้จะต้องมีคุณสมบัตคิ วามเป็นหน่ึงเดยี ว (Uniqueness) คอื ค่าของ ฟิ ลดน์ ้ันจะต้องไม่ซา้ กนั จากตาราง user ใน รปู ท่ี 2.1 เราสามรถ เลือกให้ ฟิ ลด์ id เป็น Primary Key ได้ เน่ืองจาก รหัสพนักงาน ไม่ มที างซา้ กนั ได้ แต่เราจะไม่เลือกฟิ ลด์ name เป็น Primary Key เน่ืองจาก ช่ือพนักงาน อาจจะซา้ กนั ได้ พนักงานอาจจะมีช่ือ เหมือนกนั ได้ระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ Candidate Key คยี ์คู่แข่ง เป็นฟิ ลด์หน่ึงหรือหลายฟิ ลด์ท่มี ี คุณสมบตั ทิ ่เี ป็น Primary Key ได้ แต่ไม่ได้เป็นคีย์หลัก เช่น ช่ือและนามสกุล สามารถรวมกนั เป็นคยี ค์ ู่แข่งได้ พิจารณาจาก ตวั อย่างต่อไปน้ี EmpID FName LName DepID 001 สมชาย สุขมาก 01 002 จนั จริ า ดยี งิ่ 02 003 วษิ ณุ รกั ไทย 01 004 สมชาย ใจดี 03 รูปท่ี 2.2 ตาราง Employee เกบ็ ข้อมูลพนักงานระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ จากตวั อย่างน้ี เราสามารถมี EmpID เป็น CandidateKey ได้ หรือกาหนดให้ฟิ ลด์ FName + LName เป็นCandidate Key กไ็ ด้ เน่ืองจากท้งั 2 ฟิ ลดน์ ้ีเม่อื รวมกนั แล้วมีคุณสมบัตเิ ป็น Primary Key ท่สี ามารถเป็นตวั แทนของตารางได้ระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ Composite Key เป็นคียท์ ่ใี ช้รวมกบั ฟิ ลด์อ่นื ๆ ท่เี ป็น Composite Key เหมือนกนั มาใช้เป็น Primary Key ของ ตาราง เน่ืองจากบางคร้ังเราไม่สามรถกาหนดเพียงฟิ ลดเ์ ดียวให้ เป็น Primary key ได้ ต้องอาศยั ฟิ ลด์ร่วมกนั เช่น ตาราง Order ซ่ึงเกบ็ รายละเอยี ดการส่งั ซ้ือ โดยหมายเลขการส่งั ซ้ือ (ฟิ ลด์ order_no) 1 หมายเลข สามารถส่งั ซ้ือสนิ ค้า (ฟิ ลด์ product_id) ได้หลายรายการ เราไม่สามรถกาหนดให้ฟิ ลด์ order_no เป็น Primary Key ได้ เน่ืองจากเหตุผลท่รี หัสการ ส่งั ซ้ือ 1 หมายเลขสามรถซ้ือสนิ ค้าได้หลายรายการ แต่ถ้าเรา กาหนดให้ฟิ ลด์ order_no และ product_id ประกอบรวมกนั เป็น Composite Key กส็ ามรถใช้เป็น Primary Key ของ ตารางน้ีได้ระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์Table : Order Product_id Quantity Price 01 4 50 Order_no 02 5 100 001 01 10 250 001 03 15 300 002 003 รูปท่ี 2.3 ตาราง Order เกบ็ ข้อมูลรายการส่งั ซ้ือระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ Foreign Key เป็นฟิ ลด์ในตารางหน่ึง ท่มี ีความสมั พันธก์ บั ฟิ ลด์ท่เี ป็น Primary Key อกี ตารางหน่ึง เช่น ในรปู ท่ี 2.1 ความสมั พันธข์ องตาราง user และตาราง group โดยตาราง user มีฟิ ลด์ group_id เป็นสมาชิกของฟิ ลดห์ น่ึงในตาราง โดยฟิ ลด์ group_id น้ีปรากฏอยู่ในตาราง group ในฐานะ Primary Key ดงั น้ัน เราจะถอื ว่าฟิ ลด์ group_id น้ีเป็น Foreign Keyระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ Null ในการจดั เกบ็ ข้อมูลในฐานข้อมูล บ่อยคร้ังท่ถี ูกจัดเกบ็ ไม่ครบถ้วน ซ่ึงอาจจะมาจากสาเหตไุ ม่มีข้อมูลน้นั ๆ ทาให้ไม่ สามรถระบุข้อมูลลงไปได้ เช่น ข้อมูลวันเดือนปี เกดิ ของ ประชากร อาจจะไม่ทราบวนั เดอื นปี หรืออาจจะทราบเพียงแต่ ปี เกดิ เทา่ น้ัน เป็นต้น แต่เน่ืองจากทุก Attribute ในฐานข้อง มูลของ Relational Database จะต้องมีค่าของข้อมูล ดังน้ันเพ่ือแก้ปัญหาดังกล่าวจงึ ได้มีการกาหนดค่าของข้อมูลท่ี ไม่ทราบค่าข้นึ เรียกว่า ค่า Null น้นั เองระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์พิจารณาตวั อย่างตาราง Emp ซ่ึงเกบ็ ข้อมูลพนักงาน ต่อไปน้ีEmpno Ename Job Mgr Hiredate Sal Comm Deptno CLERK 7902 17 DEC 1980 800 NULL 207369 SOMPONG SALESMAN 7902 20 FEB 1981 1600 300 30 SALESMAN 7902 22 FEB 1981 1250 500 307499 AEK PRESIDENT NULL 17 NOV 1981 5000 NULL 107521 WILAI7902 KING รูปท่ี 2.4 ตาราง Emp เกบ็ ข้อมูลพนักงาน และแสดงค่า Null ในฟิ ลด์ Mgr และ Commระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์จากตารางข้างต้นมีข้อมูลท่ปี รากฏค่า Null อยู่ 2 ฟิ ลด์ คอื ฟิ ลด์ Mgr (เก็บหมายเลขพนกั งานทีเ่ ป็ นหวั หนา้ ) พนักงานช่ือว่า KING เกบ็ ค่าเป็น Null ท่ฟี ิ ลดน์ ้ีเน่ืองจากพนักงานช่ือว่า KING เป็นประธานบริษัท ดังน้ันจึงไม่มีใครเป็นหัวหน้าของเขา ฟิ ลด์ Comm (เกบ็ ค่าคอมมชิ ชนั่ จากการขายสินคา้ ) พนักงาน ช่ือว่า SOMPONG และ KING เกบ็ ค่าเป็น Null ท่ฟี ิ ลด์น้ี เน่ืองจากพนักงานท้งั 2 คน ไม่ได้ทางานในตาแหน่ง SALESMAN เช่นเดียวกบั พนักงานท่ชี ่ือว่า AEK และ WILAI ดังน้ันพนักงานช่ือ SOMPONG และ KING จงึ ไม่ มคี ่าคอมมิชช่ันจากการขายสนิ ค้าระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์กฎความคงสภาพของการอา้ งอิง (Referential Integrity Rule) กล่าวว่า ถ้า Relation ใดมี Attribute ท่เี ป็น Foreign Keyอยู่ ข้อมูลท่เี ป็น Foreign Key น้ันจะต้องเป็นข้อมูลท่มี ีอยู่ใน PrimaryKey ของอกี Relation หรือ ถ้าไม่แล้วข้อมูลท่เี ป็น ForeignKey จะต้องเป็นค่าว่าง พิจารณาตวั อย่างท่ผี ดิ กฎ ReferentialIntegrity Rule ต่อไปน้ีระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์กฎความคงสภาพของ Entity (Entity Integrity Rule) กล่าวว่า จะต้องไม่มี Attribute ใดท่ปี ระกอบข้นึ เป็นคยี ์หลักของ Relation มขี ้อมูลท่เี ป็นค่าว่าง (Null Value) หรือพดู ง่ายๆกค็ ือ “ค่าของ Primary Key จะเป็น Null ไม่ได้” Table: Employee EmpID FName LName DepID สขุ มาก 01 001 สมชาย ดีย่งิ 02 002 จันจิรา รักไทย 01 ใจดี 03 วิษณุ สมชาย รปู ท่ี 2.5 ตาราง Employee ท่ผี ดิ กฎ Entity Integrity Ruleระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ Table: user Name Password Group_id Chanchai Chan123 0 Id Weraya Wera456 1 0 yongyut yong789 2 1 2 Table: group name Group_id Admin 0 User 1 จากรปู ท่ี 2.6 ผดิ กฎ Referential Integrity Rule เน่ืองจากใน Relation ผู้ใช้ (user) กลุ่มผู้ใช้หมายเลข 2 ไม่มีใน Relation กลุ่มผู้ใช้ (group)ระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์ ในประเดน็ ของ Referential Integrity Rule น้ใี ช้การแก้ไขหรือลบ Primary Key ใน Relation หน่ึงจะมผี ลกระทบถงึForeign key ในอกี Relation หน่ึง ดงั น้ันเพ่ือให้คงความถูกต้องของ Referential Integrity Rule น้ีจึงกาหนดวธิ กี ารจดั การไว้ 3 วธิ ี คอืระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์1) กระทาแบบต่อเนอื่ ง (Cascade) คือ ถ้ามกี ารลบ หรือ เปล่ียนแปลงข้อมูลท่เี ป็น Primarykey ท่มี ีการอ้างถงึ แล้วจะต้องมีการลบหรือเปล่ียนแปลงข้อมูลในRelation ท่มี กี ารอ้างถงึ น้ันด้วย เช่นจากตารางในรปู ท่ี 2.6 ถ้ามีการแก้ไขข้อมูลในฟิ ลด์ group_id จาก Relation ช่ือว่า groupจาก 1 เป็น 3 แล้ว ใน Relation ช่ือว่า user กจ็ ะต้องมกี ารแก้ไขข้อมูลของผู้ใช้ท่ชี ่ือว่า weraya จากฟิ ลด์ group_id เท่ากบั1 ให้เป็น 3 ด้วยระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์2) กระทาแบบมีขอ้ จากดั (Restricted) คอื DBMS จะอนุญาตให้ลบหรือเปล่ียนแปลงข้อมูลท่ีเป็น Primary key กต็ ่อเม่อื Primary key น้นั ไม่ถูกอ้างองิใน Relation อ่นื ใด มฉิ ะน้ันจะปฏเิ สธการลบหรือเปล่ียนแปลงเช่น จากตารางในรปู ท่ี 2.6 ถ้าจะทาการลบ หรือเปล่ียนแปลงค่าในฟิ ลด์ group_id ของ Relation ท่ชี ่ือว่า group จะถูกปฏเิ สธการกระทาดังกล่าว เน่ืองจากฟิ ลด์ group_id น้ีเป็นPrimary Key และถูกอ้างองิ ไปใช้กบั Relation ท่ชี ่ือว่าuserระบบฐานข้อมูล รหัสวิชา 3000-0204
หน่วยท่ี 2 เร่ืองฐานข้อมูลเชิงสมั พันธ์3) กระทาโดยการใส่คาว่าง (Nullifies) คอื DBMS จะยอมให้มีการลบหรือเปล่ียนแปลงข้อมูลท่ีเป็น Primary key ได้ แต่ต้องมีการใส่ค่าว่าง (Null Value)ลงไปยังข้อมูลของ Attribute ท่เี ป็น Foreign key ท่มี กี ารอ้างองิ ถงึ ข้อมูลท่ถี ูกลบหรือเปล่ียนแปลง เช่น จากตารางในรปู ท่ี2.6 ถ้าทาการลบ Record ใน relation ท่ชี ่ือว่า group ท่ีมคี ่าของ group_id เทา่ กบั 1 ออกไป ดังน้ันใน Relationท่ชี ่ือว่า user จะต้องมีการใส่ค่าว่างในฟิ ลด์ group_id ของRecord ผู้ใช้ท่ชี ่ือว่า werayaระบบฐานข้อมูล รหัสวิชา 3000-0204
Search
Read the Text Version
- 1 - 28
Pages: