سلام
من بودم فقط فیلد primarykey را autonumber میگذاشتم تا تضمین کند در حال و آینده غیر تکراری است و به دو کلاینت هیچگاه یک id داده نمیشود و هیچگاه داده ها گم نخواهد شد.
PrimaryKey=Autonumber+ReadOnly (با/ بدون نمایش به کاربر)
هیچ سطر دیگری در حال و حتی آینده ان primarykey را نخواهد داشت.
در اصلی مثل "کد ملی" ما میماند که اگر طرف بمیرد هم تکرار نمیشود و هر سطر شما موجود یا حذف شده autonumber خودش را دارد.
تمام اعمال ویرایشی در هسته بانک هم با کمک primarykey ها انجام میشود و بقیه فیلدها (اگر برنامه درست طراحی شود) نباید مهم باشند.
چون primarykey این تیپی غیر قابل تغییر است، تضمین میکند هر عملیات DELETE-UPDATE-INSERT در هر زمانی و با هر اختلاف زمانی دقیقاً مختص همان سطر که به نوعی "کدملی" دارد انجام شود و دیگر زمان مهم نخواهد بود.
=====
چهار حالت اساسی که بیشتر نداریم؟
اگر بعد از هر عملیاتی (که مدام در سرور درحال انجام است) کلاینتی هر لحظه دستور ...
- SELECT دهد که آخرین محتویات همان لحظه را مشاهده میکند!
ایرادی دارد؟ نباید ببینید؟ بانک اطلاعاتی باید علم لدونی داشته باشد و محتویات 5 دقیقه بعد را نشان دهد؟ مشکل کجا است.
- دستور INSERT بدهد که ربطی ندارد و هربار یک autonumber جدید و منحصر به فرد میگیرد و موتور بانک تضمین کرده که با هر تعداد کلاینت و همزمان اجرا شود autonumber خودشان و غیر تکراری بگیرند.
و تمام دستورات قبلی روی این مورد بی اثر است. بازم من مشکلی نمیبینم.
- دستور DELETE بدهد که چون هر سطر "کدملی" مانند خودش را دارد دقیقاً همان سطر حذف میشود.
فرقی هم ندارد چند لحظه قبل فردی ان را ویرایش UPDATE کرده یا سطر تازه درج (INSERT شده باشد.
یک نفر دستور DELETE یک سطر کاملاً مشخص و منحصر بفرد را داده بالاخره شما میخواهید انجامش دهید؟ یا الآن یا 5 دقیقه بعد چه فرقی دارد؟ باید این دیتا حذف شود!
- دستور UPDATE بدهد که اگر سطر تازه INSERT شده باشد که ایرادی ندارد و اگر هم سطر قبلاً DELETE شده باشد باز هم ایرادی ندارد.
یک نفر که اجازه اش را داده تشخیص داده این سطر باید حذف شود، برنامه شما نباید فرمانش را انجام دهد؟؟؟
چون دیگر سطری وجود ندارد UPDATE-WHERE اصلاً برقرار نشده و چیزی چه اشتباهاض و چه صحیح تغییر نخواهد کرد.
(البته برنامه میتواند پیغامی مبنی بر عدم یافتن اطلاعات بدهد)
بالاخره تقصیر کسی نیست که یک نفر مجوز داشته و تشخصیص داده این بخش باید حذف شود!
سعی میکنم تا شب با یک مثال شهودی تر از فاکتور و کالاهای فاکتور برایتان بیشتر توضیح دهم و یک سری از شرایط خاص را هم توضیح دهم.نقل قول:
ولی نمیتونه جلوی تداخل اطلاعات رو بگیره