Relational Data Model
เวลาเก็บข้อมูลเรามักจะเก็บแบบตาราง
(แบบ structure )
แต่ในยุคใหม่ก็จะเริ่มมีแบบ unstructure
แต่ถ้าข้อมูลไม่ได้ใหญ่เกินไป ก็ใช้แบบ structure นี่แหละ
แต่ถ้าข้อมูลไม่ได้ใหญ่เกินไป ก็ใช้แบบ 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)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น