HOME

DAT001

DAT001

24 ธันวาคม 2559

Database System-Relational Data Model

Relational Data Model

     เวลาเก็บข้อมูลเรามักจะเก็บแบบตาราง
     (แบบ structure )
     แต่ในยุคใหม่ก็จะเริ่มมีแบบ unstructure
     แต่ถ้าข้อมูลไม่ได้ใหญ่เกินไป ก็ใช้แบบ structure นี่แหละ



     *** สังเกตว่ารูปแบบตารางนี่ จำนวน column ค่อนข้างจะคงที่ มักไม่ค่อยเพิ่ม column โดยไม่จำเป็น
     เพราะมันคือโครงสร้างของตาราง เราต้องออกแบบให้ดีก่อน ค่อยใส่ข้อมูลลงไป 
     เพราะฉะนั้นการเพิ่ม column ให้คิดดีๆ

     ทุกตารางจะมี Primary Key
     เอาไว้เป็นตัวแทนของข้อมูลในแถวนั้นๆ
     ex. มหาวิทยาลัย ก็มี primary key คือ รหัสนักศึกษา
     >>> ดังนั้น Primary Key จะซ้ำกันไม่ได้เด็ดขาด
     ส่วน column อื่นก็เป็นคุณสมบัติทั่วไป
     ข้อมูลในแต่ละ column จะมี domain (ขอบเขตในการใส่ข้อมูล) ต่างๆกันไป


     แต่ละตารางเรียกว่า relation
     เวลาอ้างอิงข้อมูลไปแต่ละตาราง อย่าเอาข้อมูลอื่นๆไปปนด้วยทั้งหมด
     คืออย่างรูปข้างบน
     เอาเฉพาะ branch No. ซึ่งเป็น primary key มาอ้างอิงก็พอ
     ไม่ต้องเอา street, city, postcode  ไปด้วย
     เพราะมันจะทำให้ข้อมูลซ้ำซ้อน 
     พอเวลาแก้ไขข้อมูลทีนึง ก็เกิดความยุ่งยาก

     primary key เมื่อมีการอ้างอิงในแต่ละตาราง จะเรียกได้ว่า foreign key

     เวลาจะออกแบบตารางเก็บข้อมูลตารางละเรื่องพอ  และแต่ละตารางต้องมี primary key

คุณสมบัติของrelational

     ลำดับของแถวและคอลัมน์ไม่ทำให้ข้อมูลเปลี่ยนไป
     จะไม่มีสองแถวที่ซ้ำกัน
     แอททริบิวทุกตัวจะเป็น atomic เท่านั้น (attribute แต่ละตัวใส่ได้เพียง1ค่า )
     จำนวนแอทริบิวในความสัมพันธ์ เรียกว่า ดีกรี

Key Rule

     คีย์ คือ สิ่งที่ใช้ในการกำหนดความเป็นเอกลักษณ์ของแถวในความสัมพันธ์
     ทำให้การเข้าถึงข้อมูลบนฐานข้อมูลเป็นไปได้อย่างรวดเร็ว
         
     Primary Key( คีย์หลัก )
          - คือคีย์ที่ใช้ในการอ้างถึง entity ในฐานข้อมูล
          - สามารถเลือกได้จาก record ใดๆก็ได้ ที่ไม่มีโอกาสซ้ำกันแน่ๆ
          ถึงไม่ซ้ำกันวันนี้ แต่วันหน้ามีโอกาสซ้ำกัน ก็ใช้ไม่ได้
          - ถ้าไม่มีข้อมูลใดเลยในฐานข้อมูลที่เหมาะสมที่จะเป็นคีย์หลัก 
          ควรกำหนด record ใหม่สำหรับเป็นคีย์หลักโดยเฉพาะ
     *คีย์หลักไม่จำเป็นต้องเป็น column เดียว เป็นหลาย column รวมกันก็ได้

     Secondary Key (คีย์รอง)
          คือคีย์เดี่ยวหรือคีย์ผสม เมื่อใช้ในการค้นหาข้อมูลความสัมพันธ์จะได้มากกว่า 1 เรคคอร์ด
          คีย์รองไม่จำเป็นต้องเป็นเอกลักษณ์

     Foreign Key( คีย์นอก )
          คีย์หลักของความสัมพันธ์นึง ที่ไปเชื่อมต่อกับความสัมพันธ์อื่น

     Super Key
          กลุ่มของ attribute ที่สามารถนำไไปค้นหาข้อมูลที่เป็นเอกลักษณ์ได้

     Candidate Key
          ซุปเปอร์คีย์ที่มีขนาดเล็กที่สุด ที่สามารถระบุความแตกต่างในแต่ละ Tuple ได้



Relational Algebra

     -Relational Algebra ประกอบด้วย operations ต่างๆขั้นพื้นฐาน

     Relational Algebra เรียกอีกอย่างว่า Relational query language
     ใช้ในการจัดการข้อมูล โดยการระบุตัวกระทำ กับความสัมพันธ์ที่ต้องการจัดการ
     ผลลัพธ์ที่ได้คือ ความสัมพันธ์ใหม่

          ประเภทการใช้งานของตัวกระทำกับความสัมพันธ์ มี 2 รูปแบบ คือ
     1. การใช้งานขั้นพื้นฐาน
          Selection     เลือกแถวจากความสัมพันธ์
          Projection    เลือกเฉพาะคอลัมน์ที่ต้องการจากความสัมพันธ์
          Cross Product     สามารถรวมความสัมพันธ์ได้
          Set Difference     หาความแตกต่างระหว่าง 2 ความสัมพันธ์
          Union     เชื่อม 2 ความสัมพันธ์เข้าด้วยกัน

     2. การใช้งานขั้นสูง
          intersection
          join
          division

     หรือจะแบ่งอีกแบบ
     
     1. Unary Operators   คือ ตัวกระทำที่ต้องการเพียงความสัมพันธ์เดียว ( ตารางเดียว )
     ex. selectm project, rename

     2, Binary Operators   คือตัวกระทำที่ต้องการ 2 ความสัมพันธ์
     ex. union, intersection, difference และ cartesian product


     Selection operation ()
          เป็นการเลือกแถวจากความสัมพันธืตามเงื่อนไขที่กำหนด
          ผลที่ได้อาจมีจำนวนtuple ตั้งแต่ 0 ถึงจำนวนtupleทั้งหมด

          >>> สังเกตไหมว่า คอลัมน์เท่าเดิม

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

     Projection operator (  )
          เลือกเฉพาะบางคอลัมน์ที่ต้องการจากความสัมพันธ์
          ผลลัพธ์ที่ได้จะได้จำนวนแถวเท่ากับความสัมพันธ์
          แต่จำนวนดีกรีอาจจะเท่ากัน หรือ น้อยกว่า 



เวลาเขียนคำสั่งซ้อนๆกัน เวลาดำเนินการ จะทำในวงเล็บก่อนแล้วออกมาเรื่อยๆ


     Union (  )
          ความสัมพันธ์ R1 และ R2 ที่มา Union ต้องมีรูปแบบความสัมพันธ์เหมือนกัน
          คือคอลัมน์มันต้องเหมือนกัน
          เมื่อ Union กันแล้ว ถ้ามีแถวไหนซ้ำกัน จะปรากฎเพียงครั้งเดียว


     เอาข้อมูล2ตารางมารวมกัน ตัดอันซ้ำกัน

     Intersection(  )
          เลือกจากแถวที่ซ้ำกันใน 2 ตาราง



     Cartesian Rule( cross )
          การนำแถวจากความสัมพันธ์ที่1 มาต่อกับ แถวจากความสัมพันธ์ที่2
          ผลที่ได้คือ จำนวนแถวทั้งหมด จะเท่ากับ จำนวนแถวของ 2 ตารางคูณกัน

     
     * cartesian นี่ ถ้า 2 ตารางมี คอลัมน์ต่างกัน ผลที่ได้ ก็จะมีจำนวนคอลัมน์เท่ากับ 2ตารางบวกกัน
     ( คอลัมน์+คอลัมน์ ), (แถวxแถว)


     Join 
          รวบรวมข้อมูลจากหลายความสัมพันธ์เข้าด้วยกัน
          โดยการ cross กัน แล้วระบุเงื่อนไขเพิ่มเติม


          >>> cross EMP  กับ DEPTINFO โดยเอาเฉพาะที่ Dept=Dept 
          cross กันเฉยๆ จะได้ 20 แถว
          แต่ว่า join ระบุเงื่อนไข เลยเหลือ 5 แถว

          เงื่อนไขในการ join ก็มีหลากหลาย


          กลับไปสังเกตรูปที่ join กัน มันจะมี คอลัมน์ซ้ำกัน คือ Dept
          ซึ่งเราจะตัดอันไหนออกไปก็ได้ มันเหมือนๆกัน
          พอตัดแล้วเรียกว่า Natural-Join
          ซึ่ง Natural-Join เป็นการ Join ที่ใช้กันมากที่สุด

     Division
          ใช้ในการหาข้อมูลบางประเภท เช่น การค้นหาลูกจ้างที่ทำงานอยู่ 2 แผนก


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

     รูปแบบ query จะต่างกับ relational algebra 
     { (A1,...,An) | p[(A1,...,An)]}
     ส่วนแรกเป็นการบอกว่าสนใจ atribute อะไร
     ส่วนหลัง | จะเป็นการบอกเงื่อนไข
     คำตอบที่ได้ จะประกอบด้วยแถวของข้อมูล (A1,...,An) ที่ทำให้สมการ p[(A1,...An)] เป็นจริง





cr: อ.เอิญ สุริยะฉาย  ภาควิชาวิทยาการคอมพิวเตอร์และสารสนเทศ (KMUTNB)



ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Comments system