PDA

View Full Version : منظور از استقلال داده ای؟



Factorial
چهارشنبه 23 خرداد 1386, 17:25 عصر
با سلام خدمت اهالی این بخش

تعریف استقلال داده ای :
"وابسته نبودن برنامه های کاربردی به داده های ذخیره شده"
یا به قول جناب رانکوهی : "مصونیت دیدهای کاربران در سطح خارجی و برنامه های کاربردی آنها در قبال تغییراتی که در سطح ادراکی و
سطح داخلی پایگاه داده ها بروز می کند" (یه جملست با بیش از هزاران استعاره و آرایه ی ادبی)

حالا یکی از این اساتید محترم میشه منظور از عدم وابستگی برنامه به پایگاه رو برای من جا بندازه؟
و همینطور در جمله "مصونیت دیدهای خارجی در مقابل تغییرات در سطح داخلی" منظور از تغییرات چه تغییراتیه؟
متشکرم

Microsoft.net
چهارشنبه 23 خرداد 1386, 18:23 عصر
استقلال داده فیزیکی یعنی اینکه با تغییر توی سخت افزار میزبان تغییری توی ساختار منطقی یا همون ادراکی مجبور نباشی بدی
استقلال داده منطقی یعنی با تغییر در سطح ادراکی دید کاربر که همون سطح خارجی هست عوض نشه
به طور کلی استقلال داده ای یعنی تغییر در هر سطح مستقل از سطوح دیگه انجام بشه و باعث تغییرات اجباری در سطوح دیگه نشه

AminSobati
چهارشنبه 23 خرداد 1386, 23:02 عصر
به نظر من سخت افزار مورد نظر نیست، بلکه تغییر در ساختار بانک مطرحه. یعنی زمانی که ساختار بانک باید تغییر کنه، لایه بیرونی از تغییر بی نیاز باشه. این تمام مفهوم معماریه چند لایه هستش. فرضا کاربر همیشه با یک Object به نام Customer در ارتباطه و این Object با بانک اطلاعاتی. اگر شما تصمیم بگیرید حتی سکوی بانک اطلاعاتی رو عوض کنین، فقط Object باید خودش رو با این تغییر وفق بده و تمام کاربرها همچنان Customer رو مثل سابق میبینند.

Factorial
پنج شنبه 24 خرداد 1386, 00:29 صبح
با سلام مجدد خدمت دوستان

از آقای ثباتی و دات نت عزیز تشکر می کنم به خاطر جوابی که دادن
خب حالا یه کم جزیی تر به مسئله نیگاه کنیم :

فرض کنید که یه DBGrid توی برنامه مون داریم و روی یکی از فیلدهای این دی بی گرید کلیک می کنیم و مقدار اونو تغییر میدیم. به دنبال این تغییر، داده جدید در بانک ذخیره میشه.(خود به خود و نه توسط کاربر .مطمئنا این کار وقتی صورت می گیره که DBGrid مستقیما با بانک در ارتباط باشه)

حالا عزیزان من، آیا میشه گفت که این برنامه استقلال داده ای رو نقض کرده؟ چراکه ارتباط مستقیمی با داده های ذخیره شدمون داره!
خواهشا اگه میشه جواب قاطع بدین و نه مختصر

متشکرم

Factorial
پنج شنبه 24 خرداد 1386, 12:32 عصر
من هنوز منتظر جوابتون هستم

AminSobati
پنج شنبه 24 خرداد 1386, 14:24 عصر
بستگی داره این Grid با چه مکانیزمی دسترسی به بانک پیدا میکنه. اگر فرضا یک دستور Update ارسال میکنه یا SP صدا میزنه، پس وابستگی داره. اما اگر از متدهایی استفاده میکنه که بانک اطلاعاتی اصطلاحا براش Transparent هست، پس وابستگی نداره.

Microsoft.net
پنج شنبه 24 خرداد 1386, 15:00 عصر
با سلام مجدد خدمت دوستان

از آقای ثباتی و دات نت عزیز تشکر می کنم به خاطر جوابی که دادن
خب حالا یه کم جزیی تر به مسئله نیگاه کنیم :

فرض کنید که یه DBGrid توی برنامه مون داریم و روی یکی از فیلدهای این دی بی گرید کلیک می کنیم و مقدار اونو تغییر میدیم. به دنبال این تغییر، داده جدید در بانک ذخیره میشه.(خود به خود و نه توسط کاربر .مطمئنا این کار وقتی صورت می گیره که DBGrid مستقیما با بانک در ارتباط باشه)

حالا عزیزان من، آیا میشه گفت که این برنامه استقلال داده ای رو نقض کرده؟ چراکه ارتباط مستقیمی با داده های ذخیره شدمون داره!
خواهشا اگه میشه جواب قاطع بدین و نه مختصر

متشکرم

ربطی به استقلال داده ای نداره این قضیه ،این یه باگه که تو برنامت وجود داره و داره اطلاعات ناخواسته رو وارد میکنه تو بانکت ، باگ همیشه هست ، شما ممکنه Where Clause یک دستور delete رو یادت بره بزاری همه رکوردات پاک بشه این ربطی به استقلال داده ای نداره ، ولی اگه مثلا یه فیلد به یکی از تیبل هات اضافه کنی و مجبور بشی توی کد سورس هم دست ببری تا برنامه قبلیت خطا نده اینجا استقلال داده ای رعایت نشده ، یا فرض کن مجبور بشی به دلایلی هاردتو از IDE به SCSI تغییر بدی یا مثلا سرورتو عوض کنی نباید برنامت نیاز به بازنگری داشته باشه

AminSobati
جمعه 25 خرداد 1386, 10:55 صبح
چرا این رو باید باگ تلقی کرد؟ ما میتونیم تغییرات رو در Grid انجام بدیم، اما انتقالش به دیتابیس از طریق Objectهایی باشه که کاربر رو از بانک جدا میکنند