مفهوم تراکنش در پایگاه داده
معمولا دستوراتی که به پایگاه داده ارسال میکنید مستقل از هم احرا میشوند یعنی اگر شما اجرای تعدادی دستور از پایگاه داده درخواست نمائید اجرای این دستورات رابطهای با یکدیگر نخواهند داشت و ممکن است پایگاه داده شما به هر دلیلی از اجرای برخی از دستورات صرف نظر کند اما بقیه دستورات به درستی اجرا شوند.بعضی اوقات در دنیای واقعی و مخصوصا در خریدهای اینترنتی و واریز پول و یا فروش اینترنتی چند تراکنش به هم وابسته هستند و در صورتی که یکی از دستورات درخواستی از پایگاه داده اجرا نشوند صحت دادههای موجود در پایگاه داده از بین میرود که در این صورت باید تغییرات انجام یافته به حالت قبلی برگردانده شوند و از اجرای دستورات بعدی جلوگیری شود.تراکنشها را با مثالی توضیح میدهیم تا موضوع روشن شود فرض کنید طراحی سایت فروش فایل را انجام داده اید و کاربران با مراجعه به سایت و پرداخت مبلغی فایلی را دانلود میکنند حال باید چند مورد را در پایگاه داده ثبت کنید که شامل موارد زیر میباشند:
- واریز مبلغ مورد نظر فایل درخواستی به حساب فروشنده و ذخیرهی آن در جدول پرداختهای مربوط به کاربر
- ایجاد لینک دانلود و نمایش آن به کاربر
در اینجا دو حالت مشکل دار ممکن است پیش بیایید که در هر دو حالت باید کلیه تغییرات انجام یافته باید به حالت اولیه برگردانده شود و از اعمال بقیه تغییرات جلوگیری شود تا صحت دادها حفظ شوند.که این دو حالت عبارتند از
- عدم ذخیره مبلغ پرداختی در جدول پرداختهای کاربر و ایجاد لینک و نمایش آن به کاربر
- پرداخت صحیح و ذخیرهی آن در جدول پرداختهای کاربر و عدم ایجاد لینک و نمایش آن به خریدار
گرچه تعریفهای متعددی از تراکنش ارائه میشود بعضی ها به کلیه اعمال انجام یافته روی پایگاه داده را تراکنش میگویند یک تعریف که بیشتر مرسوم است و در بین متخصصین و برنامه نویسها بیشتر استفاده میشود تعریف زیر میباشد
تراکنشها مجموعهای از عملیات پایگاه داده است که بایستی به طور کامل انجام شوند یادر صورت بروز مشکل وضعیت به حالت قبلی بازگردانده شود(کتاب اصول پایگاه داده روحانی رانکوهی)
یک مثال عینی دیگر که همه ما کم و بیش با آن آشنا هستیم انتقال پول بیین حسابهای بانکی است که بعضی وقتها پول از حساب مشتری کسر میشود ولیه به حساب فروشنده واریز نمیشود که در این صورت باید مبلغ کسر شده از حساب مشتری باید برگرداننده شود.
در مقالات آتی نحوه استفاده از تراکنشها در زبان برنامه نویسی php را آموزش خواهیم داد.