บทที่ 3
ฐานข้อมูลเชิงสัมพันธ์

3.1  ลักษณะและรูปแบบของฐานเชิงสัมพันธ์

                ฐานข้อมูลเชิงสัมพันธ์ (Relational Database)  มีลักษณะ (Aspects)  หรือส่วนที่สำคัญอยู่ 3 ลักษณะ คือ

                1.  ลักษณะทางโครงสร้าง (Structural Aspect)  ผู้ใช้ฐานข้อมูลเชิงสัมพันธ์นี้จะรับรู้ในลักษณะที่ว่า  ข้อมูลในฐานข้อมูลในรูปตาราง  (Tables) ต่าง ๆ

                2.  ลักษณะความถูกต้อง (Integrity Aspect)  ตารางต่าง ๆ ในฐานข้อมูลเชิงสัมพันธ์จะต้องเป็นไปตามข้อกำหนด
เรื่องความถูกต้องของข้อมูล (
Integrity Constraints)

                3.  ลักษณะด้านจัดดำเนินการ (Manipulative Aspect)  ต้องมีตัวดำเนินการต่าง ๆ เตรียมไว้ให้แก่ผู้ใช้ในการสั่งกระทำการใด ๆ กับตารางข้อมูล  โดยจะมีตัวดำเนินการสำคัญอยู่ 3 ตัว ได้แก่

                        1.1  Restrict Operation  เป็นการดึงแถวข้อมูลเฉพาะบางแถวออกมาจากตาราง เช่น การใช้คำสั่ง Where (Condition)

                        1.2  Project Operation  เป็นการดึงคอลัมน์ข้อมูลเฉพาะบางคอลัมน์ออกมาจากตาราง  เช่นการใช้คำสั่ง  Select (Column_Name)

                        1.3  Join Operation  เป็นการเชื่อมตารางตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกันโดยมีค่าบางค่าในคอลัมน์ตรงกันเป็นหลัก  ดังภาพ

3.2  รีเลชั่นและเรลวาร์

                รีเลชั่น (Relation)  คือ  คำเรียกตาราง (Table)  ในเชิงคณิตศาสตร์  ระบบเชิงสัมพันธ์อาศัยตัวแบบเชิงสัมพันธ์ซึ่งเป็นทฤษฎีข้อมูลแนวนามธรรม (Abstract theory of data)  ตามหลักการของคณิตศาสตร์ผู้ที่วางรากฐานของตัวแบบเชิงสัมพันธ์ (1969-1970)  คือ E.F. Codd  ปัจจุบันแนวคิดของเขาเป็นที่ยอมรับกันเป็นสากล  มีอิทธิพลต่อเทคโนโลยีฐานข้อมูล , ปัญญาประดิษฐ์,  การประมวลผลภาษาธรรมชาติ  และการออกแบบระบบฮาร์ดแวร์อีกด้วย

                เรลวาร์ (Relvar)  ย่อมาจาก Relation Variables  ซึ่งก็คือโครงสร้างของตารางนั่นเอง  โดยคำว่า Variables  หมายถึง  ชื่อเขตข้อมูลหรือแอตทริบิวต์ (Attribute)  ส่วนค่าหรือข้อมูลที่อยู่ในตารางแต่ละช่องนั่นเรียกว่า Relation Values
                ตัวแบบเชิงสัมพันธ์จะมีชื่อเรียกสิ่งต่างๆ เกี่ยวกับตารางเป็นชื่อเฉพาะดังภาพต่อไปนี้

                - โดเมน  (Domain)  หมายถึง  สิ่งที่รวมค่าทั้งหมด  (Pool of Values)

                - คีย์หลัก  (Primary Key)  เป็นค่าที่ไม่ซ้ำกัน  และใช้เป็นตัวกำหนดอื่นๆ

                - ทูเพิล  (Tuple)  คือ  แถวของข้อมูล  ซึ่งในระบบแฟ้มข้อมูลเรียกว่า ระเบียน

                - แอตทริบิวต์  (Attribute)  คือ  เขตข้อมูล  คอลัมน์  หรือสดมภ์ของข้อมูล

                - คาร์ดิแนลิตี้  (Cardinality)  คือ จำนวนรวมของทูเพิลในแต่ละรีเลชั่น

                - ดีกรี  (Degree)  คือ  จำนวนรวมของสดมภ์ในแต่ละรีเลชั่น

 

3.3  คุณสมบัติของรีเลชั่น

                รีเลชั่นหรือตาราง  มีคุณสมบัติ 4 ประการ ดังนี้

                        1.  ต้องไม่มี Tuple หรือแถวใดซ้ำกันกับแถวอื่น (There are no duplicate tuples.)  เนื่องจากรีเลชั่นเกิดจากการเอา Domain มาคูณกัน  นอกจากนั้นข้อมูลในคีย์หลัก (Primary Key)  จะไม่ซ้ำ เช่นรหัสลูกค้าชื่อสมชาย  ถึงแม้จะมี 3 คน แต่จะได้รหัสไม่ซ้ำกันเพราะเป็นคนละคนกัน

                        2.  แต่ละแถวไม่จำเป็นต้องเรียงลำดับจากบนลงล่าง (Tuples are unordered, top to bottom.)  กล่าวคือ  ไม่มีความแตกต่างของการเรียงแถวหรือไม่เรียงแถว เพราะ

                        3.  แต่ละคอลัมน์ไม่จำเป็นต้องเรียงจากซ้ายไปขวา (Attributes are unordered, Left to right.)  เพราะ T1 , T2 , T3 = T2 , T1 , T3

                        4.  แต่ละแถวต้องมีค่าเดียวในแต่ละคอลัมน์ (Each tuple contains exactly one value for each attribute.)  กล่าวคือ  ต้องเป็น Atomic คือ  ต้องมีค่าเดียว ต้องไม่เป็นเซตของค่าหลายค่า  เช่น  แยกชื่อ  นามสกุลออกจากกัน

                ซึ่งคุณสมบัติข้อสุดท้ายนี้ทำให้ข้อมูลในตารางมีความเป็นปรกติหรืออยู่ในบรรทัดฐาน (Normalized)  ซึ่งเทียบเท่ากับว่าอยู่ใน  รูปแบบปกติหรือรูปแบบบรรทัดฐานขั้นที่ 1 (First Normal Form)  ซึ่งจะได้ศึกษาโดยละเอียดต่อไป

ภาพแสดงตารางข้อมูลที่ไม่มีคุณสมบัติข้อ 4

ภาพแสดงตารางข้อมูลที่เป็นไปตามคุณสมบัติ ข้อ 4

 

3.4  พีชคณิตเชิงสัมพันธ์และแคลคูลัสเชิงสัมพันธ์

                ทั้งพีชคณิตเชิงสัมพันธ์และแคลคูลัสเชิงสัมพันธ์  เป็นแนวคิดต้นกำเนิดของภาษาสอบถามเชิงโครงสร้าง (Structured Query Language : SQL) ซึ่งบริษัทไอบีเอ็มได้นำไปพัฒนาขึ้นในภายหลังจนกลายเป็นภาษามาตรฐานของระบบฐานข้อมูลในที่สุด หากนักศึกษาสามารถเข้าใจแนวคิดเบื้องต้นเหล่านี้ได้ก็จะนำไปสู่ความรู้ความสามารถในการใช้ภาษาสอบถามเชิงโครงสร้างได้ดียิ่งขึ้นในบทต่อไป

                3.4.1    พีชคณิตเชิงสัมพันธ์ (Relational Algebra)

                            พีชคณิตเชิงสัมพันธ์เป็นภาคจัดกระทำของตัวแบบเชิงสัมพันธ์ (The Manipulative Part of the Relational Model) กล่าวคือ เป็นเซตของตัวดำเนินการ (Operators) ซึ่งจะนำเอารีเลชั่น (ตาราง) มาเป็น โอเปอแรนด์ (Operand) หรือตัวถูกกระทำ และจะให้ผลลัพธ์ออกมาเป็นอีกรีเลชั่นหนึ่ง การเขียนพีชคณิตเชิงสัมพันธ์นี้จะเป็นการสั่งทีละข้อ กล่าวคือ เป็นแบบ Prescriptive หรือเป็นแบบ How – to ผู้เขียนต้องสั่งเชิงอธิบายเพื่อให้ได้ผลลัพธ์ออกมา มีลักษณะเป็นขั้นตอน (Procedural)

                        เช่น                JOIN supplier and shipment tuples over SNO.

                        (จงเชื่อมแถวของตาราง supplier และ shipment เข้าด้วยกันตามค่าในคอลัมน์ SNO)

                                                SESTRICT the result of that join to tuples for part P2.

                        (เอาผลที่ได้มาคัดเอาเฉพาะที่มีค่าในคอลัมน์ part = P2)

                                                PROJECT the result of that restriction over SNO and CITY.

                     (นำเอาผลที่ได้มาแสดงเฉพาะคอลัมน์ SNO  และ CITY)

การดำเนินการของพีชคณิตเชิงสัมพันธ์จะมี 8 ตัวดำเนินการใน 2 กลุ่ม คือ

                1.  ตัวดำเนินการเซตแบบดั้งเดิม ได้แก่ UNION, INTERSECTION, DIFFERENCE, Cartesian PRODUCT

                2.  ตัวดำเนินการเชิงสัมพันธ์พิเศษ ได้แก่ RESTRICT , PROJECT , JOIN , DIVIDE ซึ่งมีลักษณะการดำเนินการดังภาพต่อไปนี้

3.4.2  แคลคูลัสเชิงสัมพันธ์ (Relational Calculus)

                แคลคูลัสเชิงสัมพันธ์ เป็นเชิงพรรณนา หรือเป็นการระบุนิยามของผลลัพธ์ (Descriptive = To state definition of result) นั่นคือ ผู้เขียนต้องกล่าวถึงผลลัพธ์ที่ต้องการนั้นว่ามีลักษณะหรือรูปร่างหน้าตาอย่างไร แคลคูลัสเชิงสัมพันธ์จึงเป็นการสั่งที่ไม่เป็นโครงสร้าง (Nonprocedural) ตัวอย่าง การกำหนดรูปแบบโดยวิธีแคลคูลัส (Calculus Formulation) เช่น สั่งว่า

                Get SNO and CITY for suppliers such that there exists a shipment SP with the same SNO value and with PNO value P2.

                (ให้แสดงข้อมูลของแอตทริบิวต์ SNO และ CITY สำหรับผู้จัดส่งที่มีค่าหมายเลขผู้จัดส่ง (SNO) ในตาราง SP ตรงกันกับ ค่า P2 ในแอตทริบิวต์ PNO)

                แคลคูลัสเชิงสัมพันธ์ มี 2 ประเภท คือ

                1.  แคลคูลัสแบบแถว (Tuple Calculus) เป็นการระบุนิยามผลลัพธ์โดยยึดแถวข้อมูลในรีเลชั่น เป็นหลัก โดยกำหนดที่ตัวแปรพิสัย (Range Variables) ตัวอย่าง เช่น

                                RANGEVAR       SX          RANGES OVER S;

                                RANGEVAR       SY          RANGES OVER S;

                                RANGEVAR       SPX       RANGER OVER SP;

                                RANGEVAR       SPY        RANGER OVER SP;

                                RANGEVAR       PX          RANGER OVER P;

                                RANGEVAR       SU          RANGER OVER

                                                                (SX WHERE SX.CITY = London)

                                                                (SX WHERE EXISTS SPX (SPX.SNO = SX.SNO AND

                                                                                                                                SPX.PNS = PNO (‘P1’)));

                             (ให้แสดงข้อมูลของผู้จัดส่งที่อยู่ในกรุงลอนดอน และส่งชิ้นส่วน P1 ไปขาย)

                2.  แคลคูลัสแบบสดมภ์ (Domain calculus) เป็นการระบุนิยามผลลัพธ์โดยยึดสดมภ์หรือคอลัมน์ของข้อมูลในรีเลชั่นเป็นหลัก โดยกำหนดที่ตัวแปรพิสัย (Range Variables) ตัวอย่าง เช่น

                             SX

                             SX  WHERE S ( SNO:SX)

                             SX  WHERE S ( SNO:SX, CITY : LONDON’)

                             ( SX, CITYX ) WHERE S ( SNO:SX, CITY: CITYX )

                                                                AND SP ( SNO:SX, PNO:PNO(‘P2’))

                             (ให้แสดงหมายเลขผู้จัดส่งและเมืองของผู้จัดส่งที่ส่งชิ้นส่วน P2)

 

                             ( SX, PX ) WHERE S (SNO:SX, CITY:CITYX)

                                                                AND P (PNO:PX, CITY:CITYY)

                                                                AND CITYX CITYY

                             (ให้แสดงคู่ของหมายเลขผู้จัดส่งและหมายเลขชิ้นส่วนของผู้จัดที่เป็นการส่งไปต่าง

                          เมือง)

                             อีกตัวอย่างหนึ่งที่สั้นกว่า เช่น

                             SX  WHERE  EXISTS  STATUSX

                                                ( STATUSX > 20 AND

                                                  S ( SNO:SX, STATUS:STATUSX, CITY : ‘PARIS’))

                             (ให้แสดงหมายเลขผู้จัดส่งสินค้าเฉพาะรายที่อยู่ในกรุงปารีสที่มีค่าสถานะมากกว่า 20)

