في هذا المقال سأشرح لكم:
* ما هو الرقم التسلسلي؟
* كيف ظهرت فكرة الترقيم التسلسلي؟
* ما أشهر أنظمة التعريف والترقيم المستخدمة عالميًا؟
* وما الفرق بين الرقم التسلسلي وبعض أنظمة التعريف الأخرى؟
* وكيف يمكنك تصميم نظام أرقام خاص بك، سواء للاستخدام المحلي أو داخل بيئة إنتاجية؟
بسم الله الرحمن الرحيم.
بدايةً: ما هو الرقم التسلسلي؟
الرقم التسلسلي (Serial Number) هو معرّف فريد يُمنح عادةً لكل وحدة أو نسخة منفردة من منتج أو أصل، بهدف تمييزها عن الوحدات الأخرى من النوع نفسه.
فمثلًا، إذا كانت الشركة تنتج 10,000 جهاز من الطراز نفسه، فإن كل جهاز يمكن أن يحصل على رقم تسلسلي مختلف، بحيث يمكن للنظام التمييز بين الجهاز الأول والثاني والثالث، وهكذا.
ولا يقتصر استخدام الأرقام التسلسلية على المنتجات فقط؛ إذ يمكن تطبيق مفهوم الترقيم الفريد على الأجهزة، والمعدات، والمستندات، والأصول، وحتى السجلات داخل الأنظمة البرمجية.
ومن أهم استخداماته:
* تتبع المنتج.
* إدارة الضمان والصيانة.
* معرفة تاريخ المنتج أو دورة حياته.
* ربط المنتج بعميل أو طلب معين.
* منع الالتباس بين الوحدات المتطابقة.
* تسهيل عمليات المخزون والتدقيق.
بمعنى آخر، الفكرة الأساسية هي:
منح كل كيان هوية فريدة يمكن للنظام الاعتماد عليها لتمييزه عن غيره.
⸻
كيف ظهرت فكرة الأرقام التسلسلية؟
من الصعب تحديد تاريخ واحد يمكن اعتباره «أول استخدام للرقم التسلسلي»؛ لأن فكرة وضع علامات تعريفية على الممتلكات والسلع قديمة جدًا، بينما الرقم التسلسلي بمعناه الصناعي الحديث تطور تدريجيًا.
مع الثورة الصناعية وظهور الإنتاج واسع النطاق، أصبحت الحاجة إلى تمييز الوحدات الفردية أكثر أهمية.
فعندما كانت المنتجات تُصنع يدويًا وبأعداد قليلة، كان من الممكن معرفة مصدر القطعة من خلال الصانع أو العلامة التجارية أو علامات أخرى.
أما عندما بدأت المصانع بإنتاج آلاف القطع المتطابقة، ظهرت مشكلة جديدة:
كيف أستطيع تمييز قطعة معينة عن آلاف القطع الأخرى التي تشبهها تمامًا؟
ومن هنا أصبحت أنظمة الترقيم والتعريف الفردي أكثر أهمية في التصنيع وإدارة المخزون والصيانة.
ومن الأمثلة التاريخية الواضحة على ذلك الأسلحة النارية؛ فقد بدأت Springfield Armory في الولايات المتحدة بإعطاء الأسلحة أرقامًا تسلسلية فريدة بعد عام 1865، بينما لم تكن الأسلحة الوطنية لديها تحمل أرقامًا تسلسلية قبل ذلك التاريخ. (National Park Service)
لذلك، من الأدق أكاديميًا القول إن الترقيم التسلسلي الحديث تطور مع التصنيع والإنتاج واسع النطاق، بدلًا من تحديد سنة واحدة على أنها لحظة اختراع الرقم التسلسلي.
⸻
هل توجد أنظمة عالمية للأرقام التسلسلية؟
نعم، ولكن هنا يجب التفريق بين عدة مفاهيم.
ليس كل رقم تعريفي طويل يُسمى Serial Number.
هناك أنظمة مختلفة للتعريف، ولكل منها وظيفة مختلفة.
1. الترقيم التسلسلي البسيط
وهو أبسط نموذج:
000001
000002
000003
000004
...
كلما تم إنشاء وحدة جديدة، يحصل النظام على الرقم التالي.
ميزته الأساسية هي البساطة.
لكن له بعض العيوب، مثل إمكانية استنتاج عدد السجلات أو المنتجات تقريبًا، كما أن استخدامه في بعض الأنظمة العامة قد يجعل تخمين المعرفات أمرًا سهلًا.
⸻
2. الأرقام الأبجدية الرقمية
يمكن دمج الحروف والأرقام في معرف واحد:
AB-2026-000123
وقد يحتوي الرقم على أجزاء تمثل معلومات مختلفة، مثل:
AB - 26 - 000123
│ │ │
│ │ └── الرقم التسلسلي
│ └────────── السنة
└────────────────── رمز المصنع
لكن من المهم هنا التفريق بين التصميم الداخلي للشركة وبين المعايير العالمية.
فليس من الضروري أن يحمل الرقم نفسه جميع المعلومات التي يحتاجها النظام.
بل في كثير من الأنظمة الحديثة يكون المعرف مجرد قيمة فريدة، بينما تُخزن معلومات المنتج في قاعدة البيانات.
⸻
3. GTIN
من أشهر الأنظمة العالمية GTIN — Global Trade Item Number، وهو رقم يستخدم لتعريف المنتجات أو الخدمات التجارية في سلاسل التوريد.
وهنا توجد نقطة مهمة:
GTIN ليس رقمًا تسلسليًا لكل قطعة.
إذا كانت شركة تنتج مليون عبوة من المنتج نفسه، يمكن أن تحمل جميع هذه العبوات GTIN نفسه؛ لأن GTIN يعرّف نوع المنتج التجاري، وليس كل وحدة منفردة منه. (GS1 GO Customer Service Portal)
أما إذا أردنا تمييز كل وحدة على حدة، فيمكن استخدام:
GTIN + Serial Number
وهو ما يشار إليه في نظام GS1 بالـ SGTIN في سياقات التسلسل الفردي للمنتجات. (GS1 GO Customer Service Portal)
⸻
4. VIN
VIN — Vehicle Identification Number
هو معرّف مخصص للمركبات.
وفي الولايات المتحدة، يتكون VIN الحديث من 17 خانة، ويحتوي على معلومات محددة عن المركبة، مثل الشركة المصنعة وبعض خصائص المركبة وسنة الطراز ومصنع التجميع، وفق النظام المعتمد. (NHTSA)
لذلك يمكن اعتباره مثالًا على نظام تعريف مركب، وليس مجرد عداد يبدأ من:
000001
000002
000003
⸻
5. IMEI
IMEI — International Mobile Equipment Identity
هو معرّف مكون من 15 رقمًا يُستخدم لتمييز جهاز محمول على شبكات الاتصالات.
ويتكون IMEI من أجزاء، من بينها:
* TAC لتحديد نوع الجهاز.
* Serial Number لتمييز الجهاز ضمن ذلك النطاق.
* Check Digit للتحقق من سلامة الرقم.
وتوضح GSMA أن IMEI يميز الجهاز المادي نفسه، وليس اشتراك المستخدم أو رقم الهاتف. (GSMA)
⸻
6. ISSN
ISSN — International Standard Serial Number
وهنا توجد حالة قد تسبب التباسًا بسبب كلمة “Serial”.
فالـ ISSN ليس رقمًا تسلسليًا لكل نسخة من مجلة أو صحيفة.
بل هو معرّف مكون من 8 أرقام يستخدم لتعريف المنشورات الدورية نفسها، مثل المجلات والصحف والدوريات، سواء كانت ورقية أو إلكترونية. (ISSN)
⸻
7. النظام الست عشري Hexadecimal
أما النظام الست عشري:
0 1 2 3 4 5 6 7 8 9 A B C D E F
فهو ليس نظامًا للأرقام التسلسلية بحد ذاته.
إنما هو نظام عددي وتمثيل للبيانات يستخدم بكثرة في البرمجة والأنظمة منخفضة المستوى.
مثلًا:
A4F92C
يمكن أن يكون تمثيلًا سداسيًا عشريًا لقيمة رقمية أو بيانات ثنائية.
لذلك لا يصح اعتباره أحد «أنظمة الأرقام التسلسلية العالمية»، وإنما يمكن استخدامه كطريقة لتمثيل معرفات أو بيانات.
⸻
إذًا، كيف أصنع نظام أرقام تسلسلية خاصًا بي؟
هنا نصل إلى الجزء العملي.
في أحد المشاريع التقنية، احتجت إلى تصميم خوارزمية لإنشاء أرقام تعريف خاصة لإعادة الطلب والمنتجات والمستخدمين.
لنفترض أن لدينا رقمًا مكونًا من عدة أجزاء، مثل:
XXX XXX XX XX
ونريد أن يمثل كل جزء معلومة معينة:
XXX → العميل أو الموظف
XXX → المنتج
XX → سنة التصنيع
XX → المورد أو الشركة المصنعة
لكننا سنواجه مشكلة عندما تكون الأعداد أكبر من النطاق الذي تسمح به الخانات.
مثلًا، إذا خصصنا ثلاث خانات رقمية فقط:
000 → 999
فأقصى عدد يمكن تمثيله هو:
999
وبالتالي لا يمكننا تمثيل العميل رقم 1000 باستخدام ثلاث خانات رقمية فقط.
هنا يمكننا استخدام الحروف مع الأرقام لزيادة مساحة الاحتمالات.
مثلًا:
A-Z
أو:
A-Z + 0-9
وبالتالي يمكن إنشاء معرفات مثل:
A01
A02
A03
...
Z99
AA01
AA02
...
وبهذه الطريقة يمكن توسيع نطاق المعرفات دون جعل الرقم طويلًا جدًا.
⸻
لكن هناك نقطة مهمة جدًا
إذا كنت سأبني هذا النظام داخل بيئة إنتاجية، فلن أعتمد فقط على شكل الرقم.
يجب أن يكون هناك مصدر موثوق للفرادة (Uniqueness) داخل قاعدة البيانات.
مثلًا:
serial_number UNIQUE
لأن الخوارزمية وحدها ليست ضمانًا كافيًا.
إذا كان هناك مستخدمان أو عمليتان تحاولان إنشاء الرقم نفسه في اللحظة نفسها، فقد يحدث تصادم Collision إذا لم يكن النظام مصممًا للتعامل مع التزامن.
لذلك يجب أن يكون لدينا:
Generator
↓
Database
↓
UNIQUE Constraint
بحيث تكون قاعدة البيانات هي خط الدفاع الأخير ضد التكرار.
⸻
وهل يجب أن أضع كل المعلومات داخل الرقم؟
ليس بالضرورة.
وهذه من أهم النقاط التي تعلمتها عند تصميم أنظمة المعرفات.
قد يكون من المغري أن أصمم رقمًا مثل:
SA-26-07-001582
بحيث أعرف من الرقم مباشرة:
SA → الشركة
26 → السنة
07 → الشهر
001582 → المنتج
لكن هذا يجعل المعرف يحمل معنى داخليًا (Meaningful Identifier).
وفي بعض الأنظمة قد يكون ذلك مفيدًا.
لكن في أنظمة أخرى، الأفضل أن يكون المعرف مجرد قيمة فريدة، مثل:
01J...
أو:
8f4c...
ثم تكون جميع المعلومات الأخرى موجودة في قاعدة البيانات.
وهذا يقلل اعتماد النظام على بنية الرقم نفسه.
⸻
نموذج عملي
إذا أردت تصميم نظام داخلي بسيط، يمكن أن يكون لدينا:
PRD-26-000001
PRD-26-000002
PRD-26-000003
حيث:
PRD → نوع الكيان
26 → سنة الإنشاء
000001 → رقم تسلسلي
أو يمكن توسيعه باستخدام الحروف:
A01-PRD-26-0001
A02-PRD-26-26-0002
...
لكن يجب أن تحدد منذ البداية:
1. ما الحد الأقصى لعدد المعرفات؟
2. هل يمكن أن يحدث أكثر من إنشاء في الوقت نفسه؟
3. هل الرقم يجب أن يكون قابلًا للقراءة البشرية؟
4. هل يجب أن يكشف معلومات عن المنتج؟
5. هل يمكن تغيير البيانات المرتبطة به؟
6. هل نحتاج إلى Check Digit لاكتشاف أخطاء الإدخال؟
7. هل المعرف محلي للنظام أم يجب أن يكون عالميًا؟
8. هل يجب أن يبقى المعرف ثابتًا طوال دورة حياة الكيان؟
هذه الأسئلة أهم من مجرد اختيار الحروف والأرقام.
⸻
الخلاصة
الرقم التسلسلي في جوهره ليس مجرد مجموعة أرقام وحروف.
إنه نظام لتعريف كيان معين وتمييزه عن غيره.
يمكن أن يكون بسيطًا:
000001
أو أبجديًا رقميًا:
AB-000123
أو جزءًا من معيار عالمي مثل بعض أنظمة تعريف المنتجات والأجهزة والمركبات.
وعند بناء نظام خاص بك، يمكنك تصميم الصيغة التي تناسب احتياجاتك، لكن الأهم من شكل الرقم نفسه هو ضمان:
الفرادة + عدم التكرار + قابلية التوسع + التعامل مع التزامن + سلامة التخزين.
وهنا يبدأ الفرق بين «رقم يبدو جميلًا» وبين نظام ترقيم يمكن الاعتماد عليه في بيئة إنتاجية.
وشكرًا لقراءتكم.