Về cơ bản, có ba lựa chọn để chuyển tính tổng quát hóa thành mô hình cơ sở dữ liệu
1. Một bảng cho mỗi lớp bê tông
Tạo bảng Admin
, Teacher
và Student
. Mỗi bảng này chứa các cột cho tất cả các thuộc tính và quan hệ của User
- Chuyên nghiệp
- Tất cả các trường của một lớp con cụ thể đều nằm trong cùng một bảng, vì vậy không cần kết hợp để lấy tất cả dữ liệu Sinh viên
- Ràng buộc xác thực dữ liệu dễ dàng (chẳng hạn như các trường bắt buộc đối với
Student
)
- Con
- Tất cả các trường của
User
được sao chép trong mỗi bảng lớp con - Khóa ngoại cho
User
phải được chia thành ba trường FK. Một choAdmin
, một choTeacher
và một choStudent
.
- Tất cả các trường của
2. Trên bàn cho toàn bộ tập hợp tổng quát
Trong trường hợp này, bạn chỉ có một lệnh gọi bảng User
chứa tất cả các trường của User
+ tất cả các trường của tất cả các lớp con của User
- Chuyên nghiệp
- Tất cả các trường nằm trong cùng một bảng, vì vậy không cần kết hợp để lấy tất cả
User
dữ liệu - Không tách FK thành
User
- Tất cả các trường nằm trong cùng một bảng, vì vậy không cần kết hợp để lấy tất cả
- Con
- Có một loạt các trường không bao giờ được sử dụng. Tất cả các trường dành riêng cho
Student
vàTeacher
không bao giờ được điền choAdmins
và ngược lại - Xác thực dữ liệu, chẳng hạn như các trường bắt buộc cho một lớp cụ thể chẳng hạn như
Student
trở nên khá phức tạp vì nó không còn là mộtNot Null
đơn giản nữa ràng buộc.
- Có một loạt các trường không bao giờ được sử dụng. Tất cả các trường dành riêng cho
3. Một bảng cho mỗi lớp cụ thể và một bảng cho lớp cha
Trong trường hợp này, bạn tạo bảng cho từng lớp con cụ thể và bạn tạo bảng cho lớp User
. Mỗi bảng con cụ thể có FK bắt buộc đối với User
- Chuyên nghiệp
- Lược đồ chuẩn hóa nhất:Không có trường lặp lại nào cho các thuộc tính của người dùng và không có trường nào không sử dụng.
- Không tách FK thành
User
- Ràng buộc xác thực dữ liệu dễ dàng (chẳng hạn như các trường bắt buộc đối với
Student
)
- Con
- Bạn phải truy vấn hai bảng nếu bạn muốn tất cả dữ liệu của một
Student
- Quy tắc xác thực phức tạp để đảm bảo mỗi
User
bản ghi có chính xác mộtAdmin
,Teacher
hoặcStudent
ghi lại.
- Bạn phải truy vấn hai bảng nếu bạn muốn tất cả dữ liệu của một
Bạn chọn tùy chọn nào trong số những tùy chọn này phụ thuộc vào một số thứ như số lượng lớp con, số lượng thuộc tính trong lớp con hoặc lớp cha, số lượng FK của lớp cha và có thể là một số thứ khác mà tôi đã không làm được. nghĩ về.