โมเดลเชิงสัมพันธ์ The relational model
ระบบฐานข้อมูลเชิงสัมพันธ์ (Relational Database) เป็นฐานข้อมูลที่ใช้โมเดลเชิงสัมพันธ์ (Relational Database Model) ผู้คิดค้นโมเดลเชิงสัมพันธ์นี้คือ Dr. E.F. Codd คิดค้นขึ้นเมื่อปี 1970 หรือ พ.ศ. 2513ใช้หลักพื้นฐานทางคณิตศาสตร์ แนวคิดของแบบจำลองแบบนี้มีลักษณะที่คนใช้กันทั่วเพระโมเดลนี้มีการเก็บข้อมูลเป็นตาราง ทำให้ง่ายต่อการเข้าใจและการประยุกต์ใช้งาน
โครงสร้างข้อมูลเชิงสัมพันธ์ ( Relation Data Structure) แอตทริบิวต์(Attribute) โดเมน(Domain) ทูเพิล(Tuple) ดีกรี(Degree) คาริดินาลิตี้(Cadinality) ฐานข้อมูลเชิงสัมพันธ์(Relational database)
จากรูปมี relation 2 ตัว คือ Branch (สาขา) Staff (พนักงาน) คือ ตาราง 2 มิติ ประกอบไปด้วย แถว (row) และ คอลัมน์(column) จากรูปมี relation 2 ตัว คือ Branch (สาขา) Staff (พนักงาน)
แอตทริบิวต์ (Attribute ) ชื่อของคอลัมน์ในรีเลชั่น หนึ่ง ๆ ซึ่งเป็นรายละเอียดของข้อมูลที่ต้องจัดเก็บ ตัวอย่างจากภาพ รีเลชั่น สาขา (Branch) แอททริบิวต์จะประกอบด้วย รหัสสาขา (branchNo) ถนน (street) เมือง (city) รหัสไปรษณีย์ (postcode) โดยแอททริบิวต์หนึ่งๆ จะมีค่าข้อมูลเพียงค่าเดียว (Atomic Value)
การ กำหนด ขอบเขตค่าข้อมูลของแต่ละแอนทริบิวต์(attribute) โดเมน(Domain) การ กำหนด ขอบเขตค่าข้อมูลของแต่ละแอนทริบิวต์(attribute) เช่น ถ้า Attribute age ระบุว่า จะต้องเก็บข้อมูลชนิดตัวเลข(integer) ดังนี้ ค่าใน attribute จะต้องกรอกข้อมูลเป็นตัวเลข ชนิดinteger ทั้งหมด
Examples of Attribute Domains
คือ แต่ละแถวในรีเลชัน ทูเพิล(Tuple) คือ แต่ละแถวในรีเลชัน Tuple
จากรูป relation ชื่อ staff มี 8 ดีกรี(degree) จำนวนแอตทริบิวต์(attribute)ที่มีอยู่ในรีเลชัน(relation) จากรูป relation ชื่อ staff มี 8 ดีกรี(degree)
คาริดินาลิตี้(Cardinality) จำนวนแถวทั้งหมดใน relation ( Number of rows). cardinality จากรูป รีเลชัน staff มี จำนวน 6 cardinality
ฐานข้อมูลเชิงสัมพันธ์ (Relational database) คือ การรวบรวมรีเลชัน ต่างๆ ที่มีความสัมพันธ์กันเข้าไว้ด้วยกัน โดยจัดเป็น โครงสร้างที่เหมาะสม
Example: Branch and Staff Relations in a Relational Database Schema
คุณสมบัติของรีเลชัน (Properties of Relations) รีเลชันต้องมีชื่อกำกับ ซึ่งชื่อของแต่ละรีเลชันจะต้องมีชื่อแตกต่างกัน แต่ละแอตทริบิวต์ของรีเลชันจะต้องบรรจุค่าเพียงค่าเดียว ชื่อของแต่ละแอตทริบิวต์ในรีเลชันจะต้องแตกต่างกัน ค่าในแอตทริบิวต์จะต้องเป็นไปตามข้อกำหนดของโดเมนที่กำหนดไว้ แต่ละทูเพิลต้องมีความแตกต่าง จะไม่มีทูเพิลที่ซ้ำกัน
คีย์ Keys ?
คีย์ (Key) คือ แอททริบิวต์ที่มีค่าไม่ซ้ำ (Unique) ที่สามารถระบุค่าของทูเพิลใน รีเลชั่นได้ ในการกำหนดคีย์อาจ ประกอบด้วยแอททริบิวต์มากกว่า หนึ่งแอททริ บิวต์ประกอบกันเพื่อให้ได้ค่าที่ไม่ซ้ำ โดย คีย์จะต้อง ไม่เป็นค่าว่าง (Null Value)
ประเภทของคีย์(KEYS) ซุปเปอร์คีย์ (Super key ) คีย์คู่แข่ง(Candidate Key) คีย์หลัก (Primary Key) คีย์นอก (Foreign key)
1.ซุปเปอร์คีย์ (Super key) คือ attribute หรือ กลุ่ม attribute ที่บ่งบอกถึงความเป็นเอกลักษณ์(uniquely) ของแต่ละ ทูเพิล ในรีเลชัน Back
2. คีย์คู่แข่ง (Candidate Key) คีย์คู่แข่ง จะเป็น subset ของ super key โดย คีย์คู่แข่ง จะมี หนึ่ง หรือมากกว่าหนึ่ง attribute โดย attribute ที่เป็น คีย์คู่แข่ง ต้องมีค่าเป็น uniquely คุณสมบัติที่เหมาะสมของ คียคู่แข่ง ต้องมีค่าไม่ซ้ำกัน ต้องไม่เป็นค่าว่าง ซึ่ง คีย์คู่แข่ง สามารถกำหนดเป็น primary key ได้ Super key Candidate
ตัวอย่าง Back
3. คีย์หลัก (Primary Key) คีย์หลัก เป็น Attribute ที่มีคุณสมบัติของข้อมูลที่เป็นค่าที่ไม่ซ้ำกัน(Unique) Suppliers S# SName age City s1 SMITH 30 London s2 Adams 40 Athens s3 27 Paris
ตาราง Product จากตาราง Product คือ อะไร ………………… ? P# Pname Color Weight/KG P1 cd-rom Red 0.3 P2 glass Blue 0.2 P3 pen Green 0.1
Primary key แบบ composite Key เพื่อให้ได้ ค่าที่ Unique ค่าที่ไม่ซ้ำกัน จริง คีย์หลักอาจจะประกอบได้ หลาย Attribute เรียกคีย์หลักที่ประกอบไปด้วยหลาย Attribute ว่า คีย์ผสม (composite Key)
ตาราง sp เช่น ตาราง SP มีคีย์หลัก คือ S# และ P# quantity s1 p2 300 p3 200 s2 P2 100 Back
4.คีย์นอก (Foreign key) เป็น Attribute ใน relation หนึ่งที่ใช้ใน การอ้างอิงถึง Attribute เดียวกันนี้ในอีก relation หนึ่ง โดยAttribute นี้ มีคุณสมบัติเป็น Primary key ใน Relation ที่ถูกอ้างอิง
ตัวอย่าง คีย์นอก (Foreign key) Back
แบบฝึกหัด จงอธิบายความหมายของThe Relational Model จงให้ความหมายของคำว่า key และ ประเภทของkeyมีอะไรบ้าง จงอธิบาย พร้อมยกตัวอย่าง จงบอกความหมายของ คำต่อไปนี้ พร้อมยกตัวอย่าง รีเลย์ชัน(Relation) แอตทริบิวต์(Attribute) โดเมน(Domain) ทูเพิล(Tuple) ดีกรี(Degree) คาริดินาลิตี้(Cadinality)
โจทย์ จงออกแบบรีเลชันที่ใช้ในการเก็บประวัติผู้ป่วย และโรคที่ป่วย พร้อมทั้ง ตั้งชื่อ relation กำหนด attribute ของ relation primary key และ foreign Key ของ relation ที่ออกแบบ พร้อมบอกด้วยว่า relation แต่ละ relationที่นักศึกษาสร้าง มี ชื่อ relation ว่า มี จำนวน แอตทริบิวต์(Attribute) เท่าไร มี การจำกัด โดเมน(Domain) คืออะไร มี กี่ ทูเพิล(Tuple) มี กี่ ดีกรี(Degree) มี คาริดินาลิตี้(Cadinality) เท่าไร