اذهب إلى المحتوى

السؤال

نشر (معدل)

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

تم التعديل في بواسطة Wael Aljamal
توضيح السؤال

Recommended Posts

  • 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;

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...