میهن داکیومنت بزرگترین مرجع و مرکز دانلود پایان نامه (متن کامل فرمت ورد) فروش پایان نامه - خرید پایان نامه (کاردانی ، کارشناسی)همه رشته ها
حقوق اقتصاد مدیریت روانشناسی ریاضی تربیت بدنی کامپیوتر نرم افزار و سخت افزار عمران معماری برق صنایع غذایی علوم اجتماعی هنر علوم سیاسی فیزیک مکانیک حسابداری

تبلیغات کلیکی - افزایش رتبه گوگل

اگهی رایگان

پروژه نگاشت تراکنشهای پايگاه داده شی گرا به تراکنشهای رابطه ای


کد محصول : 1000861 نوع فایل : word تعداد صفحات : 14 صفحه قیمت محصول : رایگان تعداد بازدید 926

دانلودرایگان فایل رمز فایل : m3d861

فهرست مطالب و صفحات نخست


نگاشت تراکنشهای پايگاه داده شی گرا به تراکنشهای رابطه ای

در اكثر پروژه¬هاي كامپيوتري انجام شده در دهه¬هاي اخير از تكنولوژي¬هاي تمام شئ¬گرايي مانند Java و C# استفاده شده در حالي كه براي ذخيره سازي داده¬ها از پايگاه¬داده¬هاي رابطه¬اي كه در آنها اثري از شئ¬گرايي موجود نيست استفاده شده. اين بدين معنا نيست كه انتخاب¬هاي ديگري موجود نيست بلكه بسياري زبان¬هاي برنامه¬نويسي Procedural شبيه COBOL موجود است همچنين بسياري از پايگاه¬داده¬هاي موجود از تكنولوژي شئ¬گرا بهره مي¬برند از جمله مي¬توان از پايگاه¬داده¬هاي XML نام برد.
بين تكنولوژي¬هاي شئ¬گرايي و رابطه¬اي كه اكثر تيم¬هاي نرم-افزاري در سيستم¬هاي خود به¬كار مي¬برند يك ناهم¬خواني ذاتي موجود است. براي رفع اين ناهمخواني يك راه ساده وجود دارد كه از دو بخش تشكيل شده: ابتدا بايد پروسه¬ي نگاشت اشياء به رابطه¬هاي پايگاه¬داده را آموخت و سپس روشي براي پياده¬سازي آن فرا گرفت.

1    نقش DBA

شكل 1 نشان دهنده نقش يك DBA است زماني كه نگاشت بين مدل رابطه¬اي و شئ¬گرا را انجام مي¬دهد. سه عمل اوليه براي اين¬كار عبارتند از:
1- نگاشت  : هدف اصلي يافتن يك استراتژي مناسب و كارا براي نگاهداري داده¬هاي اشياء است. اين كار شامل ذخيره كردن صفات و رابطه¬هاي بين اشياء از جمله رابطه¬ي ارث بري ميان اشياء است.
2- پياده¬سازي نگاشت 
3- يكسان ساختن كارايي 
 


نكته¬ي قابل توجه در شكل1 اين است كه هم DBA ها و هم توليدكنندگان نرم¬افزارها در هر سه فعاليت بالا با هم كار مي¬كنند.  ]‎1[

2    ايده اصلي

اولين چيزي كه در نگاشت اشياء به پايگاه¬داده¬هاي رابطه¬اي به نظر مي¬رسد نگاشت بين صفات اشياء و ستون¬هاي جداول است. هر صفت از يك شئ به صفر يا چند ستون در پايگاه¬داده رابطه¬اي تبديل مي¬شود. به خاطر داشته باشيد كه كليه صفات يك شئ پايدار (Persistent) نيستند. به عنوان مثال صفت ميانگين نمرات در يك شئ Student ممكن است فقط در برنامه استفاده شود در حالي كه نيازي به ذخيره¬سازي مقدار آن در پايگاه¬داده نيست چراكه از روي مقادير باقي صفات قابل محاسبه مي¬باشد. و يا بعضي صفات در اشياء خود يك شئ مستقل مي¬تواند باشد به همين دليل ممكن است در پايگاه¬داده رابطه¬اي مجموعه¬اي از چند ستون به عنوان جايگزيني براي يك صفت در يك شئ در نظر گرفته شود. ساده¬ترين حالت در نگاشت يك شئ زماني است كه هر صفت از يك شئ به يك ستون از يك جدول در پايگاه¬داده نگاشت شود مخصوصاً زماني كه نوع داده¬اي در مدل شئ¬گرا با نوع داده¬اي در مدل رابطه¬اي يكسان باشند. ]‎4[
براي سادگي مي¬توان فرض كرد كه كلاس¬ها به صورت يك به يك به جداول در پايگاه¬داده¬ها نگاشت مي¬شوند. اما به غير از موارد بسيار ساده و ابتدايي همانطور كه در ادامه خواهيم ديد اين فرض اشتباه بوده و نياز به عمليات بيشتري براي نگاشت ميان كلاس¬ها و جداول در اين دو مدل است. اما در اين نوشته معمولاً ابتدا هر كلاس را به يك جدول نگاشت كرده و سپس ساير بهينه¬سازي¬ها را انجام مي¬دهد.


شكل ۲ نشان دهنده يك نمودار كلاس ساده به همراه مدل ذخيره سازي فيزيكي معادل آن در پايگاه¬داده رابطه¬اي مي¬باشد. شما در اين شكل ميتوانيد ارتباط بين عناصر يك كلاس با ستونهاي پايگاه‌داده را مشاهده كنيد.

 با وجودي كه شما¬ها در شكل نشان داده شده بسيار شبيه هستند اين تفاوتها بدان معنا است كه انطباق كامل نخواهد بود. تفاوتها بين شماها شامل :
•    چندين خصيصه براي tax  در نمودار كلاس وجود دارد در صورتي كه تنها يك معادل در شماي داده براي آن موجود است. اين بدان معنا است كه سه خصيصه tax در كلاس tax در یک ستون از جدول Order اضافه و نگهداري شوند در زمان ذخيره سازي  و وقتي شيئ خوانده مي‌شود در حافظه 3 خصيصه بايد محاسبه شوند .
•    شماي داده شامل كليد است در حالي كه شماي شيئ اين خصيصه را ندارد بايد براي شناسايي و ارتباط بين كليد در كلاس سياست و روندي اتخاذ گردد. به اين اطلاعات اضافي "اطلاعات سايه"  ميگوييم.
•    نوع هاي مختلفي  در هر شما موجود است بايد بدون از بين رفتن اطلاعات بتوان آنها را به هم تبديل كرد. ]‎2[


اطلاعات سايه

اطلاعات سايه شامل هر داده اي است كه اشيائ براي ساختن نياز دارند. از قبيل كليد، كنترل همروند و ... .
شكل۳ مدل ريزتري از كلاسهاي  Order و Order Item را مشخص ميكند.
•    شامل خصوصيات سايه‌اي كه كلاس براي نمايش مطبوع خودش نياز دارد  مي¬باشد. در جلو اسم اين خصوصيات به جاي خط فاصله فاصله قرار‌گرفته و جلو آنها وا‍‍ژه كليشه¬اي <<persistence>> قرار گرفته¬است.

•    چهارچوب اطلاعات مورد نياز براي ايفا روابط بين خصوصيات دو كلاس .چهارچوب خصوصيات، از قبيل بردار OrderItem  در Order.

•    تابع GetTotalTax() به كلاس Order براي محاسبه مقدار tax در جدول Order اضافه شده‌است. ]‎2[

اطلاعات سايه به طور ضروري نيازمند ايفا شدن بوسيله business object ها مي‌باشند. و بايد به چگونگي انها توجه شود.

انطباق Meta Data

شكل۴ Meta Data نمايش داده شده انطباق مورد نياز جهت برقراري كلاسهاي شكل۳ است. MetaData   اطلاعاتي راجع به داده ميباشد. ما نياز به راههايي براي نمايش انطباق داده‌ها داريم كه در شكل۴ به وضوح ديده ميشود.
 
Property     Column
Order.orderID     Order.OrderID
Order.dateOrdered     Order.DateOrdered
Order.dateFulfilled     Order.DateFulfilled
Order.getTotalTax()     Order.Tax
Order.subtotalBeforeTax     Order.SubtotalBeforeTax
Order.shipTo.personID     Order.ShipToContactID
Order.billTo.personID     Order.BillToContactID
Order.lastUpdate     Order.LastUpdate
OrderItem.ordered     OrderItem.OrderID
Order.orderItems.position(orderItem)     OrderItem.ItemSequence
OrderItem.item.number     OrderItem.ItemNo
OrderItem.numberOrdered     OrderItem.NumberOrdered
OrderItem.lastUpdate     OrderItem.LastUpdate
شكل 4

شكل۴  به قسمت عمده تكنيك مقاومت غير انطباقي  بين تكنولو‍‍‍‍‍‍ژي شيئ و تكنولوژي رابطه‌اي است. كلاسها  رفتار وداده هاي و روابط جداول پايگاه داده را مشخص مي¬كنند. نتيجه نهايي وقتي بدست ميآيد كه شما يك كلاس رو به روابط پايگاه داده انطباق مي‌دهيد. شما بايد Operation   هاي getter و setter را هم براي هر ستون جدول  به كلاس اضافه كنيد.

   3نگاشت ساختارهاي وراثتي

پايگاه¬داده¬هاي رابطه¬اي به طور ذاتي وراثت را پشتيباني نمي¬كنند، بنابر اين شما مجبوريد ساختارهاي وراثتي را در شماهاي شيئ براي شما داده ترسيم كنيد.
مفهوم وراثت در چندين پيجيدگي جالب در زمان ثبت اشيا در پايگاه¬داده¬هاي رابطه¬اي گذاشته¬شده.ما  چندين راه حل مقدماتي براي نگاشت وراثت به پايگاه¬داده رابطه¬اي ارائه¬كرده¬ايم. كه اين تكنيكها شامل:

•    نگاشت كلاس وراثت به يك جدول تنها
•    نگاشت هر كلاس واقعي با جدول خودش.
•    نگاشت هر كلاس با جدول خودش.
•    نگاشت كلاسها به ساختار كلي جداول. ]‎2[

براي توصيف هر تكنيك ما چگونگي نگاشت دو نسخه از وراثت نمايش داده شده در شكل۵ را توضيح مي دهيم نسخه اول شامل ۳ كلاس است – person، كلاس انتزاعي، و دو كلاس employee , costomer – نسخه دوم وراثت كلاس ديگري را اضافه‌مي‌كند بنام executive .

نگاشت كلاس وراثت به يك جدول تنها

تمام خصيصه¬هاي كلاسها را در يك جدول نگهداري مي¬كنيم. شكل۶ مدل داده¬اي مورد نظر براي شكل۵ را نمايش مي¬دهد. كه نام اين جدول person است، يك استراتژي خوب براي نام گذاري جدول استفاده از نام ريشه كلاس وراثت است كه يك قانون سر¬راست است.
 
شكل 6
 دو ستون به جدول اضافه شده¬اند ¬_PersonType , PersonPOID ستون دوم جهت مشخص¬كردن كليد است و اولي براي مشخص كردن آن است كه Peson مشتري يا كارمند يا هر دو آنها ميباشد. PersonPOID يك مشخص كننده پايا اشيا است. كه معمولا به آن مشخص كننده شيئ  ميگوييم.
زماني كه executive  را هم اضافه كنيد آنگاه جداول به صورت شكل۷ در مي¬آيد. ]‎[4

نگاشت هر کلاس واقعي به جدول مخصوص خود

در اين زمينه هر جدول براي هر کلاس وااقعي شاخته شده است، هر جدول شامل خصوصيات ايفاشده بوسيله کلاس و خصوصيات ارث برده شده توسط آن است. شکل8 مشخص کننده مدل فيزيکي داده براي سلسله مراتب شکل5 است زماني که اين زمينه برخورد شده است.


نگاشت هر کلاس به جدول مخصوص آن کلاس

اين استراتژي را که هر کلاس جدول مخصوص به خود را دارد در نظر ميگيريم. با يک ستون براي خصوصيات تجاري و هر اطلاعات شناسايي.شکل9 مدل فيزيکي داده  کلاسهاي شکل5 را زماني که هر کلاس به يک جدول نگاشته شده است را نمايش داده است. داده ها براي کلاس customer در دوکلاس نگهداري شده¬اند، Customer وPerson ، بنابر اين براي دريافت اين داده شما نياز داريد دو جدول را متصل کنيد.
عمليات بر روي کليدها جالب به نظر ميرسند. نکته جالب آن است که  personPOID بعنوان کليد براي تمامي جداول در نظر گرفته مي¬شود.براي جداول Customer,Employee,Executive  ، personOID هم کليد اصلي و هم کليد خارجي است. ]‎3[
 
نگاشت کلاس به يک ساختار نوعي جدولي

چهارمين انتخاب براي ساختار وراثتي به پايگاه داده رابطه¬اي گرفتن يک نوع ، بعضي اوقات به آن meta-data ميگوييم، براي نگاشت کلاسها است. در شکل10 شما يک شما داده براي مرتب کردن مقدار صفتها و براي انتقال ساختار وراثتي است.
 
مقدار ObjectPOID نگهداشته شده در يکتا شناخته شده براي يک شيء مشخص است. جدول AttributeType شامل سطرهايي براي نوعهاي داده¬اي اصلي ازقبيل data،string،money،integer و غيره.اين اطلاعات براي پوشش دادن مقدار خصوصيات نگهداري شده در مقدار لازم شده¬اند.
براي نگاشت ساختار بين Person وCustomer ، در شکل5، در اين شما. جدول وراثت يک کليد براي نگاشت وراثت است. هر کلاس بوسيله يک جدول کلاس نشان داده خواهد شد. همچنين يک رديف در جدول Inheritance است. در Inheritance يک رديف وجود خواهد داشت که مقدار Inheritance.SuperClassPOID به يک رديف در کلاس Person و Inheritance.SubClassPOID به کلاس Customer اشاره ميکند. براي نگاشت الباقي سلسله مرتب نيازداريد يک رديف در Inheritance براي هر رابطه وراثتي نياز است. ]‎3[

نگاشت وراثت چندگانه

گاهي اوقات نياز داريم که سلسله مراتب چندگانه را به پايگاه داده رابطه¬اي تبديل کنيم.
شکل11 نشان¬دهنده سه شماي داده است که نتيجه¬اي براي استعمال هر سه استراتژي نگاشت وراثت است. شما ميتوانيد نگاشت وراثت جندگانه را در شکل11 ببينيد. يکي ازمهارتها مشخص کردن نام مناسب در زمان نگاشت در يک جدول است.
 


منابع :


 

 

1Luca Cabibbo, Antonio Carosi, " Managing Inheritance Hierarchies in Object/Relational Mapping Tools " Journal of Systems and Software, Volume 77, Issue 2, August 2005, Pages 193-207
 

2Wolfgang Keller, " Mapping Objects to Tables A Pattern Language " Proceedings EuroPLoP 1997

 

 

طراحی سایت : سایت سازان