ورود

View Full Version : تعیین نوع ماه های سال از نوع int



veniz2008
سه شنبه 23 خرداد 1391, 17:53 عصر
سلام دوستان،من یه آموزش یه جایی دیدم که فیلد ماه(مثلا فروردین،اردیبهشت و ...) رو از نوع int انتخاب میکرد(فروردین معادل 0 و ...) بعدش در stored procedure ای که واسه نمایش رکوردهای یک ماه مینوشت اون عدد رو میگرفت و جستجو رو انجام میداد(مثلا عدد 1 رو میگرفت و کل رکورهای ماه اردیبهشت رو نشون میداد)،حالا سوالم اینه:آیا این کار واقعا لازمه؟آیا بهترین روش هست؟،یعنی اگه از نوع nvarchar تعریف کنیم هنگام جستجوها به مشکل برمیخوریم؟

mahan.2002
سه شنبه 23 خرداد 1391, 19:23 عصر
سلام
بنظر من از لحاظ بانک اطلاعاتی .. و ارتباط ها مشکلی نداشته باشن...
ولی از لحاظ عملی نمیدونم میشه یا نه. ولی فکر نمیکنم بشه در پروژه های بزرگ از این راه رفت... البته نمیشه هر کاری رو که ما نرفتیم و تجربه نکردید ... رد کرد...
دوستان اگر کسی در این رابطه تجربه داشته باشه ... یا چیزی بدونه ... خوبه توضیح بدن.
موفق باشید.

omidh2007
چهارشنبه 24 خرداد 1391, 01:42 صبح
اگه یه جدول کاوش (LOOKUP TABLE ) تعریف کنی (با دو تا فیلد number , name ) ، و از جدول مربوطه به سمتش FK بدی ، فکر میکنم خوب جواب بده .
اونوقت هم توی دیتابیس ، به جای فروردین مینویسی 0 و عدد 0 توی LOOKUP table معادل ، برابر با فروردینه مقدارش . بعد با یه join ساده میتونی همرو تو یه جدول نشون میدی .
افزونگی هم کاهش پیدا میکنه . :چشمک:

baktash.n81@gmail.com
چهارشنبه 24 خرداد 1391, 07:40 صبح
سلام

روش های نگهداری تاریخ تو بانک مختلف باید دید چه کاری می خواین انجام بدین روش مناسب رو انتخاب کنید ...
اما به نظر من روشی که همیشه جواب می ده اینه که تاریخ رو از نوع DateTime نگهدارید و توی لایه App اونو به شمسی تبدیل کنید.

مثلا مشکلی که برای این روش شما به وجود می آد ... اگه واقعا پردازش ها روی تاریخ زیاد باشه ... همیشه باید 3 ستون رو پردازش کنی ...

حمیدرضاصادقیان
چهارشنبه 24 خرداد 1391, 08:11 صبح
سلام.
این روش مناسبی برای استفاده از نوع تاریخ نیست.
یکی از دلایلش اینه که باید query پیچیده تری بنویسید و به نسبت سرعتتون کاهش پیدا میکنه.
موقع Insert داده ها باید چند ستون تحت تاثیر قرار بگیرند.
تعداد فیلدهای بیشتر در یک جدول باعث افزایش Page ها برای اون جدول شده در نتیجه باعث افزایش I/O خواهد شد که نتیجه آن آسیب رساندن به سرعت شما است.
ولی اگر کلا فیلد رو از اون dateTime بگیرید هم میتونید از توابع کاربردی خود T-SQL استفاده کنید و موارد مورد نیازتون رو به راحتی استخراج کنید. هم در عملیات Insert,Update نیازی به تغییر در برنامه تون ندارید.