فحص علاقة واحد إلى متعدد يبدأ بتحديد الجانب الذي يجب أن يظهر فيه كل مفتاح مرة واحدة. في pandas.merge، يتحقق validate="one_to_many" من تفرد مفاتيح الجدول الأيسر؛ لا يثبت هذا الشرط وحده أن كل سجل وجد مقابله المطلوب. [1]
الخلاصة السريعة
حدد أدوار الجدولين أولا، ثم افحص التفرد المتوقع والتغطية كل على حدة. راجع المفاتيح التي لم تطابق، ومعنى العلاقة وسياسة المجهول، قبل اعتبار الناتج صالحا لمهمة النموذج.
- one_to_many يفحص تفرد مفاتيح اليسار؛ نجاحه يخص شرط التعدد المحدد، لا اكتمال المطابقة. [1]
- إذا وضعنا جانب الواحد يمينا، يصبح الفحص المناسب للتفرد many_to_one؛ الاتجاه جزء من العقد. [1]
- في المثال، لوح ل1 له عينتان، ول2 بلا عينة، وعينة تشير إلى ل3 غير الموجود؛ تفرد الألواح لا يحسم هذين الغيابين.
- راجع المطابقات وغير المطابقات بنوع ربط مناسب، وسياسة null ومعنى العلاقة؛ لا تجعل نجاح الفحص حكما بصحة الهوية.
أي جانب نطلب تفرد مفاتيحه؟
توضح pandas أن one_to_one يفحص التفرد في الجانبين، بينما many_to_many لا يجري فحصا مماثلا. [1]
في مثالنا المقترح، الجدول الأيسر سجل ألواح، والجدول الأيمن عينات ألوان تابعة لها. نريد صفا واحدا لكل معرف لوح في سجل الألواح، لكن يمكن أن تتكرر الإشارة إلى اللوح في عدة عينات. هذا اتفاق عن الأدوار، لا سبب لحذف العينات المتعددة لأنها تشترك في معرف الأب.
ماذا إذا بدلنا ترتيب الجدولين؟
إذا صار سجل العينات يسارا وسجل الألواح يمينا، انتقل جانب الواحد إلى اليمين. لا نكرر اسم فحص اليسار ثم نلوم البيانات لأنه يرى عدة عينات للوح واحد. نكتب في بطاقة الربط أي جدول يمثل الكيان وأي جدول يمثل تفاصيله، ونختار شرط التفرد في موضعه.
وإذا وجدنا صفين للوح نفسه في جانب الواحد، نراجع سبب ذلك: قد يكون الإصدار جزءا مفقودا من المفتاح، أو تكون وحدة الصف مختلفة عما افترضناه. اختيار أول صف فقط يزيل عرض المشكلة، لكنه لا يثبت أننا اخترنا المعلومة المقصودة. لا ننفذ دمجا أو حذفا فعليا هنا.
هل تفرد جانب الواحد يضمن وجود كل طرف؟
نفترض سجل الألواح ل1 ول2 فقط، وسجل العينات يحتوي لونين للوح ل1 ولونا يشير إلى ل3. المفتاح فريد في جدول الألواح، لكن الجدولين لا يغطيان بعضهما كما قد تتطلب المهمة. هذه بيانات من إنشاء الكاتب.
إذا اشترط المشروع عينة لكل لوح، فغياب عينة ل2 يحتاج مراجعة. وإذا اشترط مرجعا معروفا لكل عينة، فإشارة ل3 تحتاج مراجعة أخرى. ولا نعتبر غياب أحدهما مشكلة دائما؛ فقد يسمح عقد مشروع مختلف بلوح لم يفحص بعد. نميز شرط تفرد المفاتيح عن الشروط المحلية لوجود الأطراف.
| المفتاح | في سجل الألواح | في سجل العينات |
|---|---|---|
| ل1 | صف واحد | عينتان |
| ل2 | صف واحد | لا عينة في المثال |
| ل3 | لا صف | عينة واحدة |
ما المراجعة التي تأتي بعد فحص التعدد؟
يتيح indicator وصف ظهور المفتاح في اليسار فقط أو اليمين فقط أو الجانبين، وفق الناتج الذي احتفظ به نوع الربط. [1]
نقترح مراجعة نوع الربط حتى لا نخفي المفاتيح غير المتطابقة ثم نعلن تغطية كاملة. نحفظ قائمة ل2 ول3 في المثال للمراجعة، ونحدد ما المطلوب بشأنهما. ونعالج سياسة المفاتيح المجهولة صراحة؛ لا تجعل الإشارتان المجهولتان دليلا على هوية مشتركة.
ثم نسأل هل العينة تخص اللوح المقصود فعلا، وهل الوحدات والأوقات متوافقة مع المهمة. فحص التعدد، وفحص التغطية، وفحص المعنى أسئلة متصلة لكنها مختلفة. نجاح أحدها لا يجيب عن البقية، وهذه خطة تعليمية لمراجعة الإعداد وليست نتيجة اختبار أداة على ملف حقيقي.
المصادر ومتابعة القراءة
- pandas: merge (يفتح في نافذة جديدة)pandas.pydata.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
