امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
فرمول تولید id برای محصولات
نویسنده پیام
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #1
Question  فرمول تولید id برای محصولات
سلام
من یه نظر خواهی میخوام
فکر کنید یک سایت حراجی با زبان php نوشتم
صاحب آن کالا در سایت ما ثبت نام میکنه
مشخصات و عکس کالای خودش رو در سایت ما ثبت میکنه و یک id به آن اختصاص دادخ میشه
درخواست کاربر به پنل ادمین فرستاده میشه اگر ادمین این کالا رو تایید کرد در سایت نمایش داده بشه

اما (اینجاست که کمک میخوام یه راه اصولی معرفی کنید)
id این محصول چطور تولید کنم؟

راه اول:
تولید id توسط ویژگیAUTO_INCREMENT جدول
در یک table به نام temp محصولاتی که هنور به تایید مدیر نرسیده رو ذخیره کنم و بعد از تایید توسط مدیر سایت اطلاعات بیاد در table اصلی ذخیره بشه و ستون id در table اصلی با کمک ویژگیAUTO_INCREMENT خودکار id تولید کنه

معایب: 
در این روش مثلا اگر در table اصلی ما 10 تا سطر وجود داشته باشد
کاربر یکی از کالا های خودش از سایت حذف کنه مثلا سطر 3
در جدول عملا id شماره 3 بلا استفاده میمونه و برای کالای جدید id شماره 11 تولید میکنه
پس بدون دلیل دیتابیس حجمش بالا میره


راه دوم:
تولید id توسط خودمون
چه محصولات تایید شده توسط مدیر چه محصولات تایید نشده در یک table ذخیره کنیم
به این صورت که یک ستون در table وجود دارد به نام flag
اگر flag=0 تایید نشده
اگر flag=1 تایید شده

فرمول تولید id برای محصولات تایید نشده:
زمانی که یه محصول در سایت ثبت میشه در دیتابیس چک کنه
کوئری بگیر تعداد سطرهایی که flag=0 هست پیدا کن
id جدید = تعداد سطرها +1

فرمول تولید id برای محصولات تایید شده:
زمانی که یه محصول تایید شده در دیتابیس چک کنه
کوئری بگیر تعداد سطرهایی که flag=1 هست پیدا کن
id جدید = تعداد سطرها +1

معایب: 
پیچیدگی کد نویسی و احتمال بروز خطا



شما پیشنهادی دارین ؟
(آخرین ویرایش در این ارسال: ۰۳-آذر-۱۳۹۴, ۱۵:۲۸:۱۵، توسط crafcrab.)
۰۳-آذر-۱۳۹۴, ۱۵:۲۶:۱۹
ارسال‌ها
پاسخ
moderator آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 0
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 0
( 19 تشکر در 11 ارسال )
ارسال: #2
RE: فرمول تولید id برای محصولات
 :))): سلام دوست عزيز Clap

بنا به توضيحات شما

  1. "تولید id توسط ویژگیAUTO_INCREMENT"
    • "پس بدون دلیل دیتابیس حجمش بالا میره" : بالا رفتن حجم ديتا بيس مربوط به مقدار يك فيلد نميشود، بلكه تعداد ركوردها يكي از دلايل بالا رفتن حجم ديتا بيس هست.(البته با توجه به اينكه زماني كه ادمين يك كالا رو تاييد كرد ابتدا كالا در قسمت مورد نطر درج شود و سپس ركورد مربوطه حذف شود.)
    • مشكل اين روش از نظر بنده اين است كه فيلد ID مقادير مرتبي ندارد.(از لحاظ تو افتادگي بعضي اعداد (ركورد) كه توسط ادمين حذف ميشود.)
  2. "تولید id توسط خودمون"
    • شما زماني كه كاربر كالاي خود را وارد ميكند، مقدار فيلد flag رو مساوي صفر قرار ميدين، سپس مقدار فيلد ID را در آخرين ركورد گرفته و سپس + 1 كرده و اقدام به ذخيره ميكنيد.



بسيار خوب 008

  1. به نظر بنده شما بايد ابتدا يك فيلد سه حالته به اسم دلخواه (State,Flag)  تعريف كنيد.
  2. مقادير فيلد ميتواند شامل الف- كالاي كاربر هنوز بررسي نشده است. ب- كالاي كاربر تاييد شده. ج- كالاي كاربر تاييد نشده(ادمين رد كرده كالارو) باشد. گزينه ج ميتواند بنا به نياز شما ايجاد شود
  3. زماني كه كالاي درج شده فيلد flag برابر با 0 شود يعني كالا هنوز برسي نشده است. موقع تاييد ادمين flag برابر 1 و زماني كه كالا رد شد flag برابر -1 شود.
----------------------------------------------------------------------------------------------------------------------------------------------------------

  1. با توجه مراحل بالا نيازي به حذف و درج ركورد جديدي نيست(با وجود حالت سوم Flag)در صورت عدم نياز به حالت سوم Flag ميتوانيد فيلدي به نام ID قرار ندهيد و با توجه بهحساب كاربري و وضعيت 0 Flag كالاي جديد و كاربر ايجاد كننده  را بيابيد.
Clap اميدوارم توضيحات بالا باعث حل شدن مسئله ي شما بشه   Happy


:gol:
(آخرین ویرایش در این ارسال: ۰۳-آذر-۱۳۹۴, ۱۸:۲۵:۴۷، توسط moderator.)
۰۳-آذر-۱۳۹۴, ۱۸:۱۶:۲۴
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #3
RE: فرمول تولید id برای محصولات
مهندس بزارش رو AUTO_INCREMENT خودتو خلاص کن اصلا هم هیچ اتفاقی نمی افته چرا؟
اولی اینکه موتور بانکهایی مثل mysql و sql server طوری بهینه سازی شدن که اگه روی سرور مناسب با کانفیگ مناصب باشن تا بیش از 10 میلیون رکورد در هر جدول رو به راحتی پردازش کنن حتی تا 100 میلیون پس نگرانش نباش(در حالتهای بیشتر میشه از اوراکل استفاده کرد)

دوم:افزونگی و سنگین شدن از طراحی بد دیتابیس میاد و اینکه اطلاعات تکراری در جاهای مختلف ذخیره بشه که با ایجاد جداول رابطه ای به راحتی از این مشکل جلوگیری میشه در mysql اطلاعات در فایل ذخیره میشه وقتی رکوردی پاک میشه به همون اندازه حجم کم میشه

اگه حجم اطلاعاتت زیاد هست و سرعت برات مهمه وقتی کاربر محصول وارد میکنه بریز تو یه جدول بعد از تایید نهایی مدیر بریز تو جدول دیگه چون اگه همه یک جا باشن اولا حجم جدولت بالا میره دوما شما مجبور به افزودن یک فیلد برای مشخص کردن حالت کالا هستین(تایید شده و تایید نشده)که اینو باید تو هر کوئری بیارین و پردازش اضافه برای سرور داره

در ضمن روش تعداد رکورد +1 کاملا اشتباه و غلط هست چرا؟
چون شما شماره زدین
1و2و3و4و5و6و7و8و9و10
خب حالا ادمین اومد کالای
3و5و9 رو حذف کرد
کالای جدید که بخواد ثبت بشه کدش میشه(تعداد 7 + 1 = 8)
8  یعنی ایدی های تکراری میده به کالاها و کلا سیستم مختل میشه

پس همون راه اولتو انجام بده

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۰۴-آذر-۱۳۹۴, ۱۱:۳۲:۵۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : crafcrab, mahdi321
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,499
موضوع‌ها: 271
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1653
( 3939 تشکر در 1454 ارسال )
ارسال: #4
RE: فرمول تولید id برای محصولات
سلام
اگر فکر میکنید تعداد رکورد زیاد برای شما مشکل ساز هست میتونید بعد از گذشت یک تاریخی ب سیستم بگید کالاهای تایید نشده را حذف کنه اینطوری رکورد های اضافی حذف میشه و خیلی راحت مشکل شما با AUTO_INCREMENT حل شده!
موفق باشید

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
۱۳-آذر-۱۳۹۴, ۰۰:۲۹:۱۵
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  تولید خطا پس از header web_dev 6 1,671 ۱۰-دى-۱۳۹۷, ۰۲:۴۹:۵۶
آخرین ارسال: babyy
  دانلود نرم افزار تولید کدهای تکراری php برای برنامه نویسان phpeproject.ir 0 2,194 ۲۴-فروردین-۱۳۹۲, ۱۹:۵۴:۲۹
آخرین ارسال: phpeproject.ir
  مشکل در دریافت اطلاعات به روش get و تولید به خروجی SayyedAli 3 4,239 ۰۴-خرداد-۱۳۸۶, ۰۵:۲۳:۵۹
آخرین ارسال: NabiKAZ
  تجزیه و تحلیل یک فروشگاه با خصوصیات محصولات... NabiKAZ 9 7,291 ۱۱-تير-۱۳۸۵, ۱۹:۴۹:۰۱
آخرین ارسال: NabiKAZ

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS