ورود

View Full Version : تفکیک فیلد آدرس به اجزای تشکیل دهنده



adineh67
یک شنبه 10 خرداد 1394, 09:47 صبح
سلام به همگی
دوستان میخواستم بدونم از نظر شما بهتره فیلد آدرس خودش بصورت یه جدول جدا متشکل از خیابان،کوچه و ... طراحی بشه یا کلشو بصورت یه فیلد درنظر بگیرم؟
ممنونم

salar IT man
یک شنبه 10 خرداد 1394, 10:22 صبح
سلام به همگی
دوستان میخواستم بدونم از نظر شما بهتره فیلد آدرس خودش بصورت یه جدول جدا متشکل از خیابان،کوچه و ... طراحی بشه یا کلشو بصورت یه فیلد درنظر بگیرم؟
ممنونم

بستگی به سناریو شما داره . مثلا در یک فروشگاه اگر نیاز است هر مشتری چندین آدرس داشته باشه در این صورت نیاز است یک جدول برای آدرس ها در نظر بگیرید.

SabaSabouhi
یک شنبه 10 خرداد 1394, 11:15 صبح
سلام به همگی
دوستان میخواستم بدونم از نظر شما بهتره فیلد آدرس خودش بصورت یه جدول جدا متشکل از خیابان،کوچه و ... طراحی بشه یا کلشو بصورت یه فیلد درنظر بگیرم؟
ممنونم

سلام
سوال خوبیه، به صورت خیلی قاطع می‌گم که نشانی رو تفکیک نکن.
اگه این احتمال رو می‌دی که یه روزی لازم باشه، نشانی رو روی پاکت نامه چاپ کنی، می‌تونی به صورت خط اول و خط دوم تفکیک کنی.
اما تفکیک به خیابان و کوچه فقط یه جواب داره: «نه».
این مسیر رو من قبلاً رفتم و وحشتناک مشکلات داره.
اگه بخوای این کار رو انجام بدی، با پیشوند‌های خیلی متفاوتی مواجه می‌شی مثل:
«شهرک امید»، «فاز دوم»، «بلوک 17»، «میدان مادر»، «جنب بانک ملی»، «نرسیده به چهارراه عباس‌آباد»، «بعد از بیمارستان جم»،
«مجمع ارکیده»، «کیلومتر 5 جاده مخصوص کرج». تازه اگه تمام نشانی‌ها مربوط به شهر‌ها باشه، وگرنه . . .
که پیاده‌سازی این‌ها منجر به لیست خیلی طولانی‌ای می‌شه که اغلب آیتم‌ها باید خالی بمونن.
ضمن این که ترتیب هم نمی‌تونی براش قائل بشی. یعنی ممکنه تو بعضی نشانی‌ها، ترتیب چینش این آیتم‌ها
با نشونی دیگه متفاوت باشه، اینطور نیست که همیشه مثلاً اول میدون باشه، بعد خیابون.
مثلاً: خیابان بهروز، میدان مینا، کوچه‌ی دهم
یا: میدان قدس، خیابان دربند، کوچه هفتم
و یه مشکل دیگه هم که من داشتم این بود که کاربرها، این نوع فیلدها رو درست پر نمی‌کنن.
اجازه بده، هر کسی نشانی منزل یا محل کارش رو هر جور دوست داره وارد کنه و شر این قضیه گردن خودش باشه.

صبا صبوحی

hamid_hr
یک شنبه 10 خرداد 1394, 12:05 عصر
فک کنم به طریقه استفاده شما در برنامه مربوط میشه
مثلا اینطوری تقسیم بندی کن
کشور
استان
شهر
خیابان اصلی
ادامه آدرس

اینطوری یه مزیت داره اینه که میتونی آمار تمام افرادی رو که تو خیابان اصلی فلان هستند رو بدست بیاری
ولی وقتی همش رو تایپ کنن مثلا خیابان شهیدصدر رو یکی با یه اسپیس میزنه و یکی بدون اسپیس که گزارش بر اساس یه خیابون اشتباه میشه

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

SabaSabouhi
یک شنبه 10 خرداد 1394, 12:30 عصر
فک کنم به طریقه استفاده شما در برنامه مربوط میشه
مثلا اینطوری تقسیم بندی کن
کشور
استان
شهر
خیابان اصلی
ادامه آدرس

اینطوری یه مزیت داره اینه که میتونی آمار تمام افرادی رو که تو خیابان اصلی فلان هستند رو بدست بیاری
ولی وقتی همش رو تایپ کنن مثلا خیابان شهیدصدر رو یکی با یه اسپیس میزنه و یکی بدون اسپیس که گزارش بر اساس یه خیابون اشتباه میشه

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

سلام دوست عزیز
باور کن نه هم‌چنین گزارشی لازم می‌شه و نه این که اگه هم لازم بشه گزارش قابل اعتنایی خواهی داشت.
بگذریم که شهید صدر خیابان نیست، اما فرض کن تو سیستمت خیابان رو جدا در نظر بگیری
شهید صدر
شهیدصدر ( نگذاشتن فاصله )
شـهید صـدر ( استفاده از «ـــ» کشیده )
شیهد صدر ( اشتباه تایپی )

با این‌ها تو گزارش‌گیری چه می‌کنی؟ اگه بخوای جوابی تو مایه‌های Soundex بهم بدی، با اطمینان بهت می‌گم که
استفاده از یه نشانی یک یا دوخطی بسیار به‌تر هست و پاسخ مطمئن‌تری هم تولید می‌شه.

من تو این همه سال که کار کردم، یه مطلب مهمی رو یاد گرفتم. اون مطلب این هست که برای چیزی که ازش استفاده نمی‌شه
کار رو پیچیده و بزرگ نکنم و زیر بار مشکلات مربوط به اون نرم.

یه زمانی برای یک نرم‌افزار بزرگ تحت وب به دلیل دستور راهنمایی و رانندگی، نشانی رو به این صورت دریافت می‌کردم.
پس از چند سال، این طرح شکست خورد و راهنمایی رو رانندگی، پذیرفت که نشانی رو یکجا دریافت کنه. من هم سریع این
تغییر رو اعمال کردم، و تمام مشکلات از بین رفت، تا هنگامی هم که من درگیر این پروژه بودم هرگز مشکلی از این بابت
پیش نیومد.

صبا صبوحی

hamid_hr
یک شنبه 10 خرداد 1394, 16:02 عصر
حرف شما کاملا درست
مشکلات داره
ولی یه نفر میخواد بدونه تو مثلا فلان نقطه شهر چقد از این کالا فروش رفته
یا چه کالایی بیشتر فروش رفته که تبلیغات اون کالا رو تو اون نقطه شهر بیشتر کنه
مثلا یه نقطه شهر کالاهای گرون قیمت فروش خیلی کمی داره. میشه رو این محصول بیشتر تو اون نقطه کار کرد و..................
از این نوع گزارشات برا تصمیمات مدیریتی خیلی میشه ترکیب کردو ساخت
اول درخواست مشتری و دوم تحلیل تیم باید دید چی هست

مهدی نان شکری
یک شنبه 10 خرداد 1394, 21:54 عصر
با سلام

معمولا طراحی نرم افزار، بحث پیچیده ای هست که نیازمند استفاده همزمان از دانش و تجربه می باشد.
من در طراحی سیستم های نرم افزاری حرف دوست عزیزم آقای صبوحی را تایید می کنم که فرمودند "نباید چیزی را ساخت که به آن نیازی نداریم" این مورد را آقای Karl Seguin با جمله "You are not going to need it" مطرح کرده اند.

برای پاسخ به این سوال باید این نکته رو در نظر گرفت: برای چه نرم افزاری می خواهیم طراحی بخش آدرس را انجام دهیم؟
به عنوان مثال اگر نرم افزار ما یک سیستمی می باشد که نیازمند مسیر بندی است نگه داری آدرس به صورت متن کار کاربر رو سخت خواهد کرد. فرض کنید در سیستم CRM مربوط به سرویس دهنده خدمات ADSL تمامی درخواست هایی که در خیابان پاکنژاد شهر تهران می باشند به آقای X واگذار شده است و سیستم می بایست به صورت اتوماتیک تسک های ارجاع شده از Callcenter را به کارتابل تکنسین مربوطه ارسال نماید. در چنین شرایطی شما با فیلد متنی کارتان کمی سخت خواهد شد (این به معنی غیر ممکن نمی باشد)

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

آقای hamid_hr هم درست می فرمایند. در مورد شرکت هایی که ارائه خدمات در محل مشتری را بر عهده دارند بر اساس آدرس تصمیم های استراتژی گرفته می شود. مثلا فرض کنید شرکتی می خواهد بداند در کدام منطقه درآمد بهتری داشته است یا تراکم ADSL در کدام مناطق بیشتر است و ...

در این صورت توصیه می شود که آدرس ها معنی دار وارد گردد هر چند هزینه برنامه نویسی زیادی در بر خواهد داشت.

