إضافة حقل بحث متعدد الجداول
الهدف
أنشئ حقلًا يشير إلى سجل في أحد عدة جداول — «عميل» قد يكون حسابًا أو جهة اتصال، أو «دافع» قد يكون أيًّا من أربعة أشياء.
المتطلبات المسبقة
- أنت مسجّل الدخول بدور مُنشئ (أو مسؤول منصة).
- الجدول الذي تضيف الحقل إليه موجود، وكذلك جدولان على الأقل تريد أن يستطيع الحقل الإشارة إليهما.
الخطوات
- افتح الجداول، واختر البيئة، وافتح جدولك على تبويب الحقول.
- اختر جديد، وأعطِ الحقل اسمًا معروضًا واسمًا منطقيًا كالمعتاد.
- لنوع البيانات، اختر حقل البحث (عدة جداول).
- حدّد الجداول التي قد يشير الحقل إليها. جدولان على الأقل. يظهر رقم صغير بجانب كل جدول محدَّد يبيّن ترتيب تحديدك له — وهو الترتيب الذي يراه المستخدم، فيكون الأو ل هو الجدول الذي يُفتح عليه المنتقي. حدّد الأكثر شيوعًا أولًا.
- اختر إضافة.
- يصبح الحقل فعّالًا بمجرد إضافته — عموده موجود في الحال، كما هي الحال مع أي حقل.
ما يراه المستخدم
مربع بحث عادي. واختياره يفتح لوحة، وتتصدّر الجداول التي حدّدتها تلك اللوحة، فوق الأسماء التي ترشّحها:
العميل
[ 👤 آدا لوفلايس ] ← مغلقًا: السجل، ومعه أيقونة جدوله
─────────────────────────────
[ حساب ] [ جهة اتصال ] ← مفتوحًا: الجداول التي حدّدتها، بترتيبك
آدا لوفلايس ← …والنتائج في المحدَّد منها
آدا بايرون
اختيار الجدول أولًا ليس خطوة زائدة لذاتها. فـ«ابحث لي عن جهة اتصال باسم آدا» و«ابحث لي عن حساب باسم آدا» بحثان مختلفان على مجموعتين مختلفتين من الأعمدة، ولذا فإن قائمة نتائج واحدة مدمَجة كانت ستضطر إلى التوفيق بين أعمدة لا تتناظر. وتسمية الجدول أولًا تعني أن كل ما تحته هو حقل البحث الذي يعمل أصلًا — ببحثه وسطوره الثانية وصوره وشبكة البحث المتقدّم فيه.
والجداول داخل اللوحة لا فوق المربع، فلا تشغل من النموذج شيئًا ما لم يكن أحد ينتقي. ولهذا يعرض السجل المختار أيقونة جدوله بجانبه: فمع اختفاء المنتقي، تبقى الأيقونة هي ما يقول أآدا حسابٌ أم جهة اتصال. وهي الأيقونة التي أعطيتها للجدول في مصمّم الجداول، فأعطِ جداولك أيقونات مميّزة إن كانت ستجتمع في حقل بحثٍ متعدّد الجداول.
وتبديل الجدول يمحو الاختيار، وذلك مقصود: فمعرّف جهة الاتصال ليس معرّف الحساب.
ما الذي يُخزَّن
شيئان في عمودين: معرّف السجل، والجدول الذي ي وجد فيه. وسترى العمود الثاني إن استعلمت عن الجدول
مباشرة — إنه اسم عمودك ومعه _type في نهايته، ويحمل الاسم المنطقي للجدول.
وهذا هو الشكل نفسه الذي تستخدمه المنصة بالفعل لمالك السجل، وهو سبب كون هذا الحقل نوع بيانات منفصلًا لا حقل بحث بقائمة أهداف أطول.
المقايضة الحقيقية الوحيدة: بلا مفتاح خارجي
يحصل حقل البحث العادي على مفتاح خارجي حقيقي، فتمنع قاعدة البيانات نفسها حذف السجل الذي يشير إليه. أما حقل البحث متعدد الجداول فلا يمكنه ذلك — إذ لا يستطيع عمود واحد الإشارة إلى عدة جداول — وبالتالي:
- ما زالت المنصة تتحقق، عند كل عملية حفظ، من وجود السجل الذي اخترته.
- لكن إن حذفه أحدهم لاحقًا، فلا شيء يمنعه. ويعرض الحقل عندئذٍ الإشارة الخام بدلًا من الاسم، وهو الأمر نفسه الذي يعرضه حقل بحث عادي عند فقدان هدفه: مرئي، لا صامت.
- وما زال حذف جدول كامل ممنوعًا طالما ي ُدرجه حقل بحث متعدد الجداول كهدف، مثل حقل البحث العادي.
وإن احتجت جدولًا واحدًا فقط، فاستخدم حقل البحث العادي. تحصل على المفتاح الخارجي، وسيقول لك المصمّم ذلك بدلًا من أن يتركك تبني عمودًا أضعف بلا قصد.
التبويبات ذات الصلة ما زالت تعمل
يحصل كل جدول محدَّد على علاقته الخاصة، فيقدّم سجلٌ في أي منها تبويب ذات صلة يعدّد السجلات التي تشير إليه. فنموذج الحساب يعرض عملاءه، وكذلك نموذج جهة الاتصال. ولا شيء إضافي لإعداده.
والمالك أحد هذه الحقول
مالك السجل إشارة متعددة الجداول — شخص أو فريق — ويُعرض بهذا التحكّم نفسه في أي نموذج يضع حقل المالك. واختيار مالك جديد هناك يفعل ما يفعله أمر الإسناد، ويمرّ بالفحوص نفسها؛ راجع تغيير مالك السجل.
حل المشكلات
- «حدّد جدولين على الأقل.» — بهدف واحد يكون هذا حقل بحث عاديًا تخلّى عن مفتاحه الخارجي بلا مقابل. اختر حقل البحث بدلًا منه.
- الجداول معطّلة عند فتح حقل موجود. — قائمة الأهداف ثابتة بعد إنشاء الحقل، للسبب نفسه الذي يجعل هدف حقل البحث الواحد ثابتًا: فالسجلات تحمل بالفعل إشارات فُحصت مقابل هذه القائمة، وإزالة جدول كانت ستترك بعضها مشيرًا إلى شيء يقول الحقل إنه لا يستطيع الوصول إليه. احذف الحقل وأضفه من جديد.
- المنتقي يعرض أسماء منطقية بدل أسماء الجداول. — لم تُحمَّل قائمة جداول البيئة بعد. تُحلّ بعد لحظة؛ وإن لم تُحلّ، فأعد فتح النموذج.
- الحقل يعرض شيئًا مثل
contact:9f2c…لا اسمًا. — السجل الذي يشير إليه قد حُذف. اختر غيره. - جدول أريده ليس في القائمة. — جدول الحقل نفسه مستبعَد، كما في حقل البحث العادي. وكل ما عداه في البيئة معروض.