Thiết kế cơ sở dữ liệu
Lis Sulmont
Curriculum Manager
Xác định nhóm dữ liệu lặp và tạo bảng riêng cho chúng
Định nghĩa chính quy hơn:
Mục tiêu của chuẩn hóa là:
- Đo được mức dư thừa trong lược đồ quan hệ
- Cung cấp cách biến đổi lược đồ để loại bỏ dư thừa
Sắp xếp từ ít đến nhiều chuẩn hóa:
$$
Dữ liệu ban đầu
| 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 |
Dữ liệu ban đầu
| 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 |
Dữ liệu ban đầu
| 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 |
Rủi ro nếu không chuẩn hóa đủ?
1. Bất thường cập nhật
2. Bất thường chèn
3. Bất thường xóa
Không nhất quán dữ liệu do dư thừa khi cập nhật
| 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 |
Để cập nhật email của sinh viên 520:
Không thể thêm bản ghi do thiếu thuộc tính
| 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 |
Không thể thêm sinh viên đã đăng ký tài khoản nhưng chưa ghi danh khóa nào
Xóa bản ghi gây mất dữ liệu ngoài ý muốn
| 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 |
Nếu xóa sinh viên 230, điều gì xảy ra với dữ liệu về Cleaning Data in R?
Rủi ro nếu không chuẩn hóa đủ?
1. Bất thường cập nhật
2. Bất thường chèn
3. Bất thường xóa
Cơ sở dữ liệu càng chuẩn hóa, càng ít gặp bất thường dữ liệu
Đừng quên nhược điểm của chuẩn hóa ở video trước
Thiết kế cơ sở dữ liệu