• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
طراحی سیستم تگ (برچسب) گذاری
#1
با سلام

من در مورد ساخت و طراحی بخش تگ گذاری میخوام نظر شما دوستان محترم این انجمن رو بدونم.

فرض میکنیم سه تا جدول داریم:
tag , post , post_tag
ساختار جدول ها هم به این شکله:
tag: id | name
post: id | name
post_tag: id | tag_id | post_id

برای وارد کردن اطلاعات داخل جدول post و tag چنین فرایندی باید انجام بشه
1- داخل post کوئری insert بزنیم ( اگه با موفقیت کوئری ثبت شد میریم مرحله بعد)
2- حالا برای هر تگ یه کوئری میزنیم ببینم اون تگ قبلا ثبت شده یا نه. اگه ثبت شده بود آی دی اون رو میگیرم و اگه نشده بود اون رو در جدول tag ثبت میکنیم و ای دی اون رو میگیریم.
3- حالا در جدول واسطه post_tag آی دی سطر ارسال شده + ID تگ ها رو وارد میکنیم.

تا اینجا خیلی مشکلی نیست. اما وقتی بخواهیم یک سطر از جدول post رو ویرایش کنیم به مشکل میخوریم چون ممکنه یه تعداد تگ کم و زیاد بشه در پستمون و باید اول تمام تگ های اون سطر از post رو حذف کنیم و بعد مطابق مرحله 2 از اول ID تگ ها رو ثبت کرد!

میخوام بدونم آیا راه ساده تری هم هست یا خیر.
ممنون میشم دوستان نظرشون رو بگن
  پاسخ
تشکر شده توسط :
#2
کسی نمیدونه؟
  پاسخ
تشکر شده توسط :
#3
کاربرد جدول سوم رو متوجه نمیشم
فکر کنم بشه همین کار رو با دوتا جدول هم انجام بدی
در ضمن کارهایی که گفتی خیلی سخت نیست. اگه تونستی کارهای قبلی رو انجام بدی این کار خیلی سختی نیست.
  پاسخ
تشکر شده توسط :
#4
(۱۳۹۲ اسفند ۰۸, ۰۸:۴۹ ب.ظ)AlirezaHS نوشته: کاربرد جدول سوم رو متوجه نمیشم
فکر کنم بشه همین کار رو با دوتا جدول هم انجام بدی
در ضمن کارهایی که گفتی خیلی سخت نیست. اگه تونستی کارهای قبلی رو انجام بدی این کار خیلی سختی نیست.

جدول سوم رابط جدول پست و دسته بندیه .
با دو جدول شدنش میشه اما کارایی سیستم به شدت پایین میاد.

فعلا به این نتیجه رسیدم که راه بهتری نیست و از همون راهی که گفتم استفاده میکنم Sleepy
  پاسخ
تشکر شده توسط :
#5
خب اینطوری موقع ویرایش اگه پست دیگه ای شامل اون تگ باشه، با حذف اون تگ پست های دیگه هم اون تگ رو از دست میدن.

بنظرم بهتره سیستم چک کردن duplicate رو در نظر نگیری و فقط موقع خروجی گرفتن Group کنی تگ ها رو...
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : Maysam.m
#6
(۱۳۹۲ اسفند ۱۰, ۰۱:۰۲ ب.ظ)hamid_80386 نوشته: خب اینطوری موقع ویرایش اگه پست دیگه ای شامل اون تگ باشه، با حذف اون تگ پست های دیگه هم اون تگ رو از دست میدن.

بنظرم بهتره سیستم چک کردن duplicate رو در نظر نگیری و فقط موقع خروجی گرفتن Group کنی تگ ها رو...

تگ مستقیم حذف نمیشه بلکه براساس ای دی post در جدول واسط حذف میشه
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط :
#7
راه درستش همینه که انجام دادی. من سیستمی دارم که دقیقن با همین روش شما پیاده شده و الان بیش از هشت هزار برچسب داره و بعضی از مطالب بیش از ۲۰ برچسب دارن، جدول رابطه ت اگه کلید ترکیبی داشته باشه مشکلی از لحاظ حذف همه روابط و اینزرت مجدد به وجود نمیاد.
  پاسخ
تشکر شده توسط : Maysam.m
#8
نقل قول:تگ مستقیم حذف نمیشه بلکه براساس ای دی post در جدول واسط حذف میشه
خب بازم اینطوری حذف میشه دیگه در نهایت

مگه قبل از حدف دو تا کوئری بزنی
یکی برای گرفتن تگ های اون پست
یکی هم برای چک کردن اینکه جواب خروجی اینکه تگ در پست دیگه هست بیشتر از یک هست یا نه، که اگه بیشتر از یک بود، تگ حذف نمیشه...
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#9
(۱۳۹۳ فروردین ۲۳, ۰۱:۵۴ ب.ظ)hamid_80386 نوشته:
نقل قول:تگ مستقیم حذف نمیشه بلکه براساس ای دی post در جدول واسط حذف میشه
خب بازم اینطوری حذف میشه دیگه در نهایت

مگه قبل از حدف دو تا کوئری بزنی
یکی برای گرفتن تگ های اون پست
یکی هم برای چک کردن اینکه جواب خروجی اینکه تگ در پست دیگه هست بیشتر از یک هست یا نه، که اگه بیشتر از یک بود، تگ حذف نمیشه...
کلن تگ حذف نمیشه. دلیلی نداره حذف بشه. وقتی مطلبی حذف میشه یا برچسب های مطلبی حذف/عوض میشه فقط رکوردهای مربوط به اون مطلب تو جدول رابطه حذف میشه
  پاسخ
تشکر شده توسط : Maysam.m
#10
نقل قول:کلن تگ حذف نمیشه. دلیلی نداره حذف بشه. وقتی مطلبی حذف میشه یا برچسب های مطلبی حذف/عوض میشه فقط رکوردهای مربوط به اون مطلب تو جدول رابطه حذف میشه
شما فکر کن داری یه سیستم جستجو میسازی که تگ های موجود را بصورت AutoComplte زیر فیلد سرچ نمایش میده، اونوقت چه معنی داری تگی که مطلبی براش نیست نمایش داده بشه؟
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان