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

نام تاپیک: داده ها در فرم برنامه کنترل میشود ، آیا نیازی به کنترل در دیتا بیس نیز هست ؟

  1. #1
    کاربر دائمی آواتار Helmod
    تاریخ عضویت
    خرداد 1390
    محل زندگی
    تبــریــز
    پست
    114

    داده ها در فرم برنامه کنترل میشود ، آیا نیازی به کنترل در دیتا بیس نیز هست ؟

    سلام دوستان ،

    سوالم اینه که من داده ها رو روی فرم چک میکنم ، یعنی برای مثال وقتی فیلدی برای ورود عدد هست ، فیلد فقط عدد رو قبول میکنه .

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

    در نهایت بعد از چک کردن درستی داده ها و فشردن دکه " ثبت اطلاعات " ، اطلاعات بدرستی در دیتا بیس ذخیره میشه .

    سوال :

    من میام توی پایگاه داده که اکسس هست همه فیلد ها رو در یک جدول مشخصات فردی از نوع Short Text میگیریم . و اطلاعاتی که درون فرم هست رو داخل این جدول ذخیره میکنم .

    آیا باید همونطوری که درون فرم میام از وزود اطلاعات نادرست ( شماره ملی : فقط عدد **** نام : فقط حرف ) جلوگیری میکنم ، باید در طراحی دیتا بیس نیز این ظرایط رو رعایت کنم ؟ یعنی برای فیلد کد ملی باید Number رو انتخاب کنم ؟ یا فرقی نمیکنه ؟

    البته من با روش خودم که همرو در دیتابیس Short Text میگیرم مشکی ندارم فقط میخوام راه درست رو انتخاب کنم

    مرسی

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: داده ها در فرم برنامه کنترل میشود ، آیا نیازی به کنترل در دیتا بیس نیز هست ؟

    سلام.
    قانون جامعیت دیتابیس میگه که یک طراح دیتابیس وظیفه داره تا قوانینی رو حاکم کنه که جامع بودن و کامل بودن بانک اطلاعاتی رو تضمین کنه.
    این درست که شما در برنامه این موارد رو چک می کنید ولی آیا تضمین میدید که در هر شرایطی (اشتباه یا فراموش کردن بخشی از بررسی در سمت برنامه، دسترسی مستقیم به دیتابیس و ...) باز هم اطلاعات بدرستی ثبت بشه؟
    قطعا چنین تضمینی وجود نداره. بنابراین حتما باید در سمت دیتابیس هم این کنترل ها لحاظ بشه.
    ما در کل دو نوع قوانین جامعیت داریم :
    1. قوانین جامعیت عام:
    الف) قانون جامعیت موجودیتی : کلید نمیتونه null باشه.(این مورد بصورت اتومات توسط دیتابیس ها چک میشه)
    ب) قانون جامعیت ارجاعی : کلید خارجی وابسته به مقادیر کلید اصلی هست در غیر اینصورت باید null درج بشه.
    2. قوانین جامعیت خاص:
    الف) Check Constraint : مثلا برای فیلد نمره دانشجو که یک عدد بین 0 تا 20 هست و نباید عددی خارج از این محدوده درج بشه.
    ب) Unique Constraint : در سیستم دانشجویی که معمولا شماره دانشجویی کلید هست، برای ثبت کد ملی اشخاص که منحصر بفرد هست کاربرد داره.
    و ...

  3. #3
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: داده ها در فرم برنامه کنترل میشود ، آیا نیازی به کنترل در دیتا بیس نیز هست ؟

    همونطور که دوستمون گفتن، اگه شما قوانین رو در دیتابیس هم پیاده کنید، در صورتی که سمت فرم به دلیلی قوانین بررسی نشن، جامعیت داده های شما در دیتابیس حفظ میشه...البته پیشنهاد من اینه که اگه نرم افزار شما بیشتر از 7-8 تا فرم داره، این بررسی ها رو در فرم انجام ندین و در لایه دیگه ای انجام بدین...

    نقل قول نوشته شده توسط veniz2008 مشاهده تاپیک
    سلام.
    قانون جامعیت دیتابیس میگه که یک طراح دیتابیس وظیفه داره تا قوانینی رو حاکم کنه که جامع بودن و کامل بودن بانک اطلاعاتی رو تضمین کنه.
    این درست که شما در برنامه این موارد رو چک می کنید ولی آیا تضمین میدید که در هر شرایطی (اشتباه یا فراموش کردن بخشی از بررسی در سمت برنامه، دسترسی مستقیم به دیتابیس و ...) باز هم اطلاعات بدرستی ثبت بشه؟
    قطعا چنین تضمینی وجود نداره. بنابراین حتما باید در سمت دیتابیس هم این کنترل ها لحاظ بشه.
    ما در کل دو نوع قوانین جامعیت داریم :
    1. قوانین جامعیت عام:
    الف) قانون جامعیت موجودیتی : کلید نمیتونه null باشه.(این مورد بصورت اتومات توسط دیتابیس ها چک میشه)
    ب) قانون جامعیت ارجاعی : کلید خارجی وابسته به مقادیر کلید اصلی هست در غیر اینصورت باید null درج بشه.
    2. قوانین جامعیت خاص:
    الف) Check Constraint : مثلا برای فیلد نمره دانشجو که یک عدد بین 0 تا 20 هست و نباید عددی خارج از این محدوده درج بشه.
    ب) Unique Constraint : در سیستم دانشجویی که معمولا شماره دانشجویی کلید هست، برای ثبت کد ملی اشخاص که منحصر بفرد هست کاربرد داره.
    و ...
    موضوعی که میگین درست هست...منتها مسائله ای هست...تکرار بررسی قوانین هم در مثلا لایه Business Logic و هم در دیتابیس، باعث Duplicate قوانین میشه که این موضوع تغییر رو سخت میکنه...مثلا اگه قرار بشه قانون محدودیت نمره از 0 تا 20 به 0 تا 10 تغییر کنه، هم باید Business Logic Layer تغییر کنه و هم Constraint دیتابیس...حالت دیگه اینکه برخی قوانین پیچیده هستن که به سادگی توسط امکانات دیتابیس قابل پیاده سازی در دیتابیس نیستن...اونها رو باید چکار کرد؟
    البته، در شرایطی که چندین نرم افزار مختلف به طور کاملا مجزا بدون واسط یکتا روی یک دیتابیس کار میکنن، عدم بررسی قوانین در دیتابیس قطعا مشکل ساز هست، چون یک درگاه یکتایی که با داده ها کار کنه (جز خود دیتابیس) وجود نداره.

  4. #4
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: داده ها در فرم برنامه کنترل میشود ، آیا نیازی به کنترل در دیتا بیس نیز هست ؟

    نقل قول نوشته شده توسط plus مشاهده تاپیک
    تکرار بررسی قوانین هم در مثلا لایه Business Logic و هم در دیتابیس، باعث Duplicate قوانین میشه که این موضوع تغییر رو سخت میکنه...مثلا اگه قرار بشه قانون محدودیت نمره از 0 تا 20 به 0 تا 10 تغییر کنه، هم باید Business Logic Layer تغییر کنه و هم Constraint دیتابیس
    این دلیل خوبی نیست که بخاطر دو بار چک شدن، جامعیت اطلاعات رو که بسیار مهم هم هست در سمت دیتابیس کنار بزاریم. ضمن اینکه بسیاری حالات ثابت هستن و کمتر دستخوش تغییرات میشن. سال هاست که سیستم نمره دهی بین 0 تا 20 هست و در عمل کمتر اتفاق می افته که این تغییرات رخ بده. هر چند اگر تغییرات هم داشته باشیم باز هم من کنترل اطلاعات حساس رو بهش تاکید دارم. به نظرم این نه تنها یه عیب نیست که یک حسن خیلی خوب هم هست. تضمین یکپارچگی اطلاعات، قابلیت اعتماد نرم افزار رو افزایش میده.
    اما معمولا در کنترل اطلاعات در سمت دیتابیس زیاده روی نمیشه و اطلاعات حساس و کلیدی رو چک میکنن. نمره برای یک دانشجو میتونه بسیار حائز اهمیت باشه یا چک کردن تکراری بودن یا نبودن شماره سند در سیستم حسابداری به همین صورت هست ولی ثبت یک تاریخ رو میشه در همون سمت برنامه انجام داد.
    گرچه امنیت و سرعت هر دو بسیار مهم هستند ولی من اولویت رو اول به امنیت داده ها میدم و بعد سرعت.
    حالت دیگه اینکه برخی قوانین پیچیده هستن که به سادگی توسط امکانات دیتابیس قابل پیاده سازی در دیتابیس نیستن...اونها رو باید چکار کرد؟
    من متوجه نشدم. اگر ممکنه مثال بزنید.

  5. #5
    کاربر دائمی آواتار Helmod
    تاریخ عضویت
    خرداد 1390
    محل زندگی
    تبــریــز
    پست
    114

    نقل قول: داده ها در فرم برنامه کنترل میشود ، آیا نیازی به کنترل در دیتا بیس نیز هست ؟

    نقل قول نوشته شده توسط plus مشاهده تاپیک
    همونطور که دوستمون گفتن، اگه شما قوانین رو در دیتابیس هم پیاده کنید، در صورتی که سمت فرم به دلیلی قوانین بررسی نشن، جامعیت داده های شما در دیتابیس حفظ میشه...البته پیشنهاد من اینه که اگه نرم افزار شما بیشتر از 7-8 تا فرم داره، این بررسی ها رو در فرم انجام ندین و در لایه دیگه ای انجام بدین...
    میشه بیشتر توضیح بدین ؟ ممنون میشم

تاپیک های مشابه

  1. ارسال نام پایگاه داده از فرم برنامه
    نوشته شده توسط alonemm در بخش ابزارهای گزارشگیری در VB6
    پاسخ: 1
    آخرین پست: پنج شنبه 24 تیر 1389, 13:10 عصر
  2. ارسال نام پایگاه داده از فرم برنامه به گزارش
    نوشته شده توسط alonemm در بخش ابزارهای گزارش سازی
    پاسخ: 0
    آخرین پست: چهارشنبه 23 تیر 1389, 15:07 عصر
  3. ارسال نام پایگاه داده از فرم برنامه به گزارش
    نوشته شده توسط alonemm در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 23 تیر 1389, 13:28 عصر
  4. سوال: کنترل رویداد موس در خارج از فرم برنامه
    نوشته شده توسط hossein_rohollah در بخش C#‎‎
    پاسخ: 2
    آخرین پست: سه شنبه 16 مهر 1387, 04:29 صبح
  5. به دست گرفتن کنترل فرمی غیر از فرم برنامه خودم
    نوشته شده توسط m_amin_t در بخش C#‎‎
    پاسخ: 4
    آخرین پست: شنبه 26 مرداد 1387, 14:48 عصر

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

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