2009-05-30 21 views
13

Tôi hiện đang đọc về khả năng về việc sử dụng thừa kế với Entity Framework. Đôi khi tôi sử dụng một approch để loại dữ liệu hồ sơ và tôi không chắc chắn nếu tôi sẽ sử dụng TPT hoặc TPH hoặc không có ...Entity Framework thừa kế: TPT, TPH hay không?

Ví dụ ... Tôi có một cửa hàng thương mại điện tử bổ sung địa chỉ giao hàng, thanh toán và giao hàng

tôi có một bảng địa chỉ:

RecordID 
AddressTypeID 
Street 
ZipCode 
City 
Country 

và một bảng AddressType

RecordID 
AddressTypeDescription 

thiết kế bảng khác với g thiết kế erneral khi người ta khoe TPT hoặc TPH ... Liệu nó có ý nghĩa để suy nghĩ về thừa kế một khi có một cách tiếp cận như thế này ..

Tôi hy vọng nó có ý nghĩa ...

Nhờ sự giúp đỡ ...

Trả lời

9

Khi xem xét cách thể hiện thừa kế trong cơ sở dữ liệu, bạn cần xem xét một vài điều.

Nếu bạn có nhiều lớp con khác nhau, bạn có thể có nhiều lần tham gia bổ sung trong các truy vấn liên quan đến những loại phức tạp hơn có thể ảnh hưởng đến hiệu suất. Một lợi thế lớn của TPH là bạn truy vấn một bảng cho tất cả các loại trong hệ thống phân cấp và đây là một lợi ích cho hiệu suất, đặc biệt cho các cấu trúc phân cấp lớn hơn. Vì lý do này, tôi có khuynh hướng ưu tiên cách tiếp cận đó trong hầu hết các trường hợp

Tuy nhiên, TPH có nghĩa là bạn không còn có thể có các trường NOT NULL cho các loại phụ nữa vì tất cả các trường đều nằm trong một bảng. ứng dụng của bạn. Mặc dù điều này nghe có vẻ khủng khiếp trong thực tế tôi đã không tìm thấy điều này là một hạn chế quá lớn. Tuy nhiên, tôi sẽ có xu hướng sử dụng TPT nếu có nhiều trường cho mỗi loại và số lượng loại trong phân cấp có thể nhỏ, có nghĩa là hiệu suất không quá nhiều vấn đề với các kết nối, và bạn có được tính toàn vẹn dữ liệu tốt hơn. Lưu ý rằng một trong những ưu điểm của EF và các ORM khác là bạn có thể thay đổi suy nghĩ của bạn theo dõi mà không ảnh hưởng đến ứng dụng của bạn để quyết định không cần phải được khắc hoàn toàn bằng đá.

Trong ví dụ của bạn, nó không xuất hiện để có một mối quan hệ thừa kế, nó trông giống như một một đến nhiều từ các loại địa chỉ để các địa chỉ

này sẽ được biểu diễn giữa các lớp của bạn giống như sau:

Address.AddressType 
AddressType.Addresses 
4

Như Keith gợi ý, điều này cho thấy article TPT tại EF quy mô khủng khiếp, nhưng tôi đã không thử nó riêng tôi.

-3

Tìm kiếm this article. Một số khía cạnh của việc sử dụng thừa kế được xem xét.

+0

liên kết không còn hợp lệ nữa. Vui lòng sửa hoặc xóa câu trả lời này –

Các vấn đề liên quan