PDA

View Full Version : سوال: مشکل عدم اضافه شدن منظم اطلاعات در دیتابیس



volkswagen
جمعه 06 فروردین 1400, 19:08 عصر
سلام...
من یک دیتابیس درست کردم و یکسری اطلاعات رو با php وارد اون می کنم و همچنین حذف...

نمی دونم چرا مواقعی که اطلاعات وارد جدول می کنم ، بجای اضافه شدن در ابتدای جدول ، میره مثلا در وسط قرار می گیره... چجوری مشکل رو حل کنم؟
عکس اش گذاشتم که بهتر متوجه بشین:

https://uupload.ir/files/whpm_data.jpg

plague
شنبه 07 فروردین 1400, 16:34 عصر
باید ببینی مرتب سازیشون بر چه اساسیه
معمولا تیبل ها فیلد id دارن که افزایشی هست و براساس اون فیلد مرتب میشن داده ها , در نتیجه جدید ترین فیلد ها میرن آخر جدول

volkswagen
شنبه 07 فروردین 1400, 19:28 عصر
باید ببینی مرتب سازیشون بر چه اساسیه
معمولا تیبل ها فیلد id دارن که افزایشی هست و براساس اون فیلد مرتب میشن داده ها , در نتیجه جدید ترین فیلد ها میرن آخر جدول

مرسی ؛
خب هر بار که به یک رکورد به جدول اضافه می کنم ، با یک آی دی جدید که افزایشی هست اضافه میشه...ولی وقتی رکوردی حذف میشه هیچ تناسب و قانونی بین این آی دی ها نیست و ممکنه مثلا یکیش عدد 1 باشه و دیگری 600.

حالا نمی دونم چجوری باید مشکل رو حل کرد

volkswagen
شنبه 07 فروردین 1400, 23:37 عصر
جای دیگه نگاه کردم ، نوشته مهم نیست اطلاعات چجوری ذخیره میشه...و ظاهرا موقع query گرفتن باید مرتب سازی بشه ، اینطوری که سخت میشه

plague
سه شنبه 10 فروردین 1400, 13:05 عصر
من متوجه نمیشم مشکلت چیه دقیقا
شما اگه شناسه های 1 و2و6 داشته باشید 1 اول و2 وسطه و 6 آخر
اگر 1 و 500 و 600 داشته باشی باز هم 1 اوله 500 وسط و 600 آخر
اصلا اهمیتی نداره که چی حذف شده چون اعداد آیدی از 1 شروع میشن و میرن بالا

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

volkswagen
پنج شنبه 12 فروردین 1400, 11:43 صبح
من متوجه نمیشم مشکلت چیه دقیقا
شما اگه شناسه های 1 و2و6 داشته باشید 1 اول و2 وسطه و 6 آخر
اگر 1 و 500 و 600 داشته باشی باز هم 1 اوله 500 وسط و 600 آخر
اصلا اهمیتی نداره که چی حذف شده چون اعداد آیدی از 1 شروع میشن و میرن بالا

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

فرض کنید ده تا رکورد دارم از یک تا ده:
1
2
3
4
5
6
7
8
9
10

در حالت عادی که من این ها رو اضافه می کنم به جدول ، منظم از یک تا ده اضافه می شن و مشکلی نیست...

ولی حالا فرض کنید من یکسری از رکوردها رو پاک کنم و نتیجه مثلا اینطوری بشه:

1
3
7
9

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

1
3
10(رکورد جدید)
7
9

plague
جمعه 13 فروردین 1400, 13:32 عصر
نوع انجین تیبل هات رو چک کن InnoDB باشه , InnoDB بر اساس کلید پریماری یا همون id مرتب میکنه
شما احتمالا داری از یک انجین قدیمی احتمالا myisam استفاده میکنی که براساس اینسرت مرتب میکنه

همیشه تیبل هات رو InnoDB بزار

volkswagen
جمعه 13 فروردین 1400, 15:43 عصر
مرسی ؛
من این کوئری رو وارد کردم برای تغییر موتور تیبل ، فک کنم مشکل برطرف شد ، بسیار ممنون از راهنمایی.


ALTER TABLE table-name ENGINE = InnoDB;