Giả sử bạn đã thiết lập cơ sở dữ liệu để lưu trữ dữ liệu thử nghiệm sự cố của các loại xe khác nhau. Bạn muốn lưu trữ dữ liệu của các bài kiểm tra sự cố cho tàu cao tốc, xe hơi và go-kart.Điều gì đó giống như kế thừa trong thiết kế cơ sở dữ liệu
Bạn có thể tạo ba bảng riêng biệt: SpeedboatTests, CarTests và GokartTests. Nhưng nhiều cột của bạn sẽ giống nhau trong mỗi bảng (ví dụ: id nhân viên của người thực hiện kiểm tra, hướng của xung đột (phía trước, bên, phía sau), v.v.). Tuy nhiên, nhiều cột sẽ khác nhau, vì vậy bạn không muốn chỉ cần đặt tất cả dữ liệu thử nghiệm trong một bảng vì bạn sẽ có một vài cột sẽ luôn là rỗng cho tàu cao tốc, một vài cột sẽ luôn luôn không có giá trị cho xe hơi, và một số ít sẽ không có giá trị cho go-kart.
Giả sử bạn cũng muốn lưu trữ một số thông tin không liên quan trực tiếp đến các kiểm tra (chẳng hạn như id nhân viên của nhà thiết kế của điều đang được kiểm tra). Các cột này dường như không được đặt trong bảng "Kiểm tra", đặc biệt là vì chúng sẽ được lặp lại cho tất cả các thử nghiệm trên cùng một phương tiện.
Hãy để tôi minh họa một sắp xếp bàn có thể, do đó bạn có thể xem các câu hỏi liên quan.
Speedboats id | col_about_speedboats_but_not_tests1 | col_about_speedboats_but_not_tests2 Cars id | col_about_cars_but_not_tests1 | col_about_cars_but_not_tests2 Gokarts id | col_about_gokarts_but_not_tests1 | col_about_gokarts_but_not_tests2 Tests id | type | id_in_type | col_about_all_tests1 | col_about_all_tests2 (id_in_type will refer to the id column of one of the next three tables, depending on the value of type) SpeedboatTests id | speedboat_id | col_about_speedboat_tests1 | col_about_speedboat_tests2 CarTests id | car_id | col_about_car_tests1 | col_about_car_tests2 GokartTests id | gokart_id | col_about_gokart_tests1 | col_about_gokart_tests2
Điều gì là tốt/xấu về cấu trúc này và cách nào là cách ưa thích để triển khai một cái gì đó như thế này?
Điều gì sẽ xảy ra nếu có một số thông tin áp dụng cho tất cả các xe bạn muốn có trong bảng Phương tiện? Bảng CarTests có trông giống như ...
id | vehicle_id | ... With a Vehicles table like this: id | type | id_in_type (with id_in_type pointing to the id of either a speedboat, car, or go-kart)
Đây chỉ là một mớ hỗn độn của hoàng gia. Làm thế nào NÊN một cái gì đó như thế này được thiết lập?
bản sao có thể có của [Làm thế nào để bạn có hiệu quả mô hình kế thừa trong cơ sở dữ liệu?] (Http://stackoverflow.com/questions/190296/how-do-you-effectively-model-inheritance-in-a-database) – Musa