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

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

سؤال

انا تنفيذ مسابقة في نظام المستخدم اختيار الإجابة الصحيحة من عدة أسئلة.كل أسبوع هناك مجموعة جديدة من الأسئلة.أنا أحاول العثور على الطريقة الصحيحة لتخزين المستخدم المشاركات في قاعدة البيانات الخاصة بنا.الآن لدي البيانات التالية نموذج:

 Participation                     Week
+--------------+                  +--------------+
| Id           |     +----------->| Id           |<-+
| UserId       |     |            | StartDate    |  |
| WeekId       |-----+            +--------------+  |
+--------------+                                    |
                                   Question         |
                                  +--------------+  |
                                  | Id           |  |
                                  | WeekId       |--+
                                  | Text         |
                                  +--------------+

الحل الوحيد جئت حتى مع إضافة إجابة الجدول أن الزميلة مشاركة مع السؤال ، كما هو مبين في الرسم البياني التالي:

    Participation                     Week
   +--------------+                  +--------------+
+->| Id           |     +----------->| Id           |<-+
|  | UserId       |     |            | StartDate    |  |
|  | WeekId       |-----+            +--------------+  |
|  +--------------+                                    |
|                                     Question         |
|       Answer                       +--------------+  |
|      +------------------+    +---->| Id           |  |
+------| ParticipationId  |    |     | WeekId       |--+
       | QuestionId       |----+     | Text         |
       | Value            |          +--------------+
       +------------------+

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

ما هي الطريقة الصحيحة لتمثيل هذه المعلومات ؟

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

المحلول

هل يمكن إزالة حقل رقم في المشاركة الجدول، واستخدم (معرف المستخدم، WeekId) كما يتكون / المفتاح الأساسي متسلسلة لمشاركة الجدول. وParticipationId حقل في الجدول الجواب لديك ليحل محل ثم عن طريق الزوج (معرف المستخدم، WeekId) بصفة رئيسية الأجنبية إلى المشاركة الجدول. إذا كان نظام قاعدة البيانات الخاصة بك يسمح بذلك، يمكنك تحديد ثم حقول (QuestionId، WeekId) في الجواب الجدول مرجع (رقم، WeekId) في سؤال الجدول. ربما لهذا كان لديك لتحديد فهرس على الزوج (رقم، WeekId) في سؤال الجدول قبل.

نصائح أخرى

هل كنت حقا بحاجة إلى ربط المشاركة مع الأسبوع ؟ يمكنك الحصول عليه من خلال السؤال

لذلك:

  • الجواب(Id,UserId,QuestionId ، قيمة)
  • السؤال(Id,WeekId ، النص)
  • الأسبوع(Id, StartDate)

وشخصيا أعتقد أن لديك التنفيذ السليم هنا.

وParticipationId يرتبط معرف على المشاركة، والتي مرتبطا مع المستخدم والأسبوع. ومرتبطا الجدول سؤالك مع WeekId كذلك.

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

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