إعداد الجدول الموصى به من أجل واحد إلى العديد من الموقف

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

  •  06-09-2019
  •  | 
  •  

سؤال

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

على سبيل المثال، كان بإمكاني ترتيبها من خلال النشر، لكن ذلك سيبدو نوعا مثل:

  PostID   VisibleTo
 PostingA    user1,user2

وهذا يبدو خطأ (نمط CSV في العمود). أو يمكنني الذهاب مع شخص:

User   VisiblePosts

user1 posting1، posting2

لكنها نفس المشكلة. هل هناك طريقة لجعل المستخدم فريد من نوعه، والنشر الفريد، وانضم لهم فقط إلى أين تتطابق؟

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

. سيناريو؟

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

المحلول

هذه علاقة كثيرة كثيرة أو N: M العلاقة.

سوف تخلق طاولة إضافية، قل PostVisibility, مع عمود PostID و UserID. وبعد إذا كان مزيج من PostID و UserID موجود في الجدول، هذا المنصب مرئي لهذا المستخدم.

نصائح أخرى

ثلاثة طاولات ...

المستخدم: [userid] [otherfield

المشاركة: [postid] [otherfields

userpost: [userid] [postid

user.userid ينضم إلى userpost.userid، post.postid ينضم إلى userpost.postid

ثم ابحث عن الجدول UserPost، والانضمام إلى المشاركة عند تحديد المشاركات التي تظهر

تحرير: عذرا، أعتقد أنك تتحدث في شروط نشر المستخدم، والتي هي كثير إلى كثير. كنت أفكر في ذلك من حيث شروط النشر - "حقوق المشاهدة"، والتي هي واحدة إلى كثير.

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

  • postingtable مع postingid (والبيانات الأخرى)

  • postingviVileTable مع postingid و userid

  • Usertable مع معرف المستخدم وبيانات المستخدم

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

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

SELECT * FROM PostingTable A INNER JOIN PostingVisibilityTable B ON A.PostingID = B.PostingID WHERE B.UserID = "currentUserID"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top