3.5  การเลือกใช้ระบบริหารฐานข้อมูล

                ปัจจุบันมีการผลิตระบบบริหารฐานข้อมูลออกมาเป็นจำนวนมาก โดยแต่ละโปรแกรมก็จะมีความสามารถ ประสิทธิภาพ และคุณสมบัติต่างกันไป เช่น ใช้กับคอมพิวเตอร์ประเภทใด ใช้ตัวแบบข้อมูลประเภทใด หรือมีภาษาฐานข้อมูลใดสนับสนุน ดังตารางต่อไปนี้

*owner’s หมายถึง มีภาษาเฉพาะของระบบนั้น

การที่องค์การจะตัดสินใจเลือกใช้ระบบบริหารฐานข้อมูลยี่ห้อใดนั้นควรพิจารณาตามเกณฑ์ต่าง ๆ ที่ขอเสนอแนะ ดังนี้

                1.  งบประมาณขององค์การและราคาของระบบบริหารฐานข้อมูลที่ต้องการ เนื่องจากระบบบริหารฐานข้อมูลแต่ละยี่ห้อจะมีราคาแตกต่างกัน ยิ่งมีความสามารถมากก็จะยิ่งแพงมาก ถ้าองค์การมีงบประมาณในการลงทุนด้านไอทีไม่มากพอ  อาจจำเป็นต้องพิจารณาใช้ระบบที่มีความสามารถปานกลางแต่รองรับงานขององค์การได้ไปพลางก่อน  แล้วจึงหาทางปรับปรุงระบบในโอกาสต่อไป

                2.  ความเข้ากันได้กับฮาร์ดแวร์ที่มีอยู่  จากในตารางจะพบว่าระบบบริหารฐานข้อมูลแต่ละยี่ห้อจะสามารถใช้ได้กับคอมพิวเตอร์ประเภทต่าง ๆ เช่น เครื่องเมนเฟรม  เครื่องมินิคอมพิวเตอร์ หรือเครื่องไมโครคอมพิวเตอร์  ไม่สามารถใช้ได้กับเครื่องระดับอื่น ๆ ได้  ยกเว้นบางยี่ห้ออาจใช้ได้กับเครื่องหลายประเภท  การจะตัดสินใจใช้จึงต้องพิจารณาดูว่าเครื่องคอมพิวเตอร์ที่มีอยู่ในองค์การของเราเป็นเครื่องประเภทใด  มีระบบปฏิบัติการอะไร  สามารถจะใช้กับระบบบริหารฐานข้อมูลที่ต้องการได้หรือไม่

                3.  ความน่าเชื่อถือของระบบบริหารฐานข้อมูล  คือ  ชื่อเสียงของระบบบริหารฐานข้อมูลที่ต้องการให้พิจารณาว่ามีเสถียรภาพเป็นที่ยอมรับในวงกว้างหรือไม่  มีชื่อเสียงมายาวนาน  พอสมควรหรือไม่  นอกจากนี้ยังรวมถึงผู้จำหน่ายระบบนั้นด้วยว่ามีความชำนาญในการดูแลระบบดังกล่าวมากน้อยเพียงใด  มีความรับผิดชอบต่อลูกค้าดีหรือไม่  ทำธุรกิจด้านนี้มานานเท่าใด  เคยขายระบบให้หน่วยงานอื่นบ้างหรือไม่  มากเพียงใด เป็นต้น

                4.  ความเร็วในการประมวลผล  ระบบบริหารฐานข้อมูลแต่ละยี่ห้อ  หรือแต่ละรุ่น  อาจมีความเร็วในการประมวลผลข้อมูล  การค้นหาข้อมูล  หรือการเรียงลำดับข้อมูล  แตกต่างกันออกไป  เมื่อนำมาใช้กับระบบเครื่องคอมพิวเตอร์ในองค์การที่มีอยู่  ต้องมีการทดสอบความสามารถของแต่ละยี่ห้อหรือแต่ละรุ่นว่ามีความเร็วในการทำงานมากน้อยแค่ไหน  หรือสามารถจะปรับแต่งระบบให้เร็วขึ้นได้หรือไม่

                5.  การรักษาความปลอดภัยของระบบบริหารฐานข้อมูล  เป็นการพิจารณาความสามารถด้านการรักษาความปลอดภัยของระบบบริหารฐานข้อมูลแต่ละตัวว่าน่าเชื่อถือมากน้อยเพียงใด  และมีวิธีการรักษาความปลอดภัยอย่างครบถ้วนตามมาตรฐานที่ควรจะมีหรือไม่

                6.  จำนวนผู้ใช้งานในระบบ  ระบบบริหารฐานข้อมูลแต่ละตัวจะอนุญาตให้มีจำนวนผู้ใช้งานในระบบได้มากน้อยไม่เท่ากันตามแต่ขนาดของงาน  และตามแต่ขีดจำกัดในการรองรับของระบบแต่ละรุ่น

                7.  จำนวนแฟ้มข้อมูลและขนาดของระเบียนที่เปิดใช้  เป็นการพิจารณาลักษณะของงานว่าต้องมีการเปิดแฟ้มข้อมูลสูงสุดกี่แฟ้ม  แต่ละแฟ้มมีระเบียนขนาดใหญ่ที่สุดเท่าใด  แล้วเลือกระบบบริหารฐานข้อมูลที่สามารถรองรับได้

                8.  ภาษาฐานข้อมูลที่ระบบสนับสนุน  จากในตารางข้างต้นจะเห็นว่าระบบบริหารฐานข้อมูลแต่ละระบบมีการใช้ภาษาแตกต่างกันไป  ส่วนใหญ่จะมีภาษาสอบถามเชิงโครงสร้าง  หรือเอสคิวเอล  แต่บางระบบก็ไม่มี  แต่จะใช้ภาษาของตนเองซึ่งเราต้องพิจารณาว่าผู้ใช้ควรจะต้องมาศึกษาภาษานั้นให้ชำนาญได้หรือไม่  ใช้เวลานานไหม  คุ้มค่าหรือเปล่า  เป็นต้น

                9.  ตัวแบบฐานข้อมูลและความเหมาะสมต่อลักษณะงาน  เราต้องพิจารณาว่างานในองค์การของเรานั้นมีการจัดเก็บข้อมูลประเภทใดเป็นหลัก  ถ้าเป็นข้อมูลปรกติธรรมดาอย่างองค์การธุรกิจส่วนใหญ่  ก็สมควรจะใช้ระบบที่เป็นแบบเชิงสัมพันธ์ซึ่งเป็นที่นิยมใช้กันมากอยู่แล้ว  แต่ถ้างานขององค์การจำเป็นต้องเก็บข้อมูลสื่อประสม (Multimedia)  เป็นจำนวนมากเป็นพิเศษแล้ว  เราก็ควรพิจารณาใช้ระบบที่เป็นแบบอื่นที่เหมาะสมกว่า  เช่น  ฐานข้อมูลแบบสื่อประสม (Multimedia  Database)  ฐานข้อมูลแบบสื่อประสมและสื่อพิเศษ (Multimedia and Hypermedia Database)  หรือฐานข้อมูลเชิงวัตถุ (Object-oriented Database) เป็นต้น

                10.  โปรแกรมประกอบอื่น ๆ ที่ระบบมีให้  เช่น  ระบบบริหารฐานข้อมูลนั้นมีโปรแกรมช่วยสร้างรายงาน (Report  Generator)  ที่มีความสามารถสูงและง่ายต่อการใช้หรือไม่  มีโปรแกรมช่วยสร้างโปรแกรมประยุกต์ (Application Generator)  หรือไม่  หรือมีโปรแกรมช่วยออกแบบและสร้างรีเลชั่นหรือไม่ เป็นต้น