Tôi đã đánh dấu bài viết trên blog của Phil Factor Bình thường hóa và 'Anima notitia copia' hôm nay vì nó tóm tắt gọn gàng trường hợp và chống lại việc bình thường hóa một số loại dữ liệu. Chạy truy vấn sau đây trên một cá thể SQL và xem nếu bạn đồng ý.
SELECT * FROM sys.syslanguages
SQL cho phép bạn tạo cơ sở dữ liệu quan hệ. Tuy nhiên, ngay cả khi nó có mùi khó chịu, thì cũng không có tội gì khi làm những việc không liên quan đến cơ sở dữ liệu SQL miễn là nó cần thiết và bạn có thể nhận ra sự khác biệt; không chỉ vậy mà còn chỉ khi bạn nhận thức được những rủi ro và tác động.
Bạn đã đề cập rằng tệp XML chứa "thông tin bổ sung về dữ liệu". Có bất kỳ lợi ích nào trong việc mô hình hóa siêu dữ liệu đó trong cơ sở dữ liệu quan hệ, cho mục đích thẩm vấn có lẽ không? Nếu vậy, có thể có trường hợp trích xuất dữ liệu liên quan và duy trì XML còn lại dưới dạng loại tài liệu XML.
... nếu bạn được thông qua một chuỗi JSON hoặc XML và được yêu cầu lưu trữ nó trong cơ sở dữ liệu, thì tất cả những gì bạn cần làm là tự hỏi mình, trong vai trò là Anima notitia copia (Linh hồn của cơ sở dữ liệu) 'tôi có quan tâm đến nội dung của mục thông tin này? '. Nếu câu trả lời là 'Không!' Hoặc 'nequequam! Sau đó, nó là một giá trị nguyên tử, tuy nhiên nó có thể phức tạp.
Lập luận của Phil Factor là các trường không liên quan trong cơ sở dữ liệu quan hệ là hoàn toàn chấp nhận được nếu trường được coi là nguyên tử tức là nó không thay đổi hoặc khi toàn bộ trường thay đổi, không phải là một bộ phận cấu thành của nó. Phần mở rộng tự nhiên của điều này là nếu tài liệu của bạn chứa các yếu tố bạn quan tâm, có thể có giá trị khi áp dụng mô hình quan hệ cho các yếu tố đó.
Liên quan đến câu hỏi nhưng chủ yếu cho cụm từ, một trích dẫn cuối cùng từ Phil:
Đương nhiên, tôi chưa bao giờ cố tình tạo ra một cơ sở dữ liệu mà Codd sẽ cau mày, nhưng xung quanh các cạnh là các giao diện và nguồn cấp dữ liệu mà tôi đã viết đã gây ra sự phù hợp giữa các nhà cơ bản Bình thường hóa.
Không phải tất cả chúng ta!