• 0

إعادة ترتيب أرقام أسطر جدول قاعدة البيانات

عندما انشئ منشورات كثيره و احذف اولهم مثلا او من المنتصف يبقي ال id لكل المنشورات التي بعده بنفس ال id القديم الخاص بها و أنا لا أريد ذلك أنا أريد إن يكون ال id على حسب الترتيب الفعلي لهم كيف ذلك

تمّ تعديل بواسطة Wael Aljamal
توضيح السؤال
2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

المعرف id قيمته تبقى ثابتة لكل سطر في جدول البيانات، لا يجب ان يتغير أو ان تعتمد عليه لمعرفة ترتيب العناصر فهو يميز كل منشور عن الاخر

يمكنك معرفة ترتيب كل منشور ضمن جميع المنشورات المستعلم عنها باستخدام for in مع enumerate كالتالي

for index, post in enumerate(posts_queryset):
  	# index // ترتيب هذا المنشور
    ...

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

ﻻ يجب عمل شئ كهذا , حيث أن الid هو عبارة عن index , ال index عبارة عن قيمة مميزة يتم تخزينها في مكان معين في قاعدة البيانات لتسهيل الوصول إليها في المرات القادمة ويتم ذلك بإستخدام هياكل بيانات وخورزميات مثل ال binary search tree

فمثلاً لو كان لدينا هذا الصف

{
name:"sharaf",
id:4
}

تقوم قاعدة البيانات تلقائياً بتخزين المعرف(id)في مكان خاص مع باقي المعرفات (ids) , فعندما نقوم بالبحث بإستخدام المعرف, يتم الوصول إليه بشكل أسرع بسبب إستخدام الbinary search tree بينما, ولذلك ﻻ يجب تغيير الid , أما في حالة أنك تريد معرفة ترتيب العناصر حسب دخولهم يمكنك إستخدام حل الأستاذ حسن حيدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

السبب الرئيسي في منعم إعادة ترقيم الأسطر في جدول البيانات وخاصة المفتاح الأساسي هو إمكانية ارتباط القيم من هذا الجدول إلى جداول أخرى، مثلا لديك جدول الموظفين، وجدول الأقسام، ووضعنا موظف واحد كرئيس أو عامل لدى الأقسام، والتي تتم عن طريق وضع رقم المعرف id الخاص بالموظف في أحد خواص جدول الأقسام، حيث أن أي تعديل في أرقام الموظفين سيؤدي لحدوث خطأ في الربط بين الجدولين.. اعتبر أن الموظف استقال، وأخذ رقمه موظف آخر في جدول قاعدة البيانات.. هل سيأخذ وظيفته ومكانه أيضاً؟ كلا.. تخيل أن يتغير ترقيم الموظفين .. سأضع مثال لبنية الجدولين ولاحظ استحالة تعديل ترقيم الموظفين..

جدول موظفين

اسم  رقم الموظف 
1           وائل
2           إياد
3           سامح

ثم جدول الأقسام

اسم القسم    رقم المدير
2              موارد بشرية
1              مدربين
3              بايثون

في حال حذف وائل من الجدول الأول سيصبح إياد رقمه 1، و سامح رقمه 3، لاحظ رقم المدير (الذي هو موظف) من الجدول الثاني سيتغير الموظف مدير القسم لكل المستخدمين..

وجود قفزات في id لا تمثل أي مشكلة في سرعة أداء قاعدة البيانات

يمكن تطبيق الاستعلام التالي على القاعدة في حال عدم ارتباط الجدول بجداول أخرى:

alter table MYTABLE auto_increment = 1;

أو

SET @reset = 0; 

UPDATE YOUR_TABLE_NAME SET id = @reset:= @reset + 1;

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن