Sự khác biệt giữa đối chiếu và bộ ký tự là gì?


24

Tôi có một câu hỏi chung về cơ sở dữ liệu. Chúng tôi thường sử dụng thuật ngữ đối chiếu với cơ sở dữ liệu. Tôi muốn biết nó khác với bộ ký tự như thế nào. Tôi đoán collation là một tập hợp con của bộ ký tự. Nếu nó đúng, mục đích nhiều đối chiếu trong một bộ ký tự là gì.


Ngoài ra, hãy tham khảo stackoverflow.com/questions
4321273 / Mạnh

Câu trả lời:


27

Bộ ký tự là một danh sách các biểu tượng. Nếu bạn so sánh ASCII với latin1 , với latin1 bạn sẽ có thể viết tất cả các từ tiếng Mỹ vì latin1 chứa tất cả các ký tự ASCII , đủ để viết bất kỳ từ tiếng Anh nào. Ngược lại, với ASCII, bạn sẽ không thể viết tất cả các từ của các ngôn ngữ cụ thể Tây Âu, vì các ký tự ví dụ như 'À', 'ë', 'õ', '' bị thiếu.

Đối chiếu là về so sánh giữa các nhân vật. Nó định nghĩa một bộ quy tắc để so sánh các ký tự của một bộ ký tự.

Trong MySQL, các bộ sưu tập thường liên quan đến một ngôn ngữ (ví dụ 'latin1_swbur_ci', 'latin1_german1_ci', v.v.). Khi bạn đặt một truy vấn chọn, một từ bắt đầu bằng 'ö' sẽ được đặt giữa hai từ bắt đầu bằng 'o' và 'p' trong một số ngôn ngữ (với một số đối chiếu). Nhưng với một đối chiếu khác, nhân vật này có thể được đặt hoàn toàn ở cuối, điều này làm cho lựa chọn kết quả khác nhau.


Cảm ơn, nó gần như rõ ràng bây giờ. Vì vậy, tôi nghĩ rằng việc lựa chọn đối chiếu là một mối quan tâm nghiêm trọng trong khi lập kế hoạch cho một trang web đa ngôn ngữ? Ví dụ: nếu đối chiếu là 'latin1_swbur_ci', tôi sẽ không nhận được kết quả mong đợi trong khi xử lý các ngôn ngữ unicode.?
Xấu hổ

1
Tôi sẽ đề nghị bạn đi unicode hoặc cuối cùng bạn sẽ gặp một số rắc rối (ngôn ngữ asiatics cho ví dụ). Đối chiếu sẽ phụ thuộc vào ngôn ngữ của người dùng. Đây là điều bạn phải cẩn thận nếu muốn có một công cụ đa ngôn ngữ.
deadalnix

6

Như câu trả lời trước, bộ ký tự là một tập hợp các ký tự (chữ cái, số, chữ tượng hình, v.v.) được gán cho một số; để có thể nhìn thấy chúng, bạn phải có phông chữ ("hình ảnh" nhỏ mà chúng tôi đọc). Chúng rất quan trọng khi sử dụng LatinX, vì với mỗi X, cùng một số (byte) có thể chỉ một ký tự khác nhau.

Ngày nay, điều quan trọng hơn là chọn mã hóa: tiêu chuẩn là UTF-8, đại diện thành công nhất của Unicode (tương thích với ASCII nhưng rất linh hoạt để bao gồm tất cả ngôn ngữ, ngay cả tiếng Trung và tiếng Nhật) và tiêu chuẩn W3C. Nói cách khác, nó bao gồm tất cả các bộ ký tự.

Collation: đây là một từ cổ, có nguồn gốc từ tiếng Latin. Nó có nghĩa là: so sánh một bản sao (bản thảo) với bản gốc để tìm sự khác biệt (lỗi hoặc thay đổi). Nó rất hữu ích trong quá khứ, nhưng bây giờ nó gần như là một chủ nghĩa cổ xưa bởi vì các tài liệu và sách của chúng tôi được viết bằng máy tính và bản sao luôn giống hệt với bản gốc. Ví dụ: trong tiếng Ý (bắt nguồn từ tiếng Latin) có động từ "collazionare", nhưng nó có trong từ điển và không ai sử dụng nó.

Vì vậy, đối chiếu xác định hành vi của các toán tử so sánh: =,>, <, <=,> = ...

Tất nhiên các toán tử đó được sử dụng để quyết định xem hai chuỗi có giống nhau không, hoặc nếu một từ "lớn hơn" một chuỗi khác, rất quan trọng nếu chúng ta muốn sắp xếp. Các chữ cái không theo cùng một thứ tự cho mọi ngôn ngữ, vì vậy một từ có thể lớn hơn một từ khác bằng cách sử dụng đối chiếu, nhưng không sử dụng một ngôn ngữ khác. Xem [1] cho một ví dụ thực tế.

  • các va chạm "bin" là nghiêm ngặt nhất: CHỌN "b" = "B" => FALSE

  • các bộ sưu tập "ci" không phân biệt chữ hoa chữ thường: CHỌN "b" = "B" => TRUE

  • "chung" có xu hướng bỏ qua một số khác biệt: CHỌN "a" = "à" => TRUE

  • khác là cụ thể cho một hoặc nhiều ngôn ngữ. Ví dụ "Thụy Điển" (Tôi không biết tại sao thụy điển thường là mặc định)

Tôi vẫn đang tìm kiếm một trang web trong đó hành vi của mọi đối chiếu được mô tả chi tiết ... những ví dụ đó là do kinh nghiệm của tôi.

[1] http://www.olcot.co.uk/sql-bloss/revised-difference-b between-collation-sql


1
Thụy Điển là mặc định trong một số bit của MySQL vẫn còn. Di sản của nó từ khi MySQL được tạo ra bởi một nhóm nhỏ ở Thụy Điển vào năm 95
Chris Wood
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.