سؤال

أنا أقوم ببناء موقع إلكتروني لإدارة المحتوى والذي سيتضمن أيضًا ميزات أخرى. عندما يقوم أحد أعضاء المسؤول بحذف عنصر من خلال لوحة المسؤول ، أود نقل هذا العنصر إلى "صندوق إعادة التدوير" لمدة 30 يومًا (ثم يتم حذفه تلقائيًا).

ما هي أفضل طريقة لتنفيذ هذه الميزة؟

كانت إحدى الأفكار التي كان لديّ عمود بت "تم حذفها" في جدولي ، ثم عرض السجلات فقط WHERE Hide=0. ومع ذلك ، فإن هذا يعني الاضطرار إلى تذكر وضع هذا الشرط في كل مرة SELECT من الطاولة.

كانت هناك فكرة أخرى كانت لدي طاولة ثانية حيث سيتم نقل السجلات عند حذفها. ومع ذلك ، لدي العديد من الجداول التي يتم استخدامها في موقع الويب الخاص بي ، لذلك هذا يعني مضاعفة كمية الجداول ، ولديها هياكل جدول مكررة (والتي قد تسبب مشاكل في الاتساق في المستقبل).

من الناحية المثالية ، أود أن أحصل على جدول "Recyclebin" الذي يتم نقل جميع السجلات إليه ، ولكن قد يحتوي هذا على 100s من الأعمدة لتتمكن من تخزين البيانات من جميع الجداول المختلفة.

إذا كان لدى أي شخص أي أفكار أخرى ، فسيكون موضع تقدير كبير.

شكرًا.

هل كانت مفيدة؟

المحلول

معظم التطبيقات التي أعرفها تستخدم أ deleted العمود (ليس منطقية ، ولكن الطابع الزمني ، حتى تتمكن من معرفة متى تم حذفه). نعم ، ستحتاج إلى إضافة هذا إلى جميع استفساراتك ، ولكن ربما تستخدم طبقة ORM ، لذلك عليك فقط إضافتها مرة واحدة؟ أود أن أقترح الذهاب بهذه الطريقة.

تستخدم ويكيبيديا جداول متعددة للإصدارات الحالية والمؤرشفة من مقالاتها ، ولكن هذا لأنها خارج الدوري ضخمة ، ويتم طلب الإصدارات الحالية في كثير من الأحيان أكثر من الإصدارات القديمة.

إذا كنت تريد استخدام واحد RecycleBin الجدول ، قد ترغب في التفكير في تسلسل الصفوف ووضعها في أ value العمود بدلاً من تخزين جميع الأعمدة الفردية. بالطبع ، يعمل هذا فقط إذا لم تكن بحاجة إلى الاستعلام عن محتويات الأعمدة الفردية للعناصر المحذوفة ، لأن ذلك سيكون مكلفًا للغاية.

نصائح أخرى

استخدام عمود isdeleted هو تقنية جيدة.

يمكنك الجمع بين هذا مع حذف بدلاً من الزناد الذي سيستخدم العلم بدلاً من عملية الحذف العادية. يمكنك أيضًا لف الجدول بمشاهد ، بحيث يتم الكشف فقط عن صفوف غير حتمية في العرض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top