Câu trả lời:
Bạn nên đi xa như bạn nên, và không có thêm. Tất nhiên. ~ Vấn đề có thể là đây là một chút nghệ thuật, và đó là lý do tại sao đây không phải là một khoa học thuần túy.
Sản phẩm chính của chúng tôi là một hệ thống phân tích và báo cáo, và vì vậy về mặt đó, chúng tôi có khá nhiều hồ sơ chi tiết. Ban đầu chúng tôi đã thiết kế nó với rất nhiều phép nối trên một ID chung cho một số hồ sơ con, nhưng chúng tôi thấy rằng nếu chúng tôi không chuẩn hóa một vài trường, chúng tôi có thể cắt bỏ RẤT NHIỀU tham gia và chúng tôi có thể loại bỏ rất nhiều vấn đề đau đầu về hiệu suất.
Nhưng chúng tôi chỉ biết rằng vì chúng tôi 1) đã tạo ra một thiết kế "bình thường hóa", 2) bắt đầu sử dụng nó, 3) mô tả hiệu suất thực tế sau hàng trăm triệu hàng trên hàng chục bảng.
Câu chuyện cuối cùng là cho đến khi chúng ta cấu hình chúng ta không thể biết chắc chắn điều gì đang xảy đến làm việc cho chúng ta. Chúng tôi thích ý tưởng bình thường hóa để chúng tôi có thể cập nhật dễ dàng hơn, nhưng cuối cùng hiệu suất thực tế là yếu tố quyết định. Đó là lời khuyên của tôi dành cho bạn: Hồ sơ, hồ sơ, hồ sơ.
in ('forgiven','pardoned')
;): p
Chuẩn hóa chỉ là mục tiêu khi nó hỗ trợ mô hình dữ liệu của bạn đủ tốt để đảm bảo nó. Nó có nghĩa là một hướng dẫn để cho phép tăng trưởng, quản lý và bảo trì. Hãy nhớ rằng cuốn sách về bình thường hóa, cũng không phải là tác giả của nó sẽ xây dựng hoặc duy trì cơ sở dữ liệu của bạn hoặc ứng dụng của nó.
Một bài đọc tốt về chủ đề "quá nhiều bình thường hóa" là ở đây.
Và, vâng, có thể có tác động hiệu suất đến quá nhiều bình thường hóa. Điều này sẽ nằm trong bảng duyệt sâu hơn để chọn những thứ như bảng chỉ báo trạng thái khi chúng được kéo ra một bảng riêng biệt. Một số người sẽ nói điều này thường bị phủ định ở tốc độ cập nhật (thay đổi văn bản trạng thái từ "Tốt" thành "TỐT" hoặc một cái gì đó tương tự) hoặc trong khả năng duy trì.
Tôi khuyên bạn nên đọc phần phụ lục sau đây được tìm thấy trong một vài cuốn sách gần đây của Chris Date :
Bình thường hóa không phải là thuốc chữa bách bệnh, vì chúng ta có thể dễ dàng nhìn thấy bằng cách xem xét mục tiêu của nó là gì và mức độ chống lại chúng ...
Tôi phải làm rõ rằng tôi không muốn bình luận của mình trong phần này được coi là bất kỳ kiểu tấn công nào. Tôi tin chắc rằng bất cứ điều gì ít hơn một thiết kế hoàn toàn bình thường đều bị chống chỉ định mạnh mẽ ...
Tôi nghĩ điều quan trọng không kém là xem xét các bất thường được thêm vào rõ ràng, hoặc thêm các giá trị tổng hợp hoặc một số trường từ bảng chính được sao chép vào một bản sao chi tiết.
Đối số chủ yếu là một số đối số hiệu suất.
Nếu bạn thực thi như vậy, các trường đó được cập nhật bởi các trình kích hoạt và tùy thuộc vào cơ sở dữ liệu để giữ cho chúng nhất quán.
Tôi hoàn toàn đồng ý với @jcolebrand. Khi bạn thiết kế mô hình cho ứng dụng của mình, bạn nên bình thường hóa mọi thứ bạn có thể. Nhưng sau đó, bạn nên lập hồ sơ các truy vấn được xây dựng trên mô hình của mình, đặc biệt là các truy vấn được thực hiện thường xuyên.
Kinh nghiệm của riêng tôi: các thuộc tính cần có hai phép nối để đạt được (có nghĩa là ba bảng được nối) sẽ chủ yếu là một con lợn hiệu suất. Và để làm cho mọi thứ tồi tệ nhất, nó được sử dụng trong các giao dịch trực tuyến. Tôi không chuẩn hóa thuộc tính, vì vậy nó chỉ cần một lần tham gia và yêu cầu lập trình viên điều chỉnh ứng dụng của họ cho truy vấn và cập nhật thuộc tính. Bây giờ nó hoạt động tốt hơn nhiều ...
Nói cách khác, bạn nên cân bằng chuẩn hóa với hiệu suất.