PDA

View Full Version : راهنمایی برای جدول ذخیره ی comment ها در وب سایت



amin-21
جمعه 17 بهمن 1393, 17:24 عصر
دارم یه پروژه وب سایت خبری انجام میدم با asp.net
یه جدول میخوام برای نگهداری کامنت های مربوط به هر پست با این ویژگی ها:

1 - که هر کامنت ممکنه تعدادی پاسخ هم داشته باشه!
2- با حذف کامنت، تمام پاسخ های اون هم حذف بشن!


ایده هایی دارم خودم اما میخواستم ببینم بهترین حالت برای نگهداری کامنت ها چیه؟

ممنون میشم دوستانی که حرفه ای کار کردن لطف کنند راهنماییم کنن.

sajadsobh
جمعه 17 بهمن 1393, 18:27 عصر
به نظر من باید جدول کامنت این فیلدها رو داشته باشه:
ID, PostID, ParentID, Content
که اینجوری میشه واسه کامنت ها ارث بری قرار بدی. برای مثال کامنت اصلی مقدار ParentID صفر میگیره و اگه یه کامنت، پاسخ به کامنت های دیگه باشه مقدار ParentID اش، آیدی ِ یه کامنت ِ اصلی میشه.
یه راه دیگه ام اینه که کامنت ها و پاسخ ها رو توی دو تا جدول جدا ذخیره کنی. حالا اساتید دیگه میان جواب میدن ما هم یاد میگیریم.

amin-21
جمعه 17 بهمن 1393, 19:12 عصر
به نظر من باید جدول کامنت این فیلدها رو داشته باشه:
ID, PostID, ParentID, Content
که اینجوری میشه واسه کامنت ها ارث بری قرار بدی. برای مثال کامنت اصلی مقدار ParentID صفر میگیره و اگه یه کامنت، پاسخ به کامنت های دیگه باشه مقدار ParentID اش، آیدی ِ یه کامنت ِ اصلی میشه.
یه راه دیگه ام اینه که کامنت ها و پاسخ ها رو توی دو تا جدول جدا ذخیره کنی. حالا اساتید دیگه میان جواب میدن ما هم یاد میگیریم.

مرسی دوست عزیز، از همین روش اول استفاده کردم اما ریلیشنی که ایجاد میشه نمیشه INSERT AND UPDATE رو تو حالت CASCADE قرار داد، در واقع این قسمت توی پراپرتیسش غیر فعاله!:افسرده:
؟؟؟؟؟؟؟

sajadsobh
جمعه 17 بهمن 1393, 23:34 عصر
ریلیشن ایجاد نکنید چی میشه؟!
چون اگه بخواین ریلیشن ایجاد کنید نمی تونید واسه مقدار کامنت اصلی هم مقدار بدید. یعنی اصلاً مقداری خارج ار محدوده آیدی های خود ِ کامنت ها نمیگیره.
به نظر من ریلیشن نیاز نیست :لبخندساده:

amin-21
شنبه 18 بهمن 1393, 12:23 عصر
ریلیشن ایجاد نکنید چی میشه؟!
چون اگه بخواین ریلیشن ایجاد کنید نمی تونید واسه مقدار کامنت اصلی هم مقدار بدید. یعنی اصلاً مقداری خارج ار محدوده آیدی های خود ِ کامنت ها نمیگیره.
به نظر من ریلیشن نیاز نیست :لبخندساده:
128247
من یه همچین جدولی قرار دادم، از ریلیشن استفاده کردم چون قراره جواب ها مربوط به یه کامنتی که وجود داره باشن! قابلیت نال بودن هم دادم بهش که اگر کامنت بود answerTo میشه نال و اگر جواب کامنتی بود، میشه id کامنتی که داریم جوابش رو میدیم.
جوابم داده.
فقط الان یه ابهام کلی دارم که چرا نمیشه قابیلیت حذف آبشاری بهش داد تو قسمت پراپرتیس؟ کلا غیر فعاله اون قسمت!!!

مهدی نان شکری
شنبه 18 بهمن 1393, 13:43 عصر
سلام
ببینید در MSSQL حالت آبشاری فقط زمانی قابل انجام هست که رابطه فاقد دور باشد به عبارتی تنها برای درخت می توان Cascade تعریف کرد.
برای این منظور شما حتما باید رابطه را تعریف کنید چون در غیر این صورت به مشکل ناسازگاری داده برخورد خواهید کرد ولی برای پیاده سازی Cascade از تریگر استفاده نمایید.