PDA

View Full Version : بهرین روش برای ایجاد جدول در sql برای این کار!



saeedhushmand
چهارشنبه 27 فروردین 1393, 10:14 صبح
با سلام خدمت تمام عزیزان

من می خوام یه سیستم درست کنم که کسی بیاد جمله بنویسه و یکی بیاد لایک کنه ، من خودم جدول ها رو یه صورتی زیر درست کردم

جدول اول:column :ID IDUser Text که این جدول ، جدول جمله ها می باشد

جدول دوم:column: ID IDText IDUser که در این جدول برای لایک ها هست ، حالا این کار رو هم انجام دادم ولی می خواستم یه سوال کنم ، آیا این روش درسته؟؟؟؟

یعنی فرض کنید که یک کاربر بیاد یه جمله بنویسه و یک row در جدول اول ایجاد بشه و به ازای اون یک Row به تعداد لایک ها row در جدول دوم ایجاد بشه؟

یعنی اگر یک جمله کسی بنویسه و فرضا 2000 لایک بخوره ، 2000 row در جدول دوم ایجاد میشه ، نگرانی من از اینکه بعد یه مدت که جمله ها زیاد شد و تعداد لایک ها رفت بالا پردازش sql کند نشه و یا آیا امکانش هست جدول sql تا یه حدی row قبول کنه یا اینکه نامحدوده؟

لطفا راهنمایی بفرمایید

anvar
چهارشنبه 27 فروردین 1393, 10:29 صبح
اگر قراره که مثلا مشخصاتی از کاربری که لایک میکنه در اختیارتون باشه روش بالا درسته (در جدول دوم می تونید اطلاعات دیگه ای رو اضافه و از اونها استفاده کنید)

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

saeedhushmand
چهارشنبه 27 فروردین 1393, 10:57 صبح
بله دوست عزیز من اطلاعات کاربرا رو هم میخوام

ولی اگر اطلاعاتم خیلی زیاد بشه به مشکل بر نمی خورم؟؟؟

مثلا سایتایی مثل cloob.com که وقتی لایک میکنی اطلاعاتت رو نگه می دارن و می دونند که شما کدوم جمله رو لایک کردی و با حجم زیاد اطلاعات آیا از همین روش استفاده کردند؟
و می خواستم بدونم یک جدول sql با این نوعی که بهتون عرض کردم چقدر میتونه row نگه داره؟؟ و پردازشش چه جوریه؟

anvar
چهارشنبه 27 فروردین 1393, 16:59 عصر
مشکلی پیش نمییاد!

اگر کاربر لیستی از لایک های خودش رو داره و قابل مشاهده است روش کارش مشابه با بالاست

تعداد ردیف رو دقیقا نمی دونم اما مطمئن باشید خیلی خیلی خیلی بیشتر از چیزیه که شما فکر می کنید

sql سرور برای پروژه های فوق ملی هم جواب میده!!!!!!!!!!!!!!!!!!!!!!

alireza_wills
پنج شنبه 28 فروردین 1393, 10:26 صبح
سلام
اگر داده هات خیلی زیادن میتونی از NoSQL استفاده کنی
http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/
http://www.codeproject.com/Articles/87757/MongoDB-and-C

mohsen_f_b
پنج شنبه 28 فروردین 1393, 11:27 صبح
سلام
تجربه شخصی!
بیشترین مشکلی که ممنکن باهاش برخورد کنی(اونم بعداز بارفتن رکوردها) در زمان Count گرفتن است. مثلا می خواهی ببینی برای نوشته 200 چندتا لایک خورده! بیشتر برنامه نویسا میان از جدول دوم Count میگیرن که این کار در حجم بالا مشکل ساز میشه!(دقیقا نمی دونم ولی من با این مشکل برخورد کردم!) البته به تعداد فیلدها و حجم پایگاه هم ربط داره انگاری! شما یک فیلد بزار در همون جدول اولت که Count را در خودش نگه داره که دیگه نیاز به Count نداشته باشی و در جدول دومت دیتای کاربرانت رو ذخیره کن. حالا زمانیکه می خواهی Count رو نشون بدی از همون فیلد استفاده کن و زمانیکه می خواهی لیست کاربرانت را نشون بدی یه SELECT میزنی از جدول دومت.

موفق باشید