تريد المؤسسة منع تكرار كود المورد في ERP، لكنها تسمح بإضافة المورد قبل وصول الكود الخارجي. يضيف المطور قيد UNIQUE ثم يرى عدة سجلات تحمل NULL، فيظن أن القيد لا يعمل. التشخيص الصحيح يبدأ بمعنى «لم يُعرف الكود بعد» وبالنطاق الذي يجب أن يكون الكود فريدًا داخله.
اكتب قاعدة العمل قبل قيد الجدول
هل يجوز وجود موردين بلا كود؟ وهل الكود فريد في النظام كله أم داخل كل شركة؟ وهل المسافة أو اختلاف حالة الأحرف يغير الهوية؟ الإجابات لا تأتي من اسم UNIQUE. احتفظ بمعرف داخلي ثابت للسجل حتى لو تأخر الكود الخارجي، ولا تجعل إدخال قيمة شكلية متكررة وسيلة لتجاوز الحقل المطلوب.
توضح وثائق PostgreSQL 17 للقيود أن قيم NULL لا تُعد متساوية افتراضيًا عند التحقق من التفرد، ويمكن تغيير ذلك باستخدام NULLS NOT DISTINCT. أما القيد المركب فيختبر مجموعة الأعمدة معًا. هذه سلوكيات قاعدة البيانات، وليست قرارًا بأن المؤسسة يجب أن تمنع كل سجل إضافي بلا كود.
اختبر الحالات التي قد تختلط
| العينة المصطنعة | قرار يجب توثيقه |
|---|---|
| موردان بلا كود | هل يسمح مسار الإدخال بذلك؟ |
| الكود نفسه داخل شركة واحدة | هل يرفض التكرار؟ |
| الكود نفسه في شركتين | هل يختلف نطاق الهوية؟ |
| NULL وسلسلة فارغة ومسافات | كيف يطبع التطبيق كل قيمة قبل الحفظ؟ |
في مثال افتراضي، تختار المؤسسة السماح بسجلات متعددة مجهولة الكود، لكنها تمنع تكرار أي كود معلوم داخل الشركة. تطبيق NULLS NOT DISTINCT تلقائيًا قد يناقض أول جزء من المطلوب. قارن البدائل مع المطور بعد كتابة الحالات، بدل اختيار العبارة لأنها تبدو أشد.
راجع البيانات الموجودة والتزامن
قبل ترحيل قيد جديد، افحص السجلات المخالفة وسياسة تطبيع النص ومعالجة القيم القديمة. لا تحول الفراغ إلى كود وهمي ولا تحذف موردًا مرتبطًا بمستندات لمجرد تسهيل الترحيل. جهز تقرير استثناءات يراجعه صاحب البيانات.
اختبر محاولتي إنشاء متزامنتين لكود معلوم واحد في بيئة الاختبار. فحص الواجهة قبل الحفظ مفيد لتجربة المستخدم، لكنه لا يغني عن فرض القاعدة في طبقة موثوقة. راجع رسالة رفض مفهومة وإمكان تصحيح الكود دون ضياع بقية النموذج.
اعتمد القيد مع صاحب العملية
ضمن تصميم نظام ERP اطلب ورقة حالات مع نتائجها في الفحص التقني. معيار القبول أن تحمي قاعدة البيانات الهوية المتفق عليها، مع السماح بمراحل الإدخال الفعلية. لا تساوِ NULL بالنص الفارغ ولا تجعل اختيار قيد تقني يفرض سياسة عمل غير معتمدة.




