การออกแบบฐานข้อมูล
Lis Sulmont
Curriculum Manager
ระบุกลุ่มข้อมูลที่ซ้ำกันและสร้างตารางใหม่สำหรับกลุ่มเหล่านั้น
นิยามที่เป็นทางการมากขึ้น:
เป้าหมายของการทำ Normalization คือ:
- ระบุระดับความซ้ำซ้อนในโครงสร้างเชิงสัมพันธ์ได้
- มีกลไกในการแปลงโครงสร้างเพื่อกำจัดความซ้ำซ้อน
เรียงจาก Normalize น้อยที่สุดไปมากที่สุด:
$$
ข้อมูลเริ่มต้น
| Student_id | Student_Email | Courses_Completed |
|------------|-----------------|----------------------------------------------------------|
| 235 | [email protected] | Introduction to Python, Intermediate Python |
| 455 | [email protected] | Cleaning Data in R |
| 767 | [email protected] | Machine Learning Toolbox, Deep Learning in Python |
| Student_id | Student_Email |
|------------|-----------------|
| 235 | [email protected] |
| 455 | [email protected] |
| 767 | [email protected] |
| Student_id | Completed |
|------------|--------------------------|
| 235 | Introduction to Python |
| 235 | Intermediate Python |
| 455 | Cleaning Data in R |
| 767 | Machine Learning Toolbox |
| 767 | Deep Learning in Python |
ข้อมูลเริ่มต้น
| Student_id (PK) | Course_id (PK) | Instructor_id | Instructor | Progress |
|-----------------|----------------|---------------|---------------|----------|
| 235 | 2001 | 560 | Nick Carchedi | .55 |
| 455 | 2345 | 658 | Ginger Grant | .10 |
| 767 | 6584 | 999 | Chester Ismay | 1.00 |
| Student_id (PK) | Course_id (PK) | Percent_Completed |
|-----------------|----------------|-------------------|
| 235 | 2001 | .55 |
| 455 | 2345 | .10 |
| 767 | 6584 | 1.00 |
| Course_id (PK) | Instructor_id | Instructor |
|----------------|---------------|---------------|
| 2001 | 560 | Nick Carchedi |
| 2345 | 658 | Ginger Grant |
| 6584 | 999 | Chester Ismay |
ข้อมูลเริ่มต้น
| Course_id (PK) | Instructor_id | Instructor | Tech |
|----------------|---------------|---------------|--------|
| 2001 | 560 | Nick Carchedi | Python |
| 2345 | 658 | Ginger Grant | SQL |
| 6584 | 999 | Chester Ismay | R |
| Course_id (PK) | Instructor | Tech |
|----------------|---------------|--------|
| 2001 | Nick Carchedi | Python |
| 2345 | Ginger Grant | SQL |
| 6584 | Chester Ismay | R |
| Instructor_id | Instructor |
|---------------|---------------|
| 560 | Nick Carchedi |
| 658 | Ginger Grant |
| 999 | Chester Ismay |
จะเกิดความเสี่ยงอะไรหาก Normalize ไม่เพียงพอ?
1. Update anomaly
2. Insertion anomaly
3. Deletion anomaly
ความไม่สอดคล้องของข้อมูลที่เกิดจากความซ้ำซ้อนเมื่อทำการอัปเดต
| Student_ID | Student_Email | Enrolled_in | Taught_by |
|------------|-----------------|-------------------------|---------------------|
| 230 | [email protected] | Cleaning Data in R | Maggie Matsui |
| 367 | [email protected] | Data Visualization in R | Ronald Pearson |
| 520 | [email protected] | Introduction to Python | Hugo Bowne-Anderson |
| 520 | [email protected] | Arima Models in R | David Stoffer |
หากต้องการอัปเดตอีเมลของนักเรียน 520:
ไม่สามารถเพิ่มเร็คคอร์ดได้เนื่องจากข้อมูลบางอย่างขาดหายไป
| Student_ID | Student_Email | Enrolled_in | Taught_by |
|------------|-----------------|-------------------------|---------------------|
| 230 | [email protected] | Cleaning Data in R | Maggie Matsui |
| 367 | [email protected] | Data Visualization in R | Ronald Pearson |
| 520 | [email protected] | Introduction to Python | Hugo Bowne-Anderson |
| 520 | [email protected] | Arima Models in R | David Stoffer |
ไม่สามารถเพิ่มนักเรียนที่สมัครแล้วแต่ยังไม่ได้ลงทะเบียนคอร์สใดได้
การลบเร็คคอร์ดทำให้ข้อมูลอื่นสูญหายโดยไม่ตั้งใจ
| Student_ID | Student_Email | Enrolled_in | Taught_by |
|------------|-----------------|-------------------------|---------------------|
| 230 | [email protected] | Cleaning Data in R | Maggie Matsui |
| 367 | [email protected] | Data Visualization in R | Ronald Pearson |
| 520 | [email protected] | Introduction to Python | Hugo Bowne-Anderson |
| 520 | [email protected] | Arima Models in R | David Stoffer |
หากลบนักเรียน 230 ออก ข้อมูลของคอร์ส Cleaning Data in R จะเกิดอะไรขึ้น?
จะเกิดความเสี่ยงอะไรหาก Normalize ไม่เพียงพอ?
1. Update anomaly
2. Insertion anomaly
3. Deletion anomaly
ยิ่งฐานข้อมูล Normalize มากเท่าไร ก็ยิ่งเกิดความผิดปกติของข้อมูลน้อยลงเท่านั้น
อย่าลืมข้อเสียของการทำ Normalization จากวิดีโอที่แล้ว
การออกแบบฐานข้อมูล