2010-05-31 11 views
11

Hôm nay, tôi đã nghiên cứu về khoảng 2 cơ sở dữ liệu các phương pháp thiết kế thừa kế:Thừa kế bảng đơn (Tùy chọn thiết kế thừa kế cơ sở dữ liệu) ưu và nhược điểm và trong trường hợp nào nó được sử dụng?

  1. Single Table Inheritance
  2. Class Table Inheritance

Theo ý kiến ​​sinh viên của tôi, Độc Bảng Inheritance tạo ra một cơ sở dữ liệu nhỏ hơn so với các phương pháp khác bởi vì nó chỉ sử dụng 1 bảng. Nhưng tôi đọc rằng cách tiếp cận thuận lợi hơn là Thừa kế Bảng Lớp theo Bill Karwin.

Ưu điểm và nhược điểm của Thừa kế bảng đơn và trong trường hợp nào nó nên được sử dụng?

Trả lời

16

Theo ý kiến ​​của học sinh Bảng đơn Thừa kế làm cho cơ sở dữ liệu nhỏ hơn nhiều so với các cách tiếp cận khác vì cô chỉ sử dụng 1 bảng.

Không nhất thiết. Nếu các thực thể của hệ thống phân cấp của bạn không có nhiều thuộc tính chung, điều này sẽ dẫn đến nhiều cột null và sẽ lãng phí rất nhiều không gian.

Nhưng tôi đọc rằng phương pháp tiếp cận ưa thích hơn là Thừa kế bảng lớp theo Bill Karwin.

IMHO, không có câu trả lời duy nhất, các chiến lược khác nhau (một bảng cho mỗi phân cấp, một bảng cho mỗi lớp cụ thể, một bảng cho mỗi lớp) có tất cả điểm mạnh và điểm yếu và lựa chọn một hoặc khác.

Bảng đơn Ưu điểm và nhược điểm kế thừa và trong trường hợp nào nó được sử dụng?

Chiến lược này là tốt khi bạn cần truy vấn "đa hình" (không cần tham gia hoặc đoàn kết) miễn là bạn có thể giảm thiểu số cột không có giá trị (và thuyết phục DBA rằng lược đồ không chuẩn hóa sẽ không phải là vấn đề về lâu dài).

Trên thực tế, tôi đề nghị để kiểm tra Mapping Objects to Relational Databases: O/R Mapping In Detail Scott Ambler (tác giả của bài báo tham khảo về ORM) và đặc biệt là phần 2.6 Comparing The Strategies - không có điểm tại diễn giải ông - mà tôi trích dẫn dưới đây:

Ưu điểm:

  • Cách tiếp cận đơn giản.
  • Dễ dàng thêm các lớp mới, bạn chỉ cần thêm các cột mới cho dữ liệu bổ sung .
  • Hỗ trợ đa hình bằng cách thay đổi loại hàng.
  • Truy cập dữ liệu nhanh vì dữ liệu nằm trong một bảng.
  • Báo cáo đặc biệt rất dễ dàng vì tất cả dữ liệu được tìm thấy trong một bảng.

Nhược điểm:

  • nối trong hệ thống phân cấp lớp được tăng lên bởi vì tất cả các lớp học được kết trực tiếp đến cùng một bảng. A thay đổi trong một lớp học có thể ảnh hưởng đến bảng mà sau đó có thể ảnh hưởng đến các lớp khác trong cấu trúc phân cấp.
  • Không gian có khả năng bị lãng phí trong cơ sở dữ liệu.
  • Cho biết loại trở nên phức tạp khi chồng chéo đáng kể giữa các loại tồn tại.
  • Bảng có thể phát triển nhanh chóng cho các cấu trúc phân cấp lớn.

Khi sử dụng:

  • Đây là một chiến lược tốt cho đơn giản và/hoặc lớp nông phân cấp nơi có rất ít hoặc không có sự chồng chéo giữa các loại trong hệ thống phân cấp.

Nhưng tôi nhiệt liệt khuyên bạn nên đọc toàn bộ bài báo.

+0

Cảm ơn bạn rất nhiều Paskal! Bây giờ tôi hiểu nhiều hơn – Yosef

+0

Cảm ơn bạn rất nhiều vì lời giải thích tốt và bài viết tuyệt vời! – Yosef

0

Thừa kế bảng đơn là một cách tiếp cận tốt khi các lớp con không có nhiều thuộc tính hoặc liên kết với các lớp khác. Nếu không, bảng sẽ có đầy đủ các thuộc tính chỉ có ý nghĩa đối với một số bộ dữ liệu của bảng và bạn sẽ cần phải thêm tất cả các loại ràng buộc để kiểm tra xem chúng có chứa các giá trị cho các bộ dữ liệu của "loại" thích hợp không.

Ngoài ra, tất cả các truy vấn chỉ cần xử lý các trường hợp của một trong các phân lớp sẽ cần mệnh đề bổ sung để chọn chúng dựa trên giá trị kiểu.