PDA

View Full Version : مقاله: تبديل رابطه هاي موجود در Class Diagram



Elham_gh
دوشنبه 04 شهریور 1387, 15:55 عصر
(قسمت اول)

اين بحث رو در 2 جهت مطرح مي كنم:
1.تبديل رابطه ها در Data model
2.تبديل رابطه ها در code

تبديل رابطه ها در Data model
(هر كلاس در زمان تبديل شدن درData model يك فيلد ID مي گيرد)
اگر در class diagram بين 2 كلاس(مثلا كلاسهاي Aو B):
1.رابطه Association ساده داشته باشيم به صورت 1 به 1،( اگر جهت association مشخص باشد كه بهتر!)


http://barnamenevis.org/forum/attachment.php?attachmentid=22302&stc=1&d=1220657320
در DataModel ، زمان تبديل ، ID كلاس مقصد در كلاس مبدا به عنوان FK قرار مي گيرد


http://barnamenevis.org/forum/attachment.php?attachmentid=22301&stc=1&d=1220657071

Elham_gh
سه شنبه 05 شهریور 1387, 13:35 عصر
(قسمت دوم)
حالا آيا مي دونيد رابطه هاي 1-1 اصلا به چه درد مي خورند؟
گاهي شما جداولي داريد كه فيلدهاي آن زيادند. اين باعث مي شه ، عمليات روي جداولتون سرعت پايينتري پيدا كنه، حجم جدول بالا بره . به همين جهت فيلدها ر دسته بندي مي كنند و اونهايي كه استفاده كمتري دارند در جدول ديگري قرار مي دهند.
مثلا يك جدول مشخصات پرسنلي داريد اين مشخصت شامل اطلاعات زير است:
مشخصات فردي
نام و نام خانوادگي ، شماره ملي ، جنسيت ، تاريخ تولد ، نام پدر ، محل تولد ، شماره شناسنامه ، وضعيت تاهل ، تعداد فرزندان ،
تعداد افراد تحت تكفل ، دين و مذهب ، تابعيت ،
آدرس
آدرس محل سكونت ، تلفن محل سكونت ، تلفن اضطراري ، موبايل ، فكس ، Email ، Web Site
مشخصات ظاهري:
رنگ چشم ، رنگ مو ، قد ، استفاده از عينك / لنز(شماره چشم) ، گروه خوني ، سايز لباس ، سايز كفش ، علامت مشخصه
مشخصات همسر
نام و نام خانوادگي ، شماره ملي ، تاريخ تولد ، تاريخ ازدواج ، وضعيت همسر (هيچ-متاركه-فوت) ، تاريخ متاركه /فوت ، شغل ، آدرس محل كار ، تلفن محل كار ، موبايل ، Email
تحصيلات(آخرين وضعيت)
مقطع تحصيلي ، رشته تحصيلي ، گرايش تحصيلي ، از تاريخ / تا تاريخ ، نام محل تحصيل ، كشور/ شهر محل تحصيل ، معدل/امتياز
معلوليتهاي جسمي
عضو معلول ، ميزان معلوليت ، علت معلوليت ، توضيحات

و...... كلي اطلاعات ديگر. قرار دادن اين همه فيلد در يك جدول منطقي نيست. مي توان يك جدول Employee داشت و يك جدول LastEducation و يك ارتباط يك به يك بين اين دو جدول باشه ( و يا جداول ديگري كه با جدول Employee رابطه 1-1 دارند)
2. اگر رابطه بين دو كلاس association ساده 1 به * باشد :

http://barnamenevis.org/forum/attachment.php?attachmentid=22330&stc=1&d=1220734817

در data model ، ID كلاسي(كليد كلاس) كه multiplicity ي آن مقدارش 1 است در كلاس ديگر به عنوان FK قرار مي گيرد

http://barnamenevis.org/forum/attachment.php?attachmentid=22331&stc=1&d=1220734817


3 . اگر رابطه بين دو كلاس association ساده * به * باشد :

