2010-04-12 36 views
8

Tôi đang cố gắng lập mô hình hóa một chuyên ngành/khái quát hóa, dựa vào việc sử dụng thừa kế bảng lớp (xem this answer).Thừa kế bảng lớp so với chuẩn hóa

Tuy nhiên, đồng nghiệp của tôi có các mối quan tâm về bảo trì và hiệu suất vì sẽ có nhiều (50+) chuyên môn trùng lặp của cùng một bảng. gợi ý của ông là tạo ra một bảng với các cột sau:

  • Tham chiếu đến bảng chung
  • Tham chiếu đến một bảng duy trì các loại chuyên ngành
  • Tham chiếu đến một bảng duy trì thuộc tính giá trị

Bằng cách đó, tất cả các thuộc tính được duy trì trong một bảng và có thể được lọc theo cột chuyên môn. Tôi không biết thiết kế này được gọi là gì, nhưng tôi lo lắng rằng nó liên quan đến một cách nào đó liên quan đến EAV ...

Mối quan tâm chính của tôi là modification anomalies, nhưng bên cạnh đó tôi không thấy bất kỳ lý do gì đó là một ý tưởng tồi. Là một giải pháp rõ ràng vượt trội hơn khác, hoặc chúng ta nên chọn một và di chuyển trên?

Trả lời

7

Khi thiết kế các bảng, tôi thường thiết kế chúng với một điều cần lưu ý: cách sử dụng.

Tôi sẽ ghi dữ liệu ở đó như thế nào và tôi sẽ truy vấn lại dữ liệu đó như thế nào. Tôi thiên vị thiết kế theo hướng đọc hoặc viết dựa trên đó sẽ quan trọng hơn đối với hiệu suất, cách lặp lại, quan trọng, v.v.

Câu hỏi của bạn không thực sự giải thích cách sử dụng của bạn, vì vậy tất cả các đề xuất trong câu trả lời của tôi ở đây là suy đoán đầy đủ. Nếu bạn chèn 20k hàng một ngày, thiết kế sẽ khác với nếu bạn chèn 5 một ngày. Ngoài ra, nếu bạn cần chạy 20 nghìn lượt tìm kiếm mỗi ngày trên bất kỳ cột nào thuộc bất kỳ loại nào hoặc nếu bạn chạy 5 ngày một lần. những điều này sẽ ảnh hưởng đến cách bạn thiết lập các bảng của bạn.

Với những gì đã nói, một cách tiếp cận chung có thể làm điều gì đó như thế này:

Các 50+ chồng chéo chuyên ngành bảng sẽ là một cơn ác mộng để viết các truy vấn trên. Tôi sẽ cố gắng đưa ra 1 bảng tổng quát chính và có thể 5 hoặc nhiều bảng tổng quát khác mà bạn có thể nhúng một chút vào "Thừa kế bảng đơn" (nơi bạn có thể có một số cột không áp dụng cho từng loại, nhưng được bao gồm bạn bao gồm nhiều cột từ càng nhiều loại càng tốt). Từ đó bao gồm các cột còn lại với EAV như cách tiếp cận.

+0

Vừa trở về sau cuộc họp và điều đó rất giống với những gì chúng tôi đã kết thúc. Hóa ra phần lớn các chuyên ngành chỉ là thông tin, vì vậy chúng tôi đã sử dụng cách tiếp cận mô hình dữ liệu chung cho chúng. Đối với một vài chuyên ngành yêu cầu hiệu suất tốt/chúng tôi lên kế hoạch truy vấn rất nhiều, chúng tôi đã sử dụng thừa kế bảng lớp. Cảm ơn, câu trả lời tuyệt vời! –

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