Friday, July 17, 2015

คีย์

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



 ภาพที่ 2.1 แสดงความสัมพันธ์ระหว่างลูกค้ากับตารางบัตรเครดิต


1. ซูเปอร์คีย์

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

แบบที่ 1 รหัสอาจารย์
แบบที่ 2 รหัสอาจารย์และหมายเลขบัตรประจำตัวประชาชน
แบบที่ 3 รหัสอาจารย์ ชื่อสกุลอาจารย์ หมายเลขโทรศัพท์

2. คีย์คู่แข่ง

    คีย์ คู่แข่ง (candidate key) หมายถึง ซูเปอร์คีย์ที่มีขนาดเล็กที่สุด ที่ไม่มีแอททริบิวต์อื่นเป็นเซตย่อย มาร่วมกันเพื่อให้เกิดเป็นเอกลักษณ์ในตารางนั้น ๆ

3. คีย์หลัก
    
    คีย์ หลัก (primary key) คือ คีย์คู่แข่งที่ถูกเลือก เพื่อกำหนดให้ข้อมูลในตารางนั้นมีความเป็นเอกลักษณ์ แยกให้แถวแต่ละแถวมีข้อมูลไม่ซ้ำกัน คำว่าแถว ในหนังสือบางเล่มเรียกว่าทูเพิล หรือระเบียน โดยคุณสมบัติของคีย์หลักจะต้องไม่เป็นค่าว่าง ในแต่ละแอททริบิวต์อาจจะมีคีย์คู่แข่งที่ไม่ได้รับการเลือกให้เป็นคีย์หลัก คีย์นั้นจะเรียกว่าคีย์สำรอง (alternate key) ในการเลือกคีย์คู่แข่งเพื่อให้เป็นคีย์หลักอาจจะเลือกเอาแอททริบิวต์ มากกว่าหนึ่งแอททริบิวต์ผสมกันได้เรียกว่า คีย์ผสม (compound key)

4. คีย์นอก

    คีย์ นอก (foreign key) หมายถึง คีย์หลักของตารางแม่ เมื่อนำมาใช้ในการเชื่อมโยงในอีกตารางหนึ่ง (ตารางลูก) เพื่อให้ตารางสอง ตารางเชื่อมโยงข้อมูลถึงกันจะเรียกว่า คีย์นอก


ภาพที่ 2.2 แสดงความสัมพันธ์ระหว่างคีย์หลักและคีย์นอก


    จากภาพที่ 2.2 แสดงให้เห็นถึงข้อมูลทั้งตาราง MEMBER และตาราง DONOR มีความเชื่อมโยงถึงกันและกัน มีความหมายว่า นายทวีรัตน์ นวลช่วย หมู่โลหิต A- วันเดือนปีเกิดคือ 2508-04-18 น้ำหนัก 62 .หมายเลขโทรศัพท์ที่ติดต่อได้คือ 074-312-726 ได้บริจาคโลหิตเมื่อวันที่ 2550-10-22 ด้วยปริมาณโลหิต 400 CC และอีกรายการหนึ่งคือ นายเจริญ ถิ่นนุกูล ได้บริจาคโลหิตในวันเดียวกันด้วยปริมาณ 300 CC เป็นต้น ให้สังเกตว่า แอททริบิวต์ M_CODE มีชื่อเหมือนกันทั้งสองตาราง แต่ในตาราง MEMBER จะเรียกว่า คีย์หลัก ในขณะที่ตาราง DONOR กลับเรียกว่าคีย์นอก และข้อมูลในคีย์ทั้งสอง
ต้องมีค่าตรงกัน ฉะนั้นจึงเรียกว่าสัมพันธ์กัน

0 comments:

Post a Comment

Subscribe to RSS Feed Follow me on Twitter!