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

كيفية إنشاء علاقة في قاعدة البيانات بحيث يستطيع المستخدم التصويت للمنشور او التعليق

Mansour Hussen

السؤال

مرحباً، أحتاج مساعدة في إنشاء التصويب عن طريقة ترابط جداول ORM، 

أحتاج إنشاء علاقة بين المستخدم والمنشور والتعليق حيث يسمح للمستخدم بالتصويت على التعليق او المنشور 

قمت بإنشاء schema تخصص (Vote)

وكانت العناصر الذي تحتويها هي 

userId

postId

answerId

type

تم التعديل في بواسطة شرف الدين2
توضيح السؤال والعنوان
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

This is not the answer, but it's only a note:

defining relations for a Nullable column can make a problems

since you are making a relation in table 1, and you are linking it in a row in table 2, that mean you are sure that the data is not null.

 

and if you are trying to fetch a row, then checking the value of a column if it's null or not, in this time there is no benefit from the relation, because yo are not fetching all data in one call / line.

 

finally: relation and nullable are not OK together, i hope that this can help you

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

حسب ما فهمت أنك تريد عمل نظام تصويت حيث يقوم المستخدم بالتصويت على الاجابة او المنشور, إن كان فهمي صحيحًا

لدينا هنا في نظام التصويت نوعان من علاقات

  1. العلاقة بين المستخدم والمنشور
  2. العلاقة بين المستخدم والتعليق

إذًا يجب إنشاء جدولين وليس جدول واحد حتى نتمكن من تمثيل تلك العلاقة , ويكون الجدولين كالتالي

جدول بين المستخدم والمنشور ويحتوي على:

  • مُعرف المستخدم
  • مُعرف المنشور
  • ما إذا كان التصويت إيجابيًا أم سلبيًا

جدول بين المستخدم والتعليق يحتوي على 

  • مُعرف المُستخدم
  • مُعرف التعليق
  • ما إذا كان التصويت إيجابيًا أم سلبيًا
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 3 دقائق مضت قال شرف الدين2:

حسب ما فهمت أنك تريد عمل نظام تصويت حيث يقوم المستخدم بالتصويت على الاجابة او المنشور, إن كان فهمي صحيحًا

لدينا هنا في نظام التصويت نوعان من علاقات

  1. العلاقة بين المستخدم والمنشور
  2. العلاقة بين المستخدم والتعليق

إذًا يجب إنشاء جدولين وليس جدول واحد حتى نتمكن من تمثيل تلك العلاقة , ويكون الجدولين كالتالي

جدول بين المستخدم والمنشور ويحتوي على:

  • مُعرف المستخدم
  • مُعرف المنشور
  • ما إذا كان التصويت إيجابيًا أم سلبيًا

جدول بين المستخدم والتعليق يحتوي على 

  • مُعرف المُستخدم
  • مُعرف التعليق
  • ما إذا كان التصويت إيجابيًا أم سلبيًا

انا عملت كذلك، بس الآن محتاج مفتاح key لا يتكرر عندما قم بتحديث، مثلاً مستخدم عمل تصويت ايجابياً ورجع يتشي يرجع سلباً اذا كانت دالة create سينشئ خطأ، لكن في حالة دالة create or update موجودة في prisma او لارفل بتكون مشكلة تقريباً محلولة بس تحتاج شرط لعمل تحديث اذا عملت انه يكون 

postId هو نفسة postId موجود في منشور بينتج خطأ لانة postId ولا userId فريد ويتكرر. لانه منشور يحتوى ع اكثر من صوت و المستخدم يملك اكثر من صوت

 

واذا قلت بستخدم id تبع جدول تصويت بيكون صعب وصول له

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال mansour_tech:

انا عملت كذلك، بس الآن محتاج مفتاح key لا يتكرر عندما قم بتحديث، مثلاً مستخدم عمل تصويت ايجابياً ورجع يتشي يرجع سلباً اذا كانت دالة create سينشئ خطأ، لكن في حالة دالة create or update موجودة في prisma او لارفل بتكون مشكلة تقريباً محلولة بس تحتاج شرط لعمل تحديث اذا عملت انه يكون 

postId هو نفسة postId موجود في منشور بينتج خطأ لانة postId ولا userId فريد ويتكرر. لانه منشور يحتوى ع اكثر من صوت و المستخدم يملك اكثر من صوت

 

واذا قلت بستخدم id تبع جدول تصويت بيكون صعب وصول له

بدلًا من عمل مفتاح أساسي واحد من الممكن عمل مفتاح مركب composite key يكون عبارة عن مفتاحين معًا , بحيث يكون المفتاح الاساسي هو مفتاح المُستخدم والمنشور في نفس الوقت او المُستخدم والتعليق

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...