همانطور که برای بسیاری از مفاهیم فیزیکی و انتزاعی در دنیای واقعی یک معرف مانند اسم وجود دارد، در استفاده از سیستمهای اطلاعاتی نیز ضروریست تا هویت موجودیتهای مختلف با استفاده از یک معرف مشخص شده تا در ارجاعات بعدی به آن موجودیت از همان معرف استفاده شود. اما بهمنظور بناگذاری شناسهای جدید لازم است تا هنگام انتخاب و راهاندازی سیستم شناسهگذاری، الزامات مرتبط با نیازهای ما از شناسهگذاری مورد توجه قرار گرفته و رعایت شوند.
مقدمهای از شناسهگذاری
شناسه عبارتی است که هویت یک موجودیت یا گروهی از موجودیتها را مشخص میکند. این موجودیت میتواند شیئی فیزیکی و یا ایدهای ذهنی باشد. شناختهشدهترین کاربرد شناسه یکتا مربوط به زمانی است که کاربران در یک وبسایت و یا برای دریافت خدمات در دامنهای ثبت نام میکنند. مشتریان یک شرکت از سایر مشتریان توسط یک شناسه یکتا متمایز و شناخته میشوند. در یک پایگاه داده شناسههای یکتا ممکن است در یک ستون مجزا طراحی شوند تا به وسیله آن مرتب کردن و فیلتر کردن اطلاعات (انتخاب بخشی از اطلاعات بر مبنای انتخاب مشخصاتی از دادهها) راحتتر صورت بگیرد. این عمل همچنین دنبال کردن اطلاعات گذشته مربوط به یک موجودیت را در داخل سیستم ممکن میسازد.
مثالی از شناسهگذاری
مثال معروف دیگری از شناسه یکتا کاربرد آن در زنجیره تامین فیزیکی است، به این صورت که تولیدکنندگان قسمتهای مختلف محصول یا محصول نهایی خود را شناسهگذاری میکنند (مثلا شناسهگذاری قطعات یک صندلی یا شناسهگذاری صندلی نهایی) تا در صورت بروز خرابی یا مرجوعی دنبال کردن منشأ این مشکل در مسیر تولید محصول میسر باشد. شناسه میتواند شامل کلمه (کلمات معنادار)، شماره (یا اعداد)، حرف (حروف الفبا)، علامت (مانند – یا _) و یا ترکیبی از اینها باشد. این کلمهها، اعداد، حروف یا علامتها میتوانند از یک سیستم کدگذاری تبعیت کرده (به این معنا که هر کاراکتر یا گروهی از کاراکترها نشاندهنده معنای خاصی بوده و یا نماینده عبارتی بلندتر هستند) و یا تصادفی و بیمعنا باشند.
در حالت اول کدها میتوانند حامل فراداده (یا metadata) باشند، یعنی علاوه بر این که خود نشاندهنده یک موجودیت هستند جزئیاتی از دادههای دیگر را نیز نشان میدهند. به این ترتیب با مشاهده شناسه و دسترسی به معنای اجزاء آن میتوان به تمام اطلاعات نهفته در شناسه پی برد. اما هنگامی که کد (یا شناسه) به صورت تصادفی تولید میشود امکان این امر وجود نخواهد داشت و برای پی بردن به اطلاعات شناسه باید به مرجعی که اطلاعات مربوط به موجودیتی معین در آن نهفته است مراجعه کرد. شناسه یکتا شناسهای است که تنها نشاندهنده یک موجودیت است و هرگز به چند موجودیت متفاوت اطلاق نمیشود.
استراتژیهای شناسهگذاری
همانطور که اشاره شد شناسهها میتوانند به صورت کاملا تصادفی تولید شده و یا بر اساس ویژگیهای موجودیت مربوط به خودشان شامل اجزاء معنادار باشند. برای انتخاب سیستم شناسهگذاری استراتژیهای متفاوتی وجود دارند اما میتوان آنها را به دو دسته فوق تقسیم کرد. و تصمیم برای انتخاب بین این دو حالت در وهله اول به میزان زیادی به تصمیم پایهگذاران شناسه و انتظارات آنها از شناسه تولید شده توسط سیستم وابسته است. شناسهگذار باید در ابتدا تصمیم بگیرد که برداشت اطلاعات از روی شناسه تا چه اندازهای در اولویتهای اوست. و آیا لازم است که کاربر بتواند از روی شناسه به ویژگیهای موجودیت مربوط به آن پی ببرد یا خیر؟
انتخاب و پیادهسازی این حالت ممکن است در ابتدا ساده به نظر برسد اما در اجرای این راهکار با محدودیتهایی جدی روبهرو خواهیم بود که عدم توجه به آنها منجر به شکست در امر شناسهگذاری خواهد شد در صورتی که استفاده از شناسه با اعداد تولید شدهی تصادفی این محدودیتها را نخواهد داشت. در جدول زیر به مزایا و آسیبهای نسبی این دو روش پرداخته شده است:
شناسه یکتا با اجزاء معنادار | شناسه یکتای تصادفی | ||
مزایا | آسیبها | مزایا | آسیبها |
سادگی و عدم نیاز به پایگاه داده پیشرفته | آسیبپذیری نسبت به تغییر یا حذف هریک از پارامترهای کد در طول زمان (مثلا تغییر شناسه حقوقی) | لزوم وجود آرشیو سیستمی قوی و جامع از تمامی رکوردها | نیاز به استعلام جهت دسترسی به اطلاعات مربوطه |
پی بردن به مفهوم شناسه از روی آن برای تمام کاربران | محدودیت در تعریف تعداد ویژگیها | امکان بالقوه انجام جستجوهای بسیار متنوع بر اساس نیاز | پیچیدگی ایجاد (نیاز به تخصص فنی پایگاه داده و وبسرویس مربوط به آن جهت استعلام) |
نیاز به دقت زیاد در تعریف به منظور حفظ یکتایی و تمام نشدن ارقام شناسه | عدم محدودیت در تعریف ویژگیهای هر موجودیت و امکان اصلاح ویژگیها در طول زمان با توجه به هویت موجودیت | ||
طولانی شدن شناسه در صورت زیاد بودن ویژگیها و امکان بروز خطا در استفاده از آن | |||
عدم امکان ایجاد تغییر در ساختار شناسه پس از راهاندازی استفاده از آن |
استراتژیهای شناسهگذاری
شناسههای یکتا را میتوان بر حسب استراتژیهای مختلف ایجاد شناسه به دستهبندیهای متفاوتی تقسیم کرد که یکی از این تقسیمبندیها به صورت زیر است:
- شماره سریال: کدها به صورت تدریجی یا در یک توالی تحت نظارت یک مرجع معتبر تولید میشوند.
- اعداد تصادفی: کدها به صورت تصادفی و در رشتهای طولانیتر از حداکثر موجودیتهای مدنظر جهت کدگذاری تولید میشوند.
- نامها و کدهای ایجاد شده بهوسیله انتخاب: کدها از طرف کدگذاران به صورت انتخابی تعیین میشوند و تضمین یکتا بودن شناسهها بهوسیله یک هیئت مرکزی صورت میگیرد.
- نامها و کدهای ایجاد شده سیستمی: کدها به صورت سیستمی اختصاص مییابند، به صورتی که اطلاعات موجودیتها به وسیله نهادهای ثبتکننده اطلاعات دریافت شده، در داخل سیستم پردازش صورت گرفته و در نهایت شناسهای یکتا بهوسیله سیستم به موجودیتها اختصاص مییابد. این شناسهها دارای استانداردهای مشخص بینالمللی هستند و شناسههای ایجاد شده بهطور بینالمللی یکتا هستند. شناسه موجودیت قانونی که توسط بنیاد گلیف مدیریت میشود نمونهای از این روش شناسهگذاری است.
مواردی که باید در شناسهگذاری رعایت شوند
پرهیز از تغییرپذیری
شناسههای ایجاد شده باید تا حد ممکن ثابت و پایدار باشند. خطرناکترین ویژگی یک شناسه که آن را در برابر ثابت بودن تهدید میکند معنادار بودن آن است. تصور کنید شناسه مراکز بهداشتی روستایی با مراکز شهری متفاوت باشد. حال اگر در چند سال آینده روستا یا دهستان مربوطه به شهر تبدیل شود قاعدتا شناسه مرکز درمانی مربوط به آن نیز تغییر خواهد کرد و این اتفاق در تضاد با یکی از خواستههای اصلی ما از شناسه یعنی دنبال کردن وقایع مربوط به یک موجودیت در طول زمان است. به همین دلیل است که یکی از توصیههای معمول هنگام طراحی شناسه عدم معنادار بودن آن است، البته این مشکل در صورتی قابل حل است که اجزاء معنادار یک شناسه مربوط به ویژگیهایی باشند که امکان حذف یا تغییر این ویژگی غیرممکن باشد.
عدم استفاده از کاراکترهای مشکلساز
علاوه بر عدم استفاده از کاراکترهای غیرمعمول (مانند علامتهای $ یا %!) که استفاده از شناسه را سخت میکنند، باید از حروفی که ممکن است در استفاده ایجاد مشکل کنند پرهیز کرد.
ملاحظات مربوط به ایجاد تغییر در شناسه
ممکن است به هر دلیلی یک موجودیت منسوخ شده، در یک موجودیت دیگر ادغام شود. و یا حتی به چند موجودیت دیگر تقسیم شود. در این صورت، شناسه قبلی موجودیتی که دچار تغییر شده بلااستفاده خواهد بود. بنابراین در مواجهه با این تغییر باید ملاحظاتی را مد نظر قرار داد. نکته اول حذف نکردن شناسه موجودیت سابق از سابقه نرمافزاری است. از سمتی دیگر، نباید شناسه مربوط به موجودیتِ تغییر یافته به موجودیتی دیگر اختصاص یابد. زیرا این اتفاق باعث ایجاد بینظمی و آشفتگی در استفاده از شناسهها میشود.
هنگام منسوخ شدن موجودیتها، باید اطلاعات مربوط به آن در صفحهای جداگانه قابل دسترس باشد. در صورت ادغام چند موجودیت در یک موجودیت باید برای موجودیت جدید شناسه جدید تولید شود. در این حالت باید همچنان به به اطلاعات موجودیتهای ادغام شده دسترسی داشت. در صورت تقسیم یک موجودیت به چند واحد، به موجودیتهای جدید شناسه جدید تعلق میگیرد. لازم به ذکر است با در اختیار داشتن شناسههای جدید باید اطلاعات موجودیت تقسیم شده در دسترس باشد.
مستندسازی شناسههای منتشرشده و مورد استفاده
هنگام انتشار شناسههای جدید یا ارجاع به شناسههای ایجاد شده توسط دیگران، باید سیاستهای شناسه جدید مستندسازی شوند.