ورود

View Full Version : برای 89 تا فیلد یک جدول درست کنم یا به چند جدول کوچکتر تقسیم کنم؟



moferferi
دوشنبه 13 آذر 1391, 18:10 عصر
سلام
من یه پرسشنامه دارم که قراره کاربرها از تو سایت اون را پر کنند
این پرسشنامه 89 تا ایتم داره که اکثرا به صورت بلی و خیر هست.تعدادیش مقدار عددی میکیره و چندتایی هم باید از نوع max باشه.حالا از نظر شما اگه بیام یک جدول درست کنم و هر 89 تا فیلد را توش قرار بدم اشکالی داره و یا اینکه بیام و بخه چند جدول کوچکتر تقسیمش کنم.
برنامه را دارم با sp.net و sql2008 مینویسم
با اشکر

arashactive
دوشنبه 13 آذر 1391, 18:24 عصر
سلام
من جایی دیگه هم تو این فروم خدمت دوست دیگه گفتم ، وقتی شما جدولی با فیلد های زیاد دارید به عنوان یک طراح دیتا بیس باید چند نکته رو مورد بررسی قرار بدهید ، معمولا ارتباط های یک به یک رو هیچ وقت در چند جدول قرار نمی دهند جز در حالتی که ، شما مقادیری از فیلد هاتون قرار خالی بمونه و برای بعضی از رکورد ها پر بشه : مثال ، برای طراحی جدولی که مشخصات کارمندان رو داره قرار می ده ، می تونید فیلد مشخصات همسر کارمند رو هم درون هم جدول بگذارید اگر داشت پر بشه اگر نداشت خالی بمونه ، ولی با اینکه ارتباط یک به یک است ولی اصولی تر اینه که مشخصات همسر رو جدا کنی ، حالا با این توضیحات ببین فیلد هایی داری که در خیلی موارد خالی بمونه ان وقت این فیلد ها رو جدا کن . در نهایت فقط تعداد لزوما ملاک انتخاب شیوه ارتباطی یا طراحی جدول نیست ، بلکه میزان سنگینی هر کدام از فیلد ها رو هم باید در نظر بگیرید ، داشتن 100 فیلد BOOLEAN حجم کمتری می گیره از 10 تا فیلد MEMO ...

امیدوارم کمک شده باشه ، موفق باشی

farazjalili
دوشنبه 13 آذر 1391, 18:49 عصر
سلام من درست متوجه نشدم کلا اگه تعداد فیلدهای یک جدول زیاد باشه راه اصولی اون اینکه که تبدیل به 2 تا جدول کنیم و ارتباط یک به یک بین آنها بر قرار کنیم ؟

moferferi
دوشنبه 13 آذر 1391, 18:58 عصر
فیلدها ارتباطبی با یک دیگه ندارند.اط طرفی هم کاربر باید همه را پر کنه و چیزی خالی نمی مونه.

pani.khoram
دوشنبه 13 آذر 1391, 20:10 عصر
سلام ، فیلد ها ارتباطی وقتی باید از طرف کاربر پر بشه پس نیازی نیست که دو جدوله بشه ! ولی در مورد مطلب ARASHACTIVE باهاش موافق هستم . ما هم تو بعضی از پروژه هامون به خاطر شکل و نیاز پایگاه داده اگه نیاز باشه ارتباط یک به یک راه می اندازیم . ولی در مورد سوال شما نه نیازی نیست تویه یک جدول تمام فیلد ها رو کنار هم بچین .
موفق باشید

moferferi
سه شنبه 14 آذر 1391, 07:43 صبح
راستی یادم رفت بگم که این تیبل 100 تا رکورد بیشتر نیست.یعنی 100 نفر بشتر قرار نیست اون را پر کنند.

pani.khoram
سه شنبه 14 آذر 1391, 08:08 صبح
خوب پس دیگه اصلا لازم نیست چند جدول درست کنی یعنی اصلا صحیح نیست ، همه رو تو یک جدول قرار بده ... موفق باشی

حمیدرضاصادقیان
سه شنبه 14 آذر 1391, 11:43 صبح
سلام.
دوستان مطالبی رو اشاره کردند که خوب مفید بود.
ولی بحث اصلی در مورد Performance هست. وقتی شما تعداد فیلدهای زیادی در یک جدول دارید حجم Page File های شما زیاد خواهد شد و یک رکورد ممکنه در چند Page قرار بگیره. در واقع چگالی یک Page کم خواهد شد و وقتی شما از اون جدول Select بگیرید سیستم مجبوره I/O زیادی رو مصرف کنه تا داده های شما رو از Page های مختلف فراخوانی کنه.
ولی وقتی به چند جدول کوچکتر تقسیم بشه شما میتونید در هربخشی داده های مربوط به اونو از جدول مورد نظر فراخوانی کنید. که این کار روی سرعت شما تاثیر زیادی خواهد گذاشت.
برای تست این موضوع میتونید هر دومورد رو ایجاد کنید و با اجرای Activity Monitor عملکرد سیستم رو مورد بررسی قرار بدید.
البته این مورد به صورت کلی بود و هرچقدر داده های شما افزایش پیدا کنه به نسبت سرعت شما کاسته خواهد شد.
ولی در حجمهای پایین تاثیر آنچنانی نداره.

موفق باشید.