مفهوم کولیشن/collation

وفی

مجموعه کرکترها یا character set  مجموعه ای از نشانه ها و کدهای مربوط به آنهاست. مقایسه/مقابله یا  collation  مجموعه ای از قوانین برای مقایسه کرکترها در یک character set است. بگذارید برای ایجاد تمایز شفاف بین این دو یک مثال عینی بزنیم:
فرض کنید ما الفبایی متشکل از ۴ حرف    داریم:   “A”, “B”, “a”, “b” .  ما به هر حرفی یک عدد نسبت میدهیم: “A” = ۰, “B” = ۱, “a” = ۲, “b” = ۳  . حرف “A” یک نشانه/کرکتر است و ۰ عددی است که برای کد کردن/رمز کردن آن استفاده شده و ترکیب همه ۴ حرف و کدهای آنها را character set میگویند.
فرض کنید میخواهیم مقادیر دو رشته “A”  و “B” را با هم مقایسه کنیم. ساده ترین راه اینست که نگاهی به کدهای آنها بیندازیم: ۰ برای “A” و ۱ برای “B”. چون ۰ از ۱ کوچکتر است ما میگوییم “A” از “B” کوچکتر است. کاری که ما کردیم بکاربردن یک collation برای مجموعه کرکترهایمان است. Collation مجموعه ای از قوانین است (البته در اینجا  فقط یک قانون داریم) برای مقایسه کدها. ما این روش را که ساده ترین روش ممکن برای مقایسه است، مقایسه باینری binary collation مینامیم.
اما اگر بخواهیم بگوییم که حروف کوچک و بزرگ با هم یکسان هستند، چه؟ در اینصورت حداقل ۲ قانون خواهیم داشت: (۱) با حروف کوچک “a” و “b”  و  حروف بزرگ “A” و “B”،  یکسان عمل کنید (۲) سپس کدها را با هم مقایسه کنید.  این روش را  case-insensitive collation مینامیم. این روش قدری از روش مقایسه باینری پیچیده تر است.
در دنیای واقعی، اغلب character set ها کرکترهای زیادی دارند: نه فقط A و B بلکه همه حروف الفبا، گاهی اوقات چندین الفبای متفاوت یا سیستمهای نوشتاری شرقی با هزاران کرکتر، همراه با تعدادی نشانه مخصوص و علامتهای نقطه گذاری یا تاکید. همچنین در دنیای واقعی اغلب collations ها قوانین متعددی دارند، نه فقط برای تشخیص حالت حروف، بلکه برای تشخیص accent  یا طرز قرائت (accent علامتی است که به یک کرکتر اضافه میشود مثلا در آلمانی “Ö”) و برای نگاشت چندکرکتری multiple-character mapping  (مثلا قانون “Ö” = “OE” در یکی از دو collation آلمانی)

‌  ‌{این را اضافه کنم:  در فارسی برای صداهای َ ِ ُ و … یا حالتهای مختلف یک حرف مثلا یکی از ۴ حالت حرف “ع”. همانطور که میدانید ۹ تا از  حروف فارسی تنها یک حالت دارند اما ۲۰ تا از  حروف ۲ حالت و ۳ تا از حروف الفبای فارسی   ۴ حالت دارند}

MySQL قادر است عملیات زیر را انجام دهد:
•         ذخیره  رشته ها  با  character set های جورواجور
•         سنجش رشته ها با collation های متنوع
•         ترکیب رشته ها  با کرکتر ست های مختلف یا collation های مختلف در  یک سرور،  یک دیتابیس، یا حتی در  یک جدول
•         فراهم کردن  معیارهای کرکتر ست و collation   در هر سطحی
از این لحاظ، MySQL  از اغلب سیستمهای مدیریت پایگاه داده جلوتر است. اما برای استفاده موثر از چنین امکاناتی، شما بایستی بدانید که چه مجموعه کرکترها و collation   هایی در دسترس میباشند، چگونه میتوان مقادیر دیفالت را تغییر داد و آنها  چطور بر رفتار عملگرهای رشته ای و توابع مربوطه تاثیر میگذارند؟

متن فوق برای آشنایی با مفهوم collation از اینجا ترجمه شده. در صورتی که از  وردپرس برای مدیریت محتوا استفاده میکنید، مخصوصا در موقع  پشتیبان گیری و بازگرداندن بکاپ، دانستن  این مفاهیم ضروری است. در پستهای دیگری در خصوص تاثیر و چگونگی استفاده از این مفاهیم صحبت خواهیم کرد.

3 Replies to “مفهوم کولیشن/collation”

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *