Tôi đang có một cuộc thảo luận thú vị với một nhà thiết kế cơ sở dữ liệu khác về chuẩn hóa. Trong ví dụ này, chúng tôi có bảng GameTitle và mỗi bản ghi phải chứa năm mà trò chơi được phát hành. Ông nói rằng 2NF yêu cầu mọi thứ phải được chuẩn hóa, do đó, để tuân thủ, trường năm nên được tách thành bảng ReleaseYears với khóa chính được tham chiếu bởi bảng GameTitle. Tôi nói nó nên duy trì như một trường trên bảng GameTitle.
Lập luận của tôi cho điều này là một năm chỉ là một giá trị số không nguyên thủy, tĩnh bởi chính bản chất của nó (tức là năm 2011 sẽ luôn là năm 2011). Do đó, nó đóng vai trò là định danh riêng của nó và không cần gì để tham chiếu vì nó là chính nó. Điều này cũng giới thiệu bảo trì bổ sung vì bây giờ bạn phải thêm một năm mới vào bảng chỉ để tham khảo nó. Nếu bạn chuẩn bị trước bảng với một phạm vi lớn trong nhiều năm thì bạn có thêm các bản ghi có khả năng sẽ không có tài liệu tham khảo nào cả. Điều này cũng làm tăng kích thước cơ sở dữ liệu vì bây giờ bạn có thêm bảng, chi phí ghi lại và khóa chính bổ sung cho chính năm đó. Nếu bạn giữ năm như một trường trên bảng GameTitle, bạn sẽ loại bỏ tất cả chi phí bảo trì và chi phí bổ sung này.
Suy nghĩ về điều này?
chỉnh sửa: Mete để đăng bài này trên StackOverflow. Ai đó có thể bỏ phiếu để xóa cái này hoặc đánh dấu nó cho sự chú ý?