PDA

View Full Version : ساخت یک بانک واحد برای برچسب ها و نحوه ی جستجو!



PrinceDotNet
چهارشنبه 28 مرداد 1388, 17:21 عصر
سلام
من چند جدول دارم که شامل مقالات, معرفی سایت, ویکی و ... هستند.هر کدومشون دارای رکوردهای :
1.ID
2.title
3.description
هستند! جالا می خوام یک جدول واحد برای همشون داشته باشم که تگ های اونارو نگهداری می کنه! یک مثال کاملش سایت www.iDevCenter.com هستش!
می خواستم بدونم چطور می تونم مثل این سایت این کارو بکنم و بتونم با جستجو در تگ ها به همه ی اونایی که دارای این تگ هستند دسترسی داشته باشم!
ممنون

shahbazyaghoobi
چهارشنبه 28 مرداد 1388, 22:55 عصر
دوست عزیز من منظورتا درست متوجه نشدم ولی فکر کنم یک فیلد کد نوع مطلب به جدولت اضافه کن که این فیلد کلید خارجی برای یک جدول نوع مطلب(که شامل انواع مطالب موجود در سایت باشد) باشد.این طوری می تونی تو جدولت بر اساس نوع مطلبت جستجو کنی.

PrinceDotNet
پنج شنبه 29 مرداد 1388, 18:04 عصر
ببینید من توی سایتم چند بخش دارم!
1.مقالات
2.معرفی سایت
3.ویکی
حالا می خوام واسه همشون تگ بزارم! و می خوام جوری یاشه که وقتی یک تگ رو جستجو می کنم تمام موارد مقالات ,معرفی سایت و ویکی رو که با تگ مورد جستجو همخونی داره رو به من نشون بده!
حالا می خوام بدونم بهتر نسیت که یک جدول جدا برای tag ها داشته باشم ؟ اصلا پیشنهاد شما چیه؟

محمد سلیم آبادی
پنج شنبه 29 مرداد 1388, 18:12 عصر
سلام.
نظر من اینه که از آنجایی که سه جدول مذکور دارای ستون های مشترک هستند، هر سه جدول را تبدیل به یک جدول کرده و یک ستون با نام "نوع" به آن بی افزایید که مشخص کند که این سطر مربوط به چه چیزی است مثلا مقاله یا ...

بعد از آنجایی که هر مقاله یا ... ممکن است چند tag داشته باشد یک جدول مستقل برای این منظور طراحی کنید.

PrinceDotNet
جمعه 30 مرداد 1388, 11:00 صبح
نه دوست من دارای ستون های مشترک هستند ولی ستون های متفاوتشون بیشتره!!!

محمد سلیم آبادی
جمعه 30 مرداد 1388, 12:11 عصر
سخت نگیر دوست من.

خوب اگر می خواهید در نتیجه جستجو تنها فیلد های مشکر از سه جدول به نمایش در آیند می توانید از این راه حل استفاده کنید ابتدا در جدول تگها یک جستجو انجام می دهید سپس ID های مقاله، معرفی سایت و یا ویکی را بدست می آورید و سپس با اجتماع سه جدول مورد نظر JOIN می کنید. به همین سادگی.
من جدول تگ ها را به این شکل طراحی کردم: یک ستون برای ID مقاله ها یا ویکی و... و یک نام برای تگ که کلید اصلی ترکیب این دو ستون می باشد.



SELECT ID,
title,
Description
FROM
(
SELECT ID, title, Description
FROM Articles
UNION ALL
SELECT ID, title, Description
FROM Wicky
UNION ALL
SELECT ID, title, Description
FROM SiteIntro
) AS D1 INNER JOIN
(
SELECT ID
FROM tags
WHERE tagName='SQL'
) AS D2
ON D1.ID=D2.ID

PrinceDotNet
جمعه 30 مرداد 1388, 20:57 عصر
ممنونم
فقط یک سوال دیگه!
هر کدوم از موارد بالا 3 - 4 تا تگ دارن که ممکنه با هم یکی باشن! حالا بهتر نیستش که واسه هر تگ یک فیلد ساخته بشه؟
اگر این کار رو بکنم چطور می تونم اینو معلوم کنم که یک تگ مربوط به چی هستش و در اون جستجو هم بکنم!

ممنون

محمد سلیم آبادی
جمعه 30 مرداد 1388, 22:05 عصر
می توانید سوال و خواسته خود را با استفاده از جدول به نمایش بگذارید؟
مشکل شما طراحی بانک است یا ایجاد کوئری؟
می خواهید اصلا خودم بانک را طراحی کنم و تمام کوئری های مورد نیاز را ایجاد کنم و همه ی کد ها و اسکریپت ها را برایتان پست کنم؟