إعداد الجمعيات متعددة الأشكال في DB عندما يكون السوبر هو FK من الفئات الفرعية؟

StackOverflow https://stackoverflow.com/questions/1505269

سؤال

باستخدام ميراث جدول الفصل هو مستحسن أن الفئة الفرعية يشير إلى superclass وليس في الاتجاه الآخر. عادة في الجمعيات متعددة القضبان العمل في الاتجاه الآخر - يشير السوبر إلى الفئة الفرعية.

مُستَحسَن

vehicle
  .id

car
  .vehicle_id # PK instead of using id (identity column)

boat
  .vehicle_id

جمعية القضبان النموذجية

vehicle
  .id
  .subclass_type
  .subclass_id

car
  .id

boat
  .id

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

في حالتي المعينة، سأؤيد ميراثا متعددةا وهكذا، على سبيل المثال، يمكن أن يكون لدي سيارة هجين للسيارات.

أسئلة:

  • كيف يمكنك إعداد جمعيات Activerecord ...

    • إذا كانت السيارة قد يكون لها فرعية واحدة فقط؟

    • إذا كانت السيارة يمكن أن تحتوي على العديد من الفئات الفرعية؟ (المشكلة التي أراها هنا هي أنه من خلال عدم تحديد Subclass_type محددة كيف تعرف الجمعيات أي جدول ضرب. لا أعتقد أنهم سيتعين عليهم أن يضربوا جميع الجداول الممكنة. لذلك ربما يساعد جدول التقاطع هنا. في

  • هل هذا نمط تصميم جيد للاستخدام مع activerecord أو يفعل ذلك باك وسيلة القضبان بما يكفي يجب أن نتجنب ذلك؟

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

المحلول

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

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