أهم أقسام المدونة

الصفحات

الخميس، 25 مايو 2017

Data Mapping


خرائط البيانات Data Mapping:

يتيح لك موصل البيانات عمل خراط للجداولTable Mapping ، باستخدام الخاصية IDataAdapter.TableMappings.
وذلك بإعادة تسمية الجداول والأعمدة بأسماء خاصة بك، وربطها بالأسماء الحقيقية في قاعدة البيانات.. هذا يحقق لك الفوائد التالية:
1- تغيير أسماء الجداول أو الأعمدة في مجموعة البيانات كما يناسب برنامجك، دون العبث بقاعدة البيانات الأصلية.
2- عرض أسماء الأعمدة للمستخدم بالطريقة التي تناسبك.
3- إذا كان لديك جدولان لهما نفس الاسم في قاعدتي بيانات مختلفتين، فبإمكانك إضافتهما إلى نفس مجموعة البيانات، وذلك بتغيير اسميهما من خلال خريطة الجدول الخاصة بكل منهما.

وتنقسم خرائط البيانات إلى نوعين: 

1- خريطة الجدول Table Mapping:
حيث تكون لكل جدول خريطة، يذكر فيها اسمه الأصلي في قاعدة البيانات واسمه الجديد في مجموعة البيانات.. وتوضع خرائط الجداول في المجموعة TableMappings في موصل البيانات.
وهناك نقطة هامة يجب أن تنتبه إليها عند إنشاء هذه الخرائط، هي ان موصل البيانات يعطي أسماء افتراضية للجداول، تختلف عن أسمائها الأصلية (مثل Table و Table1... إلخ).. هذا قد يسبب لك ارتباكا وأنت تنشئ خرائط الجداول، فستبدو لك وظيفتها عكسية، فبدلا من أن تعطي الجدول الأصلي اسما جديدا، ستحاول أن تعيد تسمية الاسم الافتراضي الخاص بموصل البيانات باسم الجدول الأصلي!
لكن بقليل من التأمل، ستفهم لماذا يفعل موصل البيانات هذا.. فاستعلام التحديد في معظم الحالات لا يعيد جدولا من قاعدة البيانات، بل قد يعيد أجزاء من عدة جداول (كما في حالة الربط Joining) أو قد يعيد نتائج محسوبة من جدول أو أكثر (كما في حالة التجميع Aggregation).. لهذا يريح موصل البيانات نفسه من كل هذه الاحتمالات المعقدة، ويسمي الجداول الناتجة من الاستعلام بأسماء افتراضية، ويترك لك حرية إنشاء خريطة الجداول التي تصحح فيها الأسماء بطريقتك.
والمشروع Mapping يريك مثالا على هذا.. فنحن نستخدم استعلام ربط يعيد المؤلفين وكتبهم.. نتيجة هذا الاستعلام ستحتوي على جدول مخلق، سيعطيه موصل البيانات الاسم الافتراضي Table، لهذا استخدمنا خريطة الجدول لإعادة تسميته Authors-Books. 

2- خريطة العمود Column Mapping:
حيث تكون لكل عمود خريطة، يذكر فيها اسمه الأصلي في قاعدة البيانات واسمه الجديد في مجموعة البيانات.. وتوضع خرائط الأعمدة في المجموعة ColumnMappings في خريطة الجدول الذي تنتمي إليه.
ولا يحتاج موصل البيانات إلى تسمية الأعمدة بأسماء افتراضية، لسبب بسيط: هو أن كل عمود يتم ذكره صراحة في استعلام التحديد، وحتى الأعمدة المولدة (الأعمدة المحسوبة) يتم تسميتها إجباريا باستخدام الفقرة As، لهذا فإن موصل البيانات يعرف يقينا اسم كل عمود في النتيجة.. ولا يتدخل موصل البيانات لإعادة تسمية العمود، إلا في حالة وجود عمودين بنفس الاسم (يمكن أن يحدث هذا لو كنت تستخدم أكثر من جملة SELECT في أمر التحديد مثلا).
وأهم استخدام لخرائط الأعمدة، هو إعادة تسمية الأعمدة بطريقة تصلح لعرضها للمستخدم.. والمشروع Mapping يريك مثالا على هذا، حيث استخدمنا خريطة الأعمدة لإعادة تسمية العمود Author بالاسم "المؤلف"، والعمود Books بالاسم "الكتاب".. هذان الاسمان سيظهران في جدول العرض وهذا مناسب للمستخدم العربي للبرنامج. 

لاحظ أنك بعد عمل خرائط الربط، ستستخدم اسم الجدول الجديد واسمي العمودين العربيين في الكود عند التعامل معهما من خلال مجموعة البيانات.. مثلا:
Dim T = Ds.Tables("Authors-Books")
MsgBox(T.Columns("المؤلف").MaxLength)
في الحقيقة هناك حل آخر لعرض أسماء الأعمدة بأسماء عربية دون استخدام خريطة الأعمدة، وذلك باستخدام خصائص جدول العرض نفسه لإعادة تسمية عنوان العمود، كما سنرى فيها بعد.

والآن، فلنتعرف على خرائط الجداول والأعمدة، وكيفية استخدامها.. وسنتفق هنا على استخدام التعبير "اسم الجدول الأصلي" للإشارة إلى الاسم الذي يمنحه موصل البيانات للجدول، مع ملاحظة أن هذا الاسم حساس لحالة الأحرف.. كما سنستخدم التعبير "اسم العمود الأصلي" للإشارة إلى اسم العمود في قاعدة البيانات، أو الاسم البديل الذي سماه به موصلا البيانات إن حدث تعارض بين عمودين، مع ملاحظة أن هذا الاسم غير حساس لحالة الأحرف. 

ولقد استخدمنا الكود التالي في المشروع Mapping لإعادة تسمية الجدول وعموديه:
Dim TM = DaAuthors.TableMappings.Add(
                   "Table", "Authors-Books")
TM.ColumnMappings.Add("Author", "المؤلف")
TM.ColumnMappings.Add("Book", "الكتاب")
 
وتستخدم الفئات التالية في إنشاء خرائط الجداول والاعمدة:

من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.