تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 5 از 5

نام تاپيک: یک سئوال در مورد ارتباط بین دو جدول در دو زمان متفاوت (در هنگام وجود و در هنگام عدم وجود)

  1. #1
    اگه نباشه جاش خالی می مونه M-B-M's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    ایران - مشهد
    پست ها
    371

    14 یک سئوال در مورد ارتباط بین دو جدول در دو زمان متفاوت (در هنگام وجود و در هنگام عدم وجود)

    در یک نرم افزار کتابخانه زمانی که یک مشتری کتاب را با امانت می برد در دیتابیس DBRelation، IdCu کد مشتری و IdBo کد کتاب ثبت می شود و زمانی که لیست کتابهای امانت برده شده توسط او درخواست می شود، در این گزارش اسم مشتری و مشخصات کتابهای امانت برده شده توسط او نمایش داده می شود که این گزارش براساس ارتباط فیلد IdCu جدول DBCustomer با IdCu جدول DBRelation و IdBo جدول DBRelation با IdBo جدول DBBook برای نمایش اسم کتاب نمایش داده می شود.
    DBCustomer:
    IdCu, Fname, Lname, Tel, ...
    DBBook:
    IdBo, Name, Isbn, ...
    DBRelation
    IdCu, IdBo
    حالا:
    زمانی که کتابی که توسط این مشتری به امانت برده شده به هر دلیل از لیست خارج می شود (حذف مشخصات این کتاب از دیتابیس) چون گزارش براساس ارتباط بین این دو جدول پر می شود، دیگر در لیست چنین رکوردی نمایش داده نمی شود انگار که این مشتری اصلا چنین کتابی را به امانت نبرده است!
    راه حل این مشکل چیست؟ (سرنوشت فیلدهایی که از یک جد.ول حذف می شود در حالی که با جدول دیگر ارتباط دارند چه می شود)

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    حقیقتش درست متوجه نشدم چه گفتید. اگر مشکلتان حل نشد بهتر توضیح دهید؟

    ولی من اگر بودم همچین دیتابیسی میساختم.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    با سیستم فوق هم میتوان آمار کلی را حفظ کرد، و همه امار بردن و پس آوردن ها ثبت شود.
    اگر هم ToDate مقدارش NULL میتوان نتیجه گرفت، کتاب برگردانده نشده.

    میتوان اطلاعات آماری هم ارائه داد.مثلاً :
    هر عضو چند بار کتاب گرفته، در کل چه مدت کتاب ها دستش بوده، میانگین زمان خواندن هر کتاب برای هر عضو یا برای کل اعضا و....

  3. #3
    اگه نباشه جاش خالی می مونه M-B-M's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    ایران - مشهد
    پست ها
    371

    14

    سلام
    در همین مثال که شما ارائه کردید سئوالم را مطرح می کنم:
    شما در دیتابیس Transfers Table دو Id ذخیره می کنید Id مشتری و Id کتاب و اطلاعات را توسط ارتباط همین فیلد ها با جدول های متناظر بازیابی می کنید
    حالا بعد از n سال یک کتاب از لیست خارج می شود (مشخصات کتاب از دیتابیس حذف می شود) و بعد از n+1 سال کاربر لیست کتابهای به امانت برده شده توسط فلان مشتری را درخواست می کند که این کار اطلاعات کاربر از جدول Members Table بازیابی شده و از جدول Transfers Table ، Id کتاب به امانت برده شده بازمی گردد و زمانی که به سراغ جدول Books table می رود تا اطلاعات کتاب را بازیابی کند این Id اکنون دیگر وجود ندارد و در نتیجه این رکورد بازیابی نمی شود!
    امیدوارم سئوالم را متوجه شده باشید. منتظر پاسخ شما هستم؟

  4. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اون قسمت n و n+1 سوالتان خیلی دات نت بود! خوشم امد!

    اگر میخواهید پس از m سال از حذف کتاب از لیست، همچنان بتوانید نام و مشخصات کتاب را استخراج کنید، پس واضح است، شما به اطلاعات کتابها نیاز دارید.
    اصلاً سطر مربوط به کتاب را حذف نکنید، هیچ ایرادی هم ندارد، بهرحال primaryKey شما هم که قابل استفاده مجدد نیست.
    اگر هر سطر شما برای هر کتاب 100 بایت مصرف کتد، یک میلیون نسخه کتاب هم که حذف کنید (که امکان ندارد) میشود 100M اطلاعات اضافی در دیتابیس، که چون طبق گفته خودتان به انها شاید نیاز هم پیدا کنید، دیگر اضافه هم نیستند و وجودشان لازم است.


    یک فیلد bool در آن تعبیه کنید، که مشخص کند، کتاب موجود است یا دیگر موجود نیست.

    در زمان نمایش لیست کتابها و یا جستجوی عنوانی خاص، به راحتی میتوانید با مقدار این bool خروجی را ف-ی-ل-ت-ر کرده و فقط کتابهای موجود را نمایش دهید.

    در زمان حذف هم فقط مقدار آن را تغییر دهید.

    اگر در حجم عظیم کتاب با کاهش سرعت مواجه شدید، شاید اماکن دارد، بد نباشد روی فیلد bool هم یک index بگذارید!!!
    Last edited by _H2_; 12-08-2008 at 00:22. دليل: اصلاح لغت "ف-ی-ل-ت-ر" جهت نمایش !!!!!!

  5. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  6. #5
    اگه نباشه جاش خالی می مونه M-B-M's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    ایران - مشهد
    پست ها
    371

    پيش فرض

    خودم رو کشتم تا تونستم توضیح بدم
    ممنون از راهنماییتون

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •