Relational Database เป็นรูปแบบฐานข้อมูลที่ได้รับความนิยมมากที่สุดในปัจจุบัน ในการออกแบบ มีคำศัพท์มากมายที่ควรรู้จักไว้ ก่อนเริ่มการออกแบบ
ภาพที่ 1 ถูกใช้เพื่ออธิบายคำศัทพ์ด้านล่าง
Relation
รีเลชัน (Relation) คือ ชุดของทูเปิล (a set of tuple) ถ้าไม่ใช่ในวงวิชาการก็ใช้คำว่าเทเบิล (Table)
Attribute
แอตตริบิวต์ (Attribute) คือ สิ่งที่ใช้ระบุลักษณะของข้อมูลรวมถึงบอกด้วยว่าข้อมูลคืออะไร ตัวอย่างเช่น ข้อมูลคือ “Uaychai” ผู้ใช้จะไม่รู้เลยว่าข้อมูลนี้คืออะไร แต่ถ้าบอกว่า “Uaychai” คือ “FirstName” คำว่า”FirstName” ก็คือแอตตริบิวต์ของข้อมูล ถ้าไม่ใช่ในวงวิชาการก็ใช้คำว่าคอลัมน์ (Column)
Tuple
ทูเปิล (Tuple) คือ ข้อมูลที่อยู่ภายใต้ชุดแอตตริบิวต์เดียวกัน แต่ข้อมูลในแอตตริบิวต์อาจเหมือนหรือต่างกัน ตัวอย่างเช่น
ข้อมูล A = {FirstName:Uaychai, LastName:Chotjaratwanich}
ข้อมูล B = {FirstName:Anakin, LastName:Skywalker}
ข้อมูล C = {FirstName:Wookies, Age:25}
ข้อมูล A และ ข้อมูล B ถือเป็นสองทูเปิล เพราะมีแอตตริบิวต์เดียวกันคือ FirstName กับ LastName ในขณะที่ C ไม่ใช่ทูเปิลเดียวกับ A และ B เพราะมีชุดแอตตริบิวต์ต่างกัน
ถ้าไม่ใช่ในวงวิชาการ จะใช้คำว่า แถว (Row) หรือ เรคคอร์ด (Record)
รีเลชัน1 ถูกใช้เพื่อเป็นตัวอย่างคำศัพท์ด้านล้าง
Class | Product | Period | Lecturer |
---|---|---|---|
SQLS | SQL Server | Mon | Uaychai |
SQLS | SQL Server | Sat | Uaychai |
MyS | MySQL | Mon | Yoda |
MyS | MySQL | Sat | Uaychai |
รีเลชัน2 ถูกใช้เพื่อเป็นตัวอย่างคำศัพท์ด้านล่าง
Lecturer | Age |
---|---|
Uaychai | 36 |
Yoda | 200 |
Super Key
ซุปเปอร์คีย์ (Super Key) คือ ชุดของแอตตริบิวต์ ที่ข้อมูลในแต่ละทูเปิลของชุดแอตตริบิวต์นั้นมีค่าไม่ซ้ำกัน
ซุปเปอร์คีย์ของรีเลชันนี้1 ได้แก่ {Class, Period}, {Product, Period}, {Class, Period, Lecturer}, {Product, Period, Lecturer} และ {Class, Product, Period, Lecturer}
Candidate Key
แคนดิเดทคีย์ (Candidate Key) คือ ซุปเปอร์คีย์ที่มีจำนวนแอตตริบิวต์น้อยที่สุด
แคนดิเดทคีย์ของรีเลชัน1 ได้แก่ {Class, Period} และ {Product, Period} เพราะเป็นซุปเปอร์คีย์ที่จำนวนแอตตริบิวต์น้อยที่สุดคือ 2 ตัว
Prime Attribute
ไพร์มแอตตริบิวต์ (Prime Attribute) คือ แอตตริบิวต์ที่เป็นหรือเป็นส่วนหนึ่งของแคนดิเดทคีย์ ถ้าแอตตริบิวต์ใดที่ไม่ได้เป็นหรือเป็นส่วนหนึ่งของแคนดิเดทคีย์ใดๆเลย แอตตริบิวต์ตัวนั้นจะถูกเรียกว่า นอนไพร์มแอตตริบิวต์ (Non Prime Attribute)
ไพร์มแอตตริบิวต์ของรีเลชัน 1 ได้แก่ Class, Product, Period
นอนไพร์มแอตตริบิวต์ของรีเลชัน 1 ได้แก่ Lecturer
Primary Key
ไพรมารีคีย์ (Primary Key) คือ แคนดิเดทคีย์หนึ่งตัวที่ถูกเลือกมา เพื่อให้ข้อมูลในแคนดิเดทคีย์นั้นเป็นตัวแทนของแต่ละทูเปิลในรีเลชัน
ไพรมารีคีย์ของรีเลชัน 1 อาจเป็น {Class, Period} หรือ {Product, Period} อย่างใดอย่างหนึ่ง
Alternate Key
อัลเทอเนทคีย์ (Alternate Key) คือ แคนดิเดทคีย์ที่ไม่ได้ถูกเลือกมาเป็นไพรมารีคีย์
อัลเทอเนทคีย์ของรีเลชัน 1 อาจเป็น {Class, Period} หรือ {Product, Period} อย่างใดอย่างหนึ่ง แต่ต้องไม่ถูกเลือกเป็นไพรมารีคีย์ก่อนแล้ว
Foreign Key
ฟอร์เรนคีย์ (Foreign Key) คือ แอตตริบิวต์หรือชุดของแอตตริบิวต์ที่ข้อมูลในแอตตริบิวต์ต้องอ้างอิงข้อมูลในแอตตริบิวต์ตัวอื่นซึ่งอยู่ในรีเลชันเดียวกันหรือต่างรีเลชัน
ฟอร์เรนคีย์ของรีเลชัน 1 อาจเป็น Lecturer เพราะข้อมูลในแอตตริบิวต์ Lecturer อ้างอิงกับแอตตริบิวต์ Lecturer ในรีเลชัน 2
Functional Dependency
นำไปสู่ (Functional Dependency : สัญลักษณ์ → ) ถ้าให้ X และ Y เป็นแอตตริบิวต์หรือชุดแอตตริบิวต์ X นำไปสู่ Y (X→Y) ก็ต่อเมื่อหยิบข้อมูลใดๆใน X มาหนึ่งตัว จะต้องได้ข้อมูลใน Y หนึ่งตัว
ในรีเลชัน 1
Class → Product เพราะเมื่อข้อมูลClass คือ SQLS ไม่ว่าจะหยิบจากทูเปิลไหน ผลลัพท์ข้อมูลใน Product จะเป็น SQL Server และ เมื่อข้อมูลClass คือ MyS ไม่ว่าจะหยิบจากทูเปิลไหน ผลลัพท์ข้อมูลใน Product จะเป็น MySQL
Product → Class เพราะเมื่อข้อมูล Product คือ SQL Server ไม่ว่าจะหยิบจากทูเปิลไหน ผลลัพท์ข้อมูลใน Class จะเป็น SQLS และ เมื่อข้อมูล Product คือ MySQL ไม่ว่าจะหยิบจากทูเปิลไหน ผลลัพท์ข้อมูลใน Class จะเป็น MyS
Class ไม่นำไปสู่ Period เพราะเมื่อข้อมูลใน Class เป็น SQLS ไม่ว่าจะหยิบจากทูเปิลไหน ข้อมูลใน Period เป็นได้ทั้ง Mon และ Sat
{Product, Period} → Lecturer เพราะเมื่อข้อมูล {Product, Period} เป็น (SQL Server, Mon) ไม่ว่าจะหยิบจากทูเปิลไหน จะได้ Lecturer เป็น Uaychai และ เมื่อข้อมูล {Product, Period} เป็น (SQL Server, Sat) ไม่ว่าจะหยิบจากทูเปิลไหน จะได้ Lecturer เป็น Uaychai
Lecturer ไม่นำไปสู่ {Product, Period} เพราะเมื่อข้อมูล Lecturer เป็น Uaychai ไมว่าจะหยิบจากทูเปิลไหน {Product, Period} อาจเป็นได้ทั้ง (SQL Server, Mon), (SQL Server, Sat) และ (MySQL, Sat)
รีเลชัน 3 ถูกใช้เป็นตัวอย่างสำหรับคำศัพท์ด้านล่าง
ID | Name | Address | DisableWhen |
---|---|---|---|
1 | Uaychai | Bangkok | 1/1/2015 |
2 | Uaychai | Chiangmai | |
3 | Yoda | Khonkan |
รีเลชัน 4 ถูกใช้เป็นตัวอย่างสำหรับคำศัพท์ด้านล่าง
OrderID | OrderDate | CustomerID |
---|---|---|
Q001 | 5/5/2014 | 1 |
Q002 | 7/7/2014 | 1 |
Q003 | 2/3/2015 | 2 |
Q004 | 3/5/2015 | 2 |
Surrogate Key
เซอโรเกทคีย์ (Surrogate Key) คือ แอตตริบิวต์หรือชุดของแอตตริบิวต์ที่เป็นแคนดิเดทคีย์ และถูกใช้เพื่อเชื่อมข้อมูลกับรีเลชันอื่น
ในรีเลชัน 3 เซอโรเกทคีย์ คือ ID ซึ่งถูกใช้เพื่อเชื่อมข้อมูลกับรีเลชัน 4 ผ่านแอตตริบิวต์ CustomerID
Natural Key (Business Key)
เนเชอรัลคีย์ (Natural Key) คือ แอตตริบิวต์หรือชุดของแอตตริบิวต์ที่ถูกใช้เป็นตัวแทนของวัตถุในโลกจริง
ในรีเลชัน 3 เนเชอรัลคีย์ คือ Name ไม่ว่าจะเป็นข้อมูลในทูเปิล (แถว) 1 หรือ ทูเปิล 2 ต่างก็พูดถึงคนๆเดียวกัน แค่เปลี่ยนที่อยู่เท่านั้น