ولی در سیستم هایی که واقعا نیازی به آدرس های دقیق نداریم(سیستم مالی ، فروشگاهی و ...) نیازی به افزودن هزینه تولید نرم افزار برای ایجاد امکانی که هیچ دلیلی برای آن نمی باشد و ممکن هست استفاده از نرم افزار را برای کاربران نهایی هم پیچیده تر نماید نیست.

پی نوشت 1:
این فقط نظر شخصی من هست و هیچ مرجع علمی برای آن ندارم پس زیاد جدی نگیرید!

پی نوشت 2:
در طراحی نمی توان توصیه ای را تجویز کرد و در مورد هر چیز کلی قاطعانه صحبت کرد و این کار اساس نظام مهندسی را زیر سوال می برد و باید بسته به شرایط از ابزارها و تکنیک ها استفاده کرد

موفق باشید

SabaSabouhi
دوشنبه 11 خرداد 1394, 10:48 صبح
حرف شما کاملا درست
مشکلات داره
ولی یه نفر میخواد بدونه تو مثلا فلان نقطه شهر چقد از این کالا فروش رفته
یا چه کالایی بیشتر فروش رفته که تبلیغات اون کالا رو تو اون نقطه شهر بیشتر کنه
مثلا یه نقطه شهر کالاهای گرون قیمت فروش خیلی کمی داره. میشه رو این محصول بیشتر تو اون نقطه کار کرد و..................
از این نوع گزارشات برا تصمیمات مدیریتی خیلی میشه ترکیب کردو ساخت
اول درخواست مشتری و دوم تحلیل تیم باید دید چی هست

سلام
خوب حالا صورت مساله شفاف‌تر شد.
ضمن سپاس از توضیح دوست خوبم NanShekari، می‌خوام به شما دوست عزیز یه توصیه کنم.
در صورتی که نیازت همین چیزی هست که عنوان کردی، بجای آنالیز نشانی که کار بسیار سخت و پر اشتباهی هست
شما می‌تونی یک فیلد اضافی به عنوان منطقه یا ناحیه بگیری و تفکیک مناطق خودت رو اونجا قرار بدی. دیگه نیازی به آنالیز
نشانی هم نخواهی داشت.
به‌یاد داشته باش که بسیاری از نشانی‌ها رو می‌شه متفاوت و سلیقه‌ای داد. مثلاً اگر منزل کسی بین دو خیابان اصلی باشه
می‌تونه از هر کدوم که تمایل داشت آدرس رو ثبت کنه ( مثلاً خیابان‌های شهید بهشتی و شهید مطهری ) یا این که نشانی
نزدیک یک تقاطع باشه مثل تقاطع مطهری و سهروردی. در این صورت آنالیز نشانی‌ها واقعاً سخت می‌شه.

به نظر من وقتی می‌شه با اضافه کردن یک ستون به دیتابیس این مساله رو به راحتی حل کرد، آنالیز یک نشانی کار درستی نیست.

صبا صبوحی

mahmood3d
یک شنبه 28 تیر 1394, 11:42 صبح
سلام
دیدم بحث داغه گفتم منم پیشنهاد خودم رو بگم. البته از لحاظ استاندارد شاید اصولی نباشه ولی در عمل میتونه خیلی کمک کنه.
شما می تونی آدرس رو کامل در یک فیلد بگیری و یک فیلد دیگه بسازی و منطقه رو مشخص کنی. مناطقت رو دسته بندی کن و در کنار آدرس منطقه رو هم ذخیره کن که به دو صورت می تونی استفاده کنی:
1- همون اول مناطق رو دسته بندی کن و به کاربر اجازه بده خودش منطقه آدرسش رو انتخاب کنه (اینجا همون مشکل بین دو خیابون اصلی مطرح میشه. مثلا تو ثبت آدرس خیابون x یه عده اون رو تو منطقه n ثبت می کنن و یه عده دیگه تو منطقه m)
2- بزار کاربر آدرس رو ذخیره کنه و بعدا از پشتیبان سایت بخواه که بر اساس استراتژی که دارین آدرس ها رو تو مناطق دسته بندی کنه (اینجا کمی کار اضافه میشه و باید این رو هم در نظر گرفت که چون تو اکثر سیستم ها آدرس برای هر کاربر فقط یک بار ثبت میشه و هر روز ثبت نام زیادی نداریم پس کار خیلی زیادی تولید نمیشه و مزیتش هم اینه که مثلا خیابون x رو تو هر منطقه ای که خواستین به صورت یکپارچه ذخیره می کنین.)
اینجوری هم دسته بندی آدرس ها رو می تونین اصولی داشته باشین و هم درگیر تفکیک آدرس نباشین.

پ . ن: این همون دسته بندی ای هست که شهرداری ها ازش استفاده می کنن. منطقه 1 و 2 و ... .