سؤال

بلدي التطبيق هناك عدة فئات الكيان, المستخدم, العملاء, بعد, وهلم جرا

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

احتمال آخر يمكن إنشاء سجل جدول يقوم بتخزين هذه المعلومات ، يمكن أن تحتوي على تتبع التحديثات أي الكيان.

أي أفكار ؟ أنا يميل على تنفيذ هذا الأخير.

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

المحلول

واحد-السجل-الجدول-for-all-الجداول نهج اثنين من المشاكل الرئيسية التي أستطيع أن أفكر:

  1. تصميم سجل الجدول (ربما) تقيد تصميم جميع الجداول الأخرى.على الأرجح سجل المائدة عمود واحد اسمه TableName ثم عمود آخر اسمه PKValue (التي تخزن قيمة المفتاح الأساسي للعلم كنت تسجيل الدخول).إذا كان بعض من الجداول مجمع المفاتيح الأساسية (أيأكثر من عمود واحد) ، ثم تصميم السجل الخاص بك الجدول سيكون على حساب هذا (ربما من خلال وجود أعمدة مثل PKValue1, PKValue2.... الخ).
  2. إذا كان هذا هو تطبيق ويب من نوع ما ، ثم هوية المستخدم التي من شأنها أن تكون متاحة من الزناد تطبيق الحساب بدلا من معرف التطبيق على شبكة الإنترنت المستخدم (وهو على الأرجح ما كنت حقا تريد تخزين في CreatedBy الميدانية).هذا من شأنه أن يساعد فقط يمكنك التمييز بين السجلات التي تم إنشاؤها بواسطة التطبيق الويب الخاص بك رمز السجلات التي تم إنشاؤها على خلاف ذلك.

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

نصائح أخرى

أفعل هذا الأخير مع "تسجيل الدخول" أو "الأحداث" الجدول.في تجربتي, "تحديث" الطابع الزمني يصبح محبطا سريعة جدا, لأن الكثير من الوقت تجد نفسك في ورطة حيث تريد ليس فقط أحدث تحديث الوقت.

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

على مشروع عملت على بضع سنوات مضت ، نفذنا المشغلات التي محدثة ما يسمى مراجعة الجدول (تخزين المعلومات الأساسية حول تغييرات واحد مراجعة الجدول في الجدول).وشمل تعديل التاريخ (آخر تعديل).

كانت تطبق فقط على الجداول الرئيسية (لا ينضم أو إشارة جداول البيانات).

هذا إزالة الكثير من العادي الإحباط من وجود حساب LastCreated & LastModified المجالات, ولكن قدم الانزعاج من الحفاظ على مشغلات حتى الآن.

في النهاية الزناد/مراجعة تصميم الجدول عملت بشكل جيد و كل ما علينا أن نتذكر أن إزالة و إعادة مشغلات قبل ETL(!).

إنها تستند إلى الويب CMS أنا أعمل على.إنشاء آخر تحديث التواريخ سيتم عرضها على معظم الصفحات و سوف يكون هناك قوائم الماضي خلق (تحديث) صفحة.واجهة الادارة سوف أيضا استخدام هذه المعلومات.

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