2013-03-13 28 views
5

Cơ sở dữ liệu lưu trữ các loại đối tượng khác nhau cho các dự án kỹ thuật: động cơ, dây cáp, máy bơm, cảm biến, v.v.Tôi muốn lưu trữ nhiều loại đối tượng trong cơ sở dữ liệu SQL. Tôi có nên có một bảng khác nhau cho từng loại đối tượng?

Chúng tôi đang tranh luận liệu có bảng khác nhau cho từng loại đối tượng không? (Heaps của bảng, một nỗi đau khi chúng tôi muốn thêm một loại đối tượng mới - mà sẽ xảy ra mỗi bây giờ và sau đó ...)

Hoặc, như chúng ta hiện tại, chúng ta nên có một bảng lưu trữ các loại đối tượng (ID, tên) và một bảng khác lưu trữ các thuộc tính có thể cho từng loại đối tượng và một bảng khác lưu trữ các giá trị của từng thuộc tính cho từng loại thuộc tính? (PITA thực, nhưng linh hoạt.)

Bất kỳ ai cũng làm gì tương tự? Các điểm cần xem xét? Thực hiện?

+3

Với tôi, âm thanh thứ hai có vẻ giống như bạn đang cố gắng xây dựng cơ sở dữ liệu NoSQL của riêng bạn bằng cách sử dụng cơ sở dữ liệu SQL làm bộ nhớ. –

+3

Âm thanh như EAV so với Bảng mỗi loại. Xem [tại đây] (http://stackoverflow.com/questions/4066463/should-i-use-eav-model?lq=1) và [tại đây] (http://stackoverflow.com/questions/870808/entity- giá trị –

+1

có thể trùng lặp của [Bảng sản phẩm, nhiều loại sản phẩm, mỗi sản phẩm có nhiều tham số] (http://stackoverflow.com/questions/695752/ product-table-many-types-of-product-each-product-có-nhiều tham số) –

Trả lời

6

Nếu bạn có thể lấy một bản sao của Patterns of Enterprise Application Architecture (Fowler) hãy xem Object-Relational Structural Patterns; có những ưu và khuyết điểm đối với mỗi cách tiếp cận và câu trả lời sẽ khác nhau tùy thuộc vào ngữ cảnh của dự án cụ thể của bạn.

Cụ thể:

Single Table Inheritance

Class Table Inheritance

Concrete Table Inheritance

Serialized LOB (và nếu bạn xem xét mô hình này cũng xem xét sử dụng một kho dữ liệu NoSQL thay vì một RDBMS)

Lớn nhất câu hỏi bạn cần trả lời là w hether cơ sở dữ liệu quan hệ là kho dữ liệu phù hợp cho dữ liệu của bạn. Bạn chỉ đang tìm kiếm một nơi để lưu trữ dữ liệu? Bạn sẽ sử dụng dữ liệu từ các đối tượng khác nhau liên quan đến nhau? Có thể đủ để sử dụng một khung công tác tuần tự hóa tuyệt vời (như Kryo) vào một Serialized LOB và lưu trữ siêu dữ liệu cần thiết để tìm kiếm hoặc liên kết các mối quan hệ trong các cột chuẩn.

+2

Như mọi khi, một sự hiểu biết rõ ràng về các yêu cầu kinh doanh là điều kiện tiên quyết cần thiết để đưa ra lựa chọn công nghệ hợp lý. –

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