الانضمام
ببعض الطرق، الانضمام مثل لصق من حيث أنه يضيف أعمدة إلى ملف ، لكنه يستخدم طريقة فريدة للقيام بذلك. أ الانضمام هي عملية مرتبطة عادة بـ قواعد البيانات العلائقية حيث البيانات من عدة الجداول مع حقل مفتاح مشترك يتم دمجه لتشكيل النتيجة المرجوة.
إنّ كافة أنواع عهود الـ الانضمام يقوم البرنامج بنفس العملية. يقوم بجمع البيانات من ملفات متعددة بناءً على حقل مفتاح مشترك.
لمعرفة كيفية استخدام عملية الانضمام في قاعدة بيانات علائقية ، دعنا نتخيل قاعدة بيانات صغيرة جدًا تتكون من جدولين ، يحتوي كل منهما على سجل واحد. يحتوي الجدول الأول ، المسمى العملاء ، على ثلاثة حقول: رقم العميل (CUSTNUM) ، والاسم الأول للعميل (FNAME) ، والاسم الأخير للعميل (LNAME):
كوستنوم | اسم الملف | LNAME |
======== | ===== | ====== |
4681934 | جون | سميث |
يُطلق على الجدول الثاني اسم "الطلبات" ويحتوي على أربعة حقول: رقم الطلب (رقم الطلب) ، ورقم الزبون (CUSTNUM) ، والكمية (QUAN) ، والصنف المطلوب (ITEM).
ترتيب | كوستنوم | QUAN | الغرض |
======== | ======= | ==== | ==== |
3014953305 | 4681934 | 1 | القطعة الزرقاء |
لاحظ أن كلا الجدولين يشتركان في الحقل CUSTNUM. هذا مهم ، لأنه يسمح بعلاقة بين الجداول.
سيسمح لنا إجراء عملية ربط بدمج الحقول في الجدولين لتحقيق نتيجة مفيدة ، مثل إعداد فاتورة. باستخدام القيم المطابقة في حقول CUSTNUM في كلا الجدولين ، يمكن أن تنتج عملية الصلة ما يلي:
اسم الملف | LNAME | QUAN | الغرض |
===== | ===== | ==== | ==== |
جون | سميث | 1 | القطعة الزرقاء |
لإظهار الانضمام البرنامج ، سنحتاج إلى إنشاء ملفين بمفتاح مشترك. للقيام بذلك ، سوف نستخدم الخاص بنا توزيعات حسب تاريخ. txt ملف. من هذا الملف ، سننشئ ملفين إضافيين ، أحدهما يحتوي على تواريخ الإصدار (والذي سيكون مفتاحنا المشترك لهذا العرض التوضيحي) وأسماء الإصدار:
[me @ linuxbox ~] $ cut -f 1,1،XNUMX distros-by-date.txt> distros-names.txt [me @ linuxbox ~] $ الصق distros-date.txt distros-names.txt> distros- key-names.txt
[me @ linuxbox ~] $ رئيس توزيعات أسماء المفاتيح.txt
11/25/2008 فيدورا 10/30/2008 أوبونتو 06/19/2008 SUSE
05/13/2008 فيدورا 04/24/2008 أوبونتو 11/08/2007 فيدورا 10/18/2007 أوبونتو
[me @ linuxbox ~] $ cut -f 1,1،XNUMX distros-by-date.txt> distros-names.txt [me @ linuxbox ~] $ الصق distros-date.txt distros-names.txt> distros- key-names.txt
[me @ linuxbox ~] $ رئيس توزيعات أسماء المفاتيح.txt
11/25/2008 فيدورا 10/30/2008 أوبونتو 06/19/2008 SUSE
05/13/2008 فيدورا 04/24/2008 أوبونتو 11/08/2007 فيدورا 10/18/2007 أوبونتو
10/04/2007 سوس
05/31/2007 فيدورا 04/19/2007 أوبونتو
10/04/2007 سوس
05/31/2007 فيدورا 04/19/2007 أوبونتو
والملف الثاني الذي يحتوي على تواريخ الإصدار وأرقام الإصدارات:
[me @ linuxbox ~] $ cut -f 2,2،XNUMX distros-by-date.txt> توزيعات vernums.txt [me @ linuxbox ~] $ لصق distros-date.txt distros-vernums.txt> distro s-key-vernums.txt
[لي @ لينوكس بوكس | ~] $ رئيس توزيعات مفتاح vernums.txt |
11/25/2008 | 10 |
10/30/2008 | 8.10 |
06/19/2008 | 11.0 |
05/13/2008 | 9 |
04/24/2008 | 8.04 |
11/08/2007 | 8 |
10/18/2007 | 7.10 |
10/04/2007 | 10.3 |
05/31/2007 | 7 |
04/19/2007 | 7.04 |
لدينا الآن ملفان بمفتاح مشترك (حقل "تاريخ الإصدار"). من المهم الإشارة إلى أنه يجب فرز الملفات في حقل المفتاح لـ الانضمام للعمل بشكل صحيح.
[me @ linuxbox ~] $ الانضمام إلى توزيعات-مفتاح-أسماء. txt توزيعات-مفتاح-vernums.txt | رئيس
11/25/2008 فيدورا 10
10/30/2008 أوبونتو 8.10
06/19/2008 SUSE 11.0 تحديث
05/13/2008 فيدورا 9
04/24/2008 أوبونتو 8.04
11/08/2007 فيدورا 8
10/18/2007 أوبونتو 7.10
10/04/2007 SUSE 10.3 تحديث
05/31/2007 فيدورا 7
04/19/2007 أوبونتو 7.04
[me @ linuxbox ~] $ الانضمام إلى توزيعات-مفتاح-أسماء. txt توزيعات-مفتاح-vernums.txt | رئيس
11/25/2008 فيدورا 10
10/30/2008 أوبونتو 8.10
06/19/2008 SUSE 11.0 تحديث
05/13/2008 فيدورا 9
04/24/2008 أوبونتو 8.04
11/08/2007 فيدورا 8
10/18/2007 أوبونتو 7.10
10/04/2007 SUSE 10.3 تحديث
05/31/2007 فيدورا 7
04/19/2007 أوبونتو 7.04
لاحظ أيضًا أنه بشكل افتراضي ، الانضمام يستخدم مسافة بيضاء كمحدد لحقل الإدخال ومسافة واحدة كمحدد لحقل الإخراج. يمكن تعديل هذا السلوك عن طريق تحديد الخيارات. انظر الانضمام صفحة الرجل للحصول على التفاصيل.