http://barnamenevis.org/forum/attachment.php?attachmentid=22332&stc=1&d=1220734817
در data model ، جدول جديدي ايجاد مي شود كه كليد 2 جدول A و B در آن به عنوان FK قرار مي گيرند.


http://barnamenevis.org/forum/attachment.php?attachmentid=22333&stc=1&d=1220734817

اين مقاله همچنان ادامه داره

SHAHAB_ERP
سه شنبه 05 شهریور 1387, 14:29 عصر
با تشكر فراوان از مطالب كاربردي و مفيد
ميخواستم ببينم اين ديتا مدل رو در رشنال رز به چه صورت و در كجا بايد رسم كنيم و در چه مرحله اي از كار
مرسي

Elham_gh
سه شنبه 05 شهریور 1387, 15:01 عصر
data model بعد از class digram رسم ميشه. و معمولا توسط خود tools بر مبناي class diagram تهيه مي شه. اما بايد خود شما اون رو تكميل كنيد. از اونجا كه من چند سالي هست كه ديگه از rational استفاده نمي كنم، نه يادم هست و نه رو دستگام دارم كه بهتون بگم از چه طريق اين تبديل انجام مي شه. اما اگه در EA بخواين مي تونم بگم

اين مقاله همچنان ادامه داره

unhandled_event
چهارشنبه 06 شهریور 1387, 09:59 صبح
با سلام

سوالی داشتم
فرض کنید ما از یک ابزار o-r mapper استفاده میکنیم که رابطه بین entity ها و table ها و ذخیره سازی رو خودشون در دیتابیس یا هر چیز دیگه ای مدیریت میکنن. دراینصورت ابزار یک سری محدودیتها و یا روشهای خودش رو در پیاده سازی اعمال میکنه یعنی بعنوان مثال چند تا attribute اضافی در کلاس یا entity یا اجبار به وجود متدهایی. به این ترتیب بخشی از مدل در داخل پیاده سازی خاص ابزار و در زمانی که ما هنوز مشغول طراحی هستیم وجود داره. در اینصورت روش مدلسازی و بخشهایی که از دید متدلوژی باید درclass diagram مدل بشن و یا نباید مدل بشن به چه شکلی در میاد ؟

shayesteh_bh
پنج شنبه 07 شهریور 1387, 08:44 صبح
با تشكر از كاربر Elham_gh ميشه در مورد رسم data model در EA برامون توضيح بديد.
ممنون

shayesteh_bh
پنج شنبه 07 شهریور 1387, 08:46 صبح
يه مساله ديگه اينكه من نسخه Trial EA رو پاك و دوباره نصب كردم اما اين دفعه Example نداره . شما مي دونيد چرا اين اتفاق افتاده؟

impression
پنج شنبه 07 شهریور 1387, 17:43 عصر
سلام
اگر یک موجودیتی با خودش رابطه یک به چند داشت، این را توی کلاس دیاگرام و دیتابیس چه جوری باید طراحی کرد؟ مثلا فرض کنید یک موجودیتی به اسم پروژه داریم که هر پروژه ای میتونه چند تا زیرپروژه داشته باشه و ساختار اطلاعاتی هر زیرپروژه ای هم دقیقا مثل یک پروژه است. یعنی در واقع مثل این است که یک پروژه با خودش رابطه یک به چند دارد.

Elham_gh
شنبه 09 شهریور 1387, 08:49 صبح
سلام
اگر یک موجودیتی با خودش رابطه یک به چند داشت، این را توی کلاس دیاگرام و دیتابیس چه جوری باید طراحی کرد؟ مثلا فرض کنید یک موجودیتی به اسم پروژه داریم که هر پروژه ای میتونه چند تا زیرپروژه داشته باشه و ساختار اطلاعاتی هر زیرپروژه ای هم دقیقا مثل یک پروژه است. یعنی در واقع مثل این است که یک پروژه با خودش رابطه یک به چند دارد.


http://barnamenevis.org/forum/attachment.php?attachmentid=22451&stc=1&d=1221063726

البته مي توانيد يك رابطه association ساده هم در نظر بگيريد:


http://barnamenevis.org/forum/attachment.php?attachmentid=22452&stc=1&d=1221063726

Elham_gh
شنبه 09 شهریور 1387, 08:57 صبح
با تشكر از كاربر Elham_gh ميشه در مورد رسم data model در EA برامون توضيح بديد.
ممنون

شما package ي كه class digram تان در آن قرار دارد انتخاب مي كنيد. دكمه سمت راست mouse و گزينه Transform current package را انتخاب مي كنيد. فرم جديد باز مي شود. از ليست سمت چپ گزينه DLL را و جايي كه قرار است Data model ساخته شود انتخاب كرده و كليد DO transform را مي زنيد. اما EA هم مثل تمام Case tools ها يك سري موارد رو در اين تبديل اعمال نمي كند كه بايد خودتو انجام بدين.اگر اون موارد خواستيد در فرصت مقتضي خواهم گفت

Elham_gh
شنبه 09 شهریور 1387, 08:58 صبح
با سلام

سوالی داشتم
فرض کنید ما از یک ابزار o-r mapper استفاده میکنیم که رابطه بین entity ها و table ها و ذخیره سازی رو خودشون در دیتابیس یا هر چیز دیگه ای مدیریت میکنن. دراینصورت ابزار یک سری محدودیتها و یا روشهای خودش رو در پیاده سازی اعمال میکنه یعنی بعنوان مثال چند تا attribute اضافی در کلاس یا entity یا اجبار به وجود متدهایی.

شرمنده. من فقط تا همين جا منظورتون رو فهميدم و متوجه بقيه فرمايشاتون نشدم. اگه لطف كنيد واضح تر بگيد.

Elham_gh
شنبه 09 شهریور 1387, 11:10 صبح
(قسمت سوم)
4.اگر رابطه بين دو كلاس association از نوع aggregation باشد:


http://barnamenevis.org/forum/attachment.php?attachmentid=22461&stc=1&d=1221071897

در data model مانند رابطه ساده association تبديل مي شود. كه البته كليد جدول شامل شونده در جدول مشمول به عنوان FK قرار مي گيرد.

http://barnamenevis.org/forum/attachment.php?attachmentid=22462&stc=1&d=1221071897

5. اگر رابطه Association داراي Association Class باشد، مثلا بين كلاسهاي A و B يك Association است و كلاس C يك Association Class است:


http://barnamenevis.org/forum/attachment.php?attachmentid=22463&stc=1&d=1221071897

در data model ، هر كلاس يك جدول است.يعني جداول A وB و C . جداول A وB هر كدام داراي كليد هستند كه كليدهايشان به عنوان FK در جدول C قرار مي گيرد. و تركيبشان PK براي جدول C است.


http://barnamenevis.org/forum/attachment.php?attachmentid=22464&stc=1&d=1221071897

(اين مقاله ادامه دارد-علت كوتاه بودن هر قسمت، محدوديتي است كه در ضميمه كردن تعداد بيش از 5 عكس در هر پست وجود دارد)

Elham_gh
دوشنبه 11 شهریور 1387, 15:48 عصر
(قسمت چهارم)
6.اگر بين دو كلاس رابطه Generalization باشد، مثلا فرض كنيم كلاس A ، Supper Class باشد و كلاس B ، Subclass :


http://barnamenevis.org/forum/attachment.php?attachmentid=22619&stc=1&d=1221261386

در data model ، كلاس A كليد خودش را دارد و اين كليد عينا در كلاس B وجود دارد كه هم نقش FK را دارد و هم PK.(كلاس B كليد مستقل خودش را ندارد)


http://barnamenevis.org/forum/attachment.php?attachmentid=22620&stc=1&d=1221261386

7. اگر بين دو كلاس رابطه Dependency وجود داشته باشد، در Data model بين جداولشان رابطه اي وجود ندارد!
8. اگر در class دياگرامتان Classifier ديگي غير از Class داشته باشيد مانند Interface ، Enumeration ، اين ها در Data model معادل ندارند.
نكته- مي توانيد Enumeration هايتان را در data model به صورت يك user defined data type نيز بياوريد

(اين مقاله ادامه دارد...)