11

Tôi đang đọc về sự thừa kế bảng lớp (CTI) và tìm kiếm tôi thích nó tổng thể. Câu hỏi tôi có là, có trường hợp sử dụng cụ thể cho đơn Bảng Inheritance (STI), nơi bạn muốn sử dụng trên CTI?Thừa kế bảng đơn hoặc thừa kế bảng lớp?

Tôi đọc http://rhnh.net/2010/07/02/3-reasons-why-you-should-not-use-single-table-inheritance và theo như tôi biết, nó rất chắc chắn. Các trường hợp sử dụng cho STI là một sự khác biệt trong hành vi nhưng không phải là dữ liệu.

Trả lời

7

Tôi muốn chỉ cho bạn một bài viết tuyệt vời mà tôi đã tìm thấy giải thích rõ ràng lý do tại sao và khi nào nên sử dụng CTI. LINK

+0

cảm ơn cho điều này – apneadiving

+1

Ngoài ra, một liên kết khác mà bạn dẫn tôi đến là http://peterhamilton.github.com/citier/ có nhiều liên kết blog về điều này. Cảm ơn bạn. – SpaceGhost

+0

@SpaceGhost Không có trang GitHub Pages tại đây. –

0

Sử dụng STI cho các khác biệt về hành vi như bạn đã nói. Ví dụ tôi sẽ sử dụng sẽ là:

Bạn có Mua và bạn có PartialPurchase, sự khác biệt duy nhất với dữ liệu là khi PartialPurchase kết thúc, nó sẽ liên quan đến Giao dịch mua mới được tạo.

Vì vậy, hành vi khác nhau, ngoài ra, có những trường hợp tôi muốn mua một phần Mua và Mua để hiển thị trong cùng một truy vấn. Đối với một đại lý thương mại, họ muốn xem tất cả các giao dịch mua của họ và mua một phần cùng một lúc để nó có ý nghĩa cho dữ liệu này nằm trong cùng một bảng. Nếu không, tất cả các thuộc tính đều giống nhau cho mỗi mô hình.

Trong trường hợp đó, tôi sẽ sử dụng STI qua CTI. Mặc dù nếu dữ liệu bắt đầu khác nhiều, tôi có lẽ sẽ tạo một bảng khác có liên quan đến bảng STI và trong trường hợp có nhiều trường khác nhau, tôi có thể nghĩ đến CTI.