Nhiều cơ sở dữ liệu của tôi có các trường được định nghĩa là varchars. Điều này không có vấn đề gì nhiều kể từ khi tôi sống và làm việc ở Mỹ (nơi ngôn ngữ duy nhất tồn tại là "American". Ahem )
Sau khi làm việc với cơ sở dữ liệu khoảng 5 năm, cuối cùng tôi đã gặp phải vấn đề với tính chất hạn chế của trường varchar và tôi phải sửa đổi các trường của mình để lưu trữ dữ liệu dưới dạng nvarchar. Sau khi phải thực hiện một bản cập nhật khác cho một bảng, chuyển đổi một trường varchar thành một nvarchar, tôi chỉ có suy nghĩ-- tại sao chúng ta vẫn làm theo cách này? Từ lâu tôi đã đưa ra quyết định tinh thần khi xác định tất cả các trường văn bản mới của mình thành nvarchar, thay vì varchar, đó là điều tôi học được từ sách giáo khoa khi tôi còn đi học 10 năm trước.
Đó là năm 2011 và đã có một bản phát hành mới của SQL Server vào năm ngoái. Tại sao chúng ta tiếp tục hỗ trợ một kiểu dữ liệu varchar khi chúng ta có thể / nên sử dụng nvarchar?
Tôi biết rằng người ta thường lập luận rằng nvarchar "lớn gấp đôi" so với varchars, vì vậy việc sử dụng không gian lưu trữ có thể là một lý lẽ cho việc thay đổi varcars.
Tuy nhiên, người dùng ngày nay có thể định nghĩa nvarchar của họ để lưu trữ dữ liệu dưới dạng UTF-8 thay vì UTF-16 mặc định nếu họ muốn tiết kiệm dung lượng lưu trữ. Điều này sẽ cho phép mã hóa 8 bit nếu điều đó chủ yếu là mong muốn, trong khi đảm bảo rằng ký tự 2-8 byte hiếm hoi được chèn vào DB của chúng sẽ không phá vỡ bất cứ điều gì.
Tui bỏ lỡ điều gì vậy? Có một lý do chính đáng tại sao điều này đã không thay đổi trong 15-20 năm qua?