نمایش نتایج 1 تا 11 از 11

نام تاپیک: کدام راه حل بنظر شما بهتر است؟

  1. #1

    Question کدام راه حل بنظر شما بهتر است؟

    با سلام
    من یه data base توی accessدارم که دارای 14 جدول می باشد .
    و مجموعا حدود 200 الی 250 فیلد دارند . در فرم ورودی اطلاعات این فیلدها پر می شوند که ممکنست همه آنها هم پر نشوند . حال در گزینه دیگر فرم گزینه بروزرسانی هم دارم که همون اطلاعات را روی فرم می یاره و کاربر اونها رو ویرایش می کنه .مسئله اینجاست برای update کردن فیلده ها به نظر بنده حقیر دو راه می رسه :
    1- استفاده از دستور update برای تک تک جدول ها
    2- پاک کردن سطر مربوطه و استفاده از دستور insert
    حال بااین تفاصیل کدام راه بالا سریعتر عمل می کنه و یا اگه راه بهتری است مشتاقانه منتظر دیدن انم .
    ممنون .
    .... کی و کجا وعده دیدار ما . یا ابا صالح المهدی ادرکنی .

  2. #2
    کاربر دائمی آواتار arshia_
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    ایران-شهر فرزانگان( بروجرد )
    پست
    1,226
    به نظر می رسه کار درست همون بروزرسانی باشه
    چون برای انجام حالت دوم باید اول سطر رو پاک کنی و بعد مجدد درج کنی
    با این توضیح می شه دو فرمان
    به نظرمی رسه دو فرمان از یه فرمان زمان بیشتری نیاز داره

  3. #3
    همچنین اگر سطر رو پاک کردی و هنگام اضافه کردن مجدد آن خطایی رخ دهد اطلاعات رو از دست خواهی داد که اصلا منطقی به نظر نمی رسه.

    دستور update رو فقط برای سطر مورد نظر اجرا کن

  4. #4
    نقل قول نوشته شده توسط fotrosi
    همچنین اگر سطر رو پاک کردی و هنگام اضافه کردن مجدد آن خطایی رخ دهد اطلاعات رو از دست خواهی داد که اصلا منطقی به نظر نمی رسه.
    این مورد رو میشه با تراکنش برطرف کرد ولی
    استفاده از Update سرعت بهتری داره. ضمن اینکه اگر رکوردها هم به یکدیگر وابسته اند میتوانید از cascade update استفاده کنید و فقط Master رو Update کنید.
    You never know what you can do until you try

  5. #5
    کاربر دائمی آواتار MNosouhi
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان
    پست
    883
    ضمن اینکه اگر رکوردها هم به یکدیگر وابسته اند میتوانید از cascade update استفاده کنید و فقط Master رو Update کنید.
    1-Synayax دستوز بالا (cascade updat) همینطوریه که نوشتین ؟ آخه روی cascade خطا میگیره.
    2-در دستور بالا ، اگر کلید اصلی جدول در جدول دیگری کلید خارجی باشد ، با تغییر در مقدار کلید اصلی مقدار کلید خارجی هم تغییر می کنه؟

  6. #6
    این دستور نیست
    یکی از ویژگیهای روابط هست
    وقتی که روابط رو تعریف میکنید Cascade update یا cascade delete رو هم تیک میزنید(اگه با ویزارد جداولتون رو میسازید) اونوقت اگه مستر تغییر کنه Slave هم تغییر میکنه یا اگه مستر حذف بشه بقیه هم...
    2- بله
    You never know what you can do until you try

  7. #7
    کاربر دائمی آواتار MNosouhi
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان
    پست
    883
    وقتی cascade Delete رو تیک زده باشم ، اگر رکوردی از جدول اصلی حذف بشه ، تمام رکورد های وابسته به اون رکورد ، در جداول دیگه هم حذف میشه ، که اصلا منطقی نیست ، اگر هم cascade Delete تیک نخورده باشه و وابستگیی بین رکورد جاری و وجداول دیگه وجود داشته باشه اصلا اجازه حذف نمیده . پس باید چیکار کرد ؟
    یعنی میخام اگر رکوردی از جدول جاری حذف شد که با رکوردهایی در جدول های دیگه رابطه داره ، کلید خارجی رکوردهای جداول دیگه مقدار null بگیرند.
    مثلا اگر در جدول اصلی فیلد کلیدی با نام id و رکوردی به مقدار id برابر 10 وجود داشته باشه و در جدول دیگه ای همین فیلد id کلید خارجی باشه و در رکوردی با مقدار 10 (از جدول اصلی) مقداردهی شده باشه ، اگر رکورد حاوی مقدار 10 از جدول اصلی حذف شد ، در جداول دیگه رکوردهایی که فیلد با مقدار 10 داشته اند ، به جای 10 مقدار Null بگیرین .
    sql میتونه خودش این رو مدیریت کنه و یا اینکه ما خودمون باید مدیریت کنیم؟

  8. #8
    ببینید:
    شما نمیتونید یک رکورد که دیتیل داره رو حذف کنید مگر اینکه قبلش تکلیف دیتیلهاش رو روشن کنید یا اینکه دیتیلهاش رو هم حذف کنید. این منطق کار هست
    در مورد مقدار NULL گرفتن هم شبیه به مابقی مقادیر عمل میکنه
    You never know what you can do until you try

  9. #9
    کاربر دائمی آواتار MNosouhi
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان
    پست
    883
    شما نمیتونید یک رکورد که دیتیل داره رو حذف کنید مگر اینکه قبلش تکلیف دیتیلهاش رو روشن کنید یا اینکه دیتیلهاش رو هم حذف کنید. این منطق کار هست
    در مورد مقدار NULL گرفتن هم شبیه به مابقی مقادیر عمل میکنه
    یه مثال میزنم ، یه جدول داریم با نام Table1 که حاوی پست های سازمانی هستش (مثل معاونت ، مدیریت و ...) و یه فیلد داره به اسم Pid که فیلد کلید است . یه جدول دیگه هم داریم که اسمش Table2 هستش و مشخصات افراد مثل نام ، نام خانوادگی و پست سازمانی اشخاص رو نگهداری میکنه . Pid در Table2 به عنوان کلید خارجی استفاده میشه . حالا اگر یک رکورد Table1 حذف بشه منطقی نیست که Sql server بیاد و از Table2 تعدادی رکورد حذف کنه(یعنی به خاطر اینکه یه پست سازمانی حذف شده ، مشخصات همه افرادی را که دارای اون پست سازمانی بودن رو حذف کنه) ، بلکه منطقی اینه که Pid در Table2 رو Null کنه تا بعدا کاربر دوباره مقداردهی کنه(پست جدیدی رو انتخاب کنه)

  10. #10
    منظور شما رو میدونم
    بلکه منطقی اینه که Pid در Table2 رو Null کنه تا بعدا کاربر دوباره مقداردهی کنه
    مشروط به اینکه مشخص بشه NULL یعنی چه پست سازمانی؟ و الا نمیشه و منطقی نیست
    شما نمیتونی دیتیلی داشته باشی که مستر نداشته باشه مگر اینکه مگر اینکه نخوای Refrential integrity رو اعمال کنی.
    You never know what you can do until you try

  11. #11
    کاربر دائمی آواتار MNosouhi
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان
    پست
    883
    مشروط به اینکه مشخص بشه NULL یعنی چه پست سازمانی؟ و الا نمیشه و منطقی نیست
    شما نمیتونی دیتیلی داشته باشی که مستر نداشته باشه مگر اینکه مگر اینکه نخوای Refrential integrity رو اعمال کنی.
    null هیچ پست سازمانیی نیست . قبلا در یه کتابی خونده بودم که کلید خارجی یا باید null باشه و یا اینکه مقداری از جدول اصلی (در مثال بالا Table1) را داشته باشه . من نمی فهمم چرا شما می فرمایید که این حرف غیر منطقیه؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •