آژانس هواپیماییexchanging

سوال در مورد کلاسها و روابط بینشون

شروع موضوع توسط resident ‏4 دسامبر 2007 در انجمن دات نت

  1. resident

    resident Registered User

    تاریخ عضویت:
    ‏5 دسامبر 2005
    نوشته ها:
    96
    تشکر شده:
    2
    سلام.بچه ها من چند تا سوال در مورد کلاسها و روابط بینشون دارم.

    سوال اول:

    این روابطی که بین کلاسها برقرار کردم، درسته (فایلشو گذاشتم)؟

    رابطه بین کلاسهای بخش و واحد Whole_Part است.یعنی نمونه های کلاس بخش تشکیل دهنده نمونه های کلاس واحد است(هرواحد ، شامل n بخش است)

    چه نامی برای کلاسهای سمت/واحد و پرسنل/ سمت /واحد بذارم؟

    نباید به جای رابطه بین سمت و واحد بین سمت و بخش رابطه برقرار کنم؟
    classes & Relationships.JPG


    سوال دوم:

    بچه ها اگه یه فرمی باشه که مشخصات یه طرحی(کد طرح- نام طرح – نوع زمینه و ...) در اون ثبت شده باشه و به جز اون مشخصات فرم ، دو فیلد کد فرم و تاریخ هم داشته باشه این 2 تا کلاسه یا 1 کلاس؟
    خود طرح که 1 کلاسه، از طرفی هم خود فرم 1 کلاسه ، ولی چیزی که هست رابطه بین این دو کلاس 1:1 است. نمیدونم این 2 کلاس رو ادغام کنم و 1 کلاس بگیرم یا نه. اگه ادغام کنم اونوقت کلید اصلی کلاس رو کد فرم بگیرم یا کد طرح؟



    ممنون میشم راهنماییم کنید.
     
  2. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    در مورد سوال اول :
    بستگی به تعریف موجودیت ها در سناریوی شما داره .
    سمت برای واحد تعریف می شه یا برای بخش ؟ به عبارت دیگه کسی که دارای یک سمت هست اون فرد در یک بخش خاص سمت رو داره و یا در یک واحد ؟ اگر در واحد سمت داره پس لازمه کلاس سمت/واحد نعریف کنی و اگر در بخش سمتی داره باید کلاس سمت/بخش رو تعریف کنی . اما مساله مهم اینه که نباید کلید کلاس بخش و واحد رو تواما در کلاس سمت/بخش و یا سمت/واحد استفاده کنی . در واقع اشتباه طراحی شما همین جاست . چون Cyclic Reference ایجاد شده .
    اگه واضح نبود بگید تا بیشتر توضیح بدم
     
  3. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    در مورد سوال دوم :
    از اونجایی که می گید رابطه دو کلاس یک به یک هست در تئوری گفته میشه بهتره دو کلاس رو یکی بگیری . اما در عمل یکم متفاوت هست . در واقع گاهی پیش میاد که کلاس اول مثلا 20 تا فیلد داره و کلاس دوم هم 15 تا فیلد داره . ادغام کردن دو کلاس باعث می شه 35 فیلد ایجاد بشه و شما میای حساب می کنی می بینی در 70 درصد مواقع شما فقط 20 فیلد اولیه کلاس اول رو در بسیاری از کدهای پروژه ات فراخوانی می کنی . و فقط در 20 درصد از مواقع 15 فیلد کلاس دوم رو فراخوانی می کنی و نهایتا در 10 درصد مواقع هر 35 فیلد رو می خوای . پس منطقی نیست همیشه این 35 فیلد رو در درخواست هایی که از کلاست داری حمل کنی . بهتره بیاید همون دو کلاس مجزا رو بگیری . حالا سوال پیش میاد که کلید کلاس رابط بین این دو کلاس روچطور تعریف کنم . تجربه نشون داده بهتره همیشه روابط یک به یک رو با تعریف یک کلاس رابط به دو تا رابطه یک به چند تبدیل کنیم
    class1 1_______________n Class1/Class2 n________________1 Class2
    برای تعریف کلید در کلاس رابط هم یه فیلد جدید می گیریم و اون رو کلید تعریف می کنیم

    امیدوارم گیج نشده باشی ;)
     
  4. resident

    resident Registered User

    تاریخ عضویت:
    ‏5 دسامبر 2005
    نوشته ها:
    96
    تشکر شده:
    2
    Amin-lili جان از راهنماییهای خوبت ممنون.
    در مورد سوال اول شما درست می فرمایید .
    در مورد سوال دوم هم با توضیحاتتون موافقم اما با اون قسمتی که رابطه 1:1 رو به 2 رابطه n:1 شکستید موافق نیستم. در صورتی میشه این کار رو کرد که رابطه n:n داشته باشیم. در مورد روابط یک به یک باید کلید اصلی یکی از کلاسها رو در کلاس دیگری قرار بدیم.
    و اما اون سوالم بی جواب موند که اساساً باید اونا رو 2 تا کلاس بگیرم یا 1 کلاس؟
     
  5. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    من عرض کردم خدمتتون که در تئوری مطلب شما صحیح هست اما در عمل میایم 1 به 1 ها رو به دو رابطه 1به n تبدیل می کنیم . دلیل فتی مساله رو هم براتون توضیح دادم . این چیزی که براتون میگم صرفا از روی تجربه کد نویسی هست . چون ما در قوانین جامعیت و همین طور در قوانین نرمال سازی به حجم دیتای رد و بدل شده و سادگی و سختی query های نوشته شده هیچ وقت کار نداریم . اما وقتی وارد فاز اجرایی می شیم متوجه این مشکلات می شیم .
     
  6. H_R

    H_R مدیر بازنشسته

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    3,285
    تشکر شده:
    15
    محل سکونت:
    North Pole
    از دوستان خواهش میکنم به جز مطالبی که مستقیما مربوط به دستور زبان #C میشود در اینجا پست دیگری نزنند !

    ممنونم .

    پست به انجمن عمومی دات نت منتقل شد !