PDA

View Full Version : حرفه ای: طراحی سیستم تگ (برچسب) گذاری



maysam.m
دوشنبه 05 اسفند 1392, 18:59 عصر
با سلام

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

فرض میکنیم سه تا جدول داریم:
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 تگ ها رو ثبت کرد!

میخوام بدونم آیا راه ساده تری هم هست یا خیر.
ممنون میشم دوستان نظرشون رو بگن

abolfazl-z
سه شنبه 06 اسفند 1392, 17:13 عصر
تا اینجا خیلی مشکلی نیست. اما وقتی بخواهیم یک سطر از جدول post رو ویرایش کنیم به مشکل میخوریم چون ممکنه یه تعداد تگ کم و زیاد بشه در پستمون و باید اول تمام تگ های اون سطر از post رو حذف کنیم و بعد مطابق مرحله 2 از اول ID تگ ها رو ثبت کرد!


منظورتون رو واضح تر بیان کنید.

maysam.m
پنج شنبه 08 اسفند 1392, 10:41 صبح
منظورم زمانیه که بخواد این یک پست را ویرایش کنیم مجبوریم سه تا جدول رو هم ویرایش کنیم.
حالا اگه چند تا تگ جدید به پستمون اضافه یا کم کنیم آپدیت کردن جدول واسطه بین تگ و پست خیلی سخت میشه.

abolfazl-z
پنج شنبه 08 اسفند 1392, 11:09 صبح
طبیعتا همینطوری هست و همچنین سیستم وردپرس هم از همین روش استفاده می کنه.
فقط شما باید یک کلاس تگ بنویسید و پیچیدگی رو کم کنید. شی گرایی در پی اچ پی لذت بخش هست.

maysam.m
پنج شنبه 08 اسفند 1392, 11:16 صبح
طبیعتا همینطوری هست و همچنین سیستم وردپرس هم از همین روش استفاده می کنه.
فقط شما باید یک کلاس تگ بنویسید و پیچیدگی رو کم کنید. شی گرایی در پی اچ پی لذت بخش هست.

زمان ارسال پست و وارد کردن مقدار توی سه جدول مشکلی نیست اما مشکل وقتیه که بخواهیم جدول پست رو ویرایش کنیم و چند تا تگ کم و زیاد کنیم! حالا آپدیت جدول واسطه بین تگ و پست خیلی مشکل میشه!
اول باید بفهمیم چه تگ هایی در پست اضافه شده و آی دی شون رو بکشیم بیرون
دوم باید بفهمیم چه تگ هایی در پست حذف شده و آی دی شون رو در جدول واسط حذف کنیم
آخر هم باید تگ های جدید رو به جدول واسط اضافه کرد!

یا اینکه میشه هربار که پست آپدیت شد آی دی تگ ها رو در جدول واسط حذف کنیم و بعد مجدد تگ ها رو وارد جدول کنیم!

منبعی برای توضیح توابع وردپرس سراغ دارید یا نحوه عملکردش؟

abolfazl-z
پنج شنبه 08 اسفند 1392, 11:45 صبح
خیر
خودتون مشکل خودتون را حل کردید.

maysam.m
پنج شنبه 08 اسفند 1392, 16:36 عصر
خیر
خودتون مشکل خودتون را حل کردید.

از چه لحاظ ؟

abolfazl-z
پنج شنبه 08 اسفند 1392, 17:09 عصر
از چه لحاظ ؟

در کل مشکلتون برنامه نویسی هست ؟ performance هست ؟ چی هست ؟

toopak
پنج شنبه 08 اسفند 1392, 17:33 عصر
شما اگر نمیخوایی درگیر پیدا کردن تگ های کم شده و پیدا کردن تگ های جدید بشی موقع submit مطلب اول همه تگ های مربوط به اون پست رو پاک کن و از جدول post_tagو بعد هم تگ های جدیدت رو اینسرت کن تو جدول
اگر هم کلید انصراف یا cancel نداری تا صفحه ویرایش میاد جدول تگت رو پاک کن که موقع ارسال کارت سبک بشه

maysam.m
پنج شنبه 08 اسفند 1392, 21:28 عصر
در کل مشکلتون برنامه نویسی هست ؟ performance هست ؟ چی هست ؟


شما اگر نمیخوایی درگیر پیدا کردن تگ های کم شده و پیدا کردن تگ های جدید بشی موقع submit مطلب اول همه تگ های مربوط به اون پست رو پاک کن و از جدول post_tagو بعد هم تگ های جدیدت رو اینسرت کن تو جدول
اگر هم کلید انصراف یا cancel نداری تا صفحه ویرایش میاد جدول تگت رو پاک کن که موقع ارسال کارت سبک بشه

میخوام ببینم راه بهتری هم هست یا نه مجبورم همین کاری که گفتم رو انجام بدم.
واقعا کار سختی نیست اما با این روش اگه یه جای برنامه اشتباه بشه چون پروژه دیتای زیادی داره اطلاعات زیادی بریده بشه.