مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ferybasafa

عضویت از 1394/06/04

مشاوره برای طراحی بهتر دیتابیس

  • چهارشنبه 21 آذر 1397
  • 00:23
تشکر میکنم

سلام

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

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

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

میخواستم ببینم شیوه ی بهتر ذخیره سازی این حالت چیه؟

1- مردم به شهر متصل بشند و استانشون از روی این رابطه حساب بشه؟

2- مردم هم به شهر و هم به استان متصل بشند تا اگر تغییراتی برای مردم یه استان یا برای یه شهر رخ داد از اون راحت تر محاسبه و ثبت بشه؟

خب همونطور که میدونید توی مورد دوم رکورد های کمتری توی دیتابیس ذخیره میشه ولی اگر بخواهیم برای یه شهر بفهمیم چه مردمی ثبت شده باید به جدول استان مراجعه بکنیم، کوئری بزنیم و ...

توی مورد اول هم که برای خوندن کوئری کمتر و ساده تری داریم ولی تعداد رکوردهای ثبت شده خیلی بیشتر خواهد شد (فرض کنید یه استانی 30 تا شهر داشته باشه!)

میخوام ببینم راه بهینه تر در یه همچین شرایطی چی میتونه باشه؟ 1 یا 2؟

اگر بازم متوجه سوال نشدید بگید تا بیشتر توضیح بدم.

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • چهارشنبه 21 آذر 1397
  • 08:03

سلام

سوال بسیار قشنگ و جالبی بود. حدود چند ماه پیش در یکی از پروژه هایم با چنین مساله ای مواجه شدم بعد کلی بالا پایین به نتیجه ی زیر رسیدم:

1- افراد را حتما به شهر وصل کنید و نیازی به اتصال آن ها به استان نیست. به این دلیل که:

    - از افزونگی دیتا جلوگیری می شود

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

2- برای اعطای ویژگی ها به استان شما باید یک مساله مهم را در نظر بگیرید: آیا تمام شهرهای یک استان از ویژگی مشترک برخوردارند؟! مثلا کل شهرهای استان اصفهان دارای یک ویژگی مشترک هستند؟! اگر جواب مثبت است پس ویژگی را به استان اعطا کن و هر فرد از طریق شهر خود، با یک کوئری ویژگی های مربوط به استان خود را هم پیدا می کند! نگران کوئری هم نباش! ما 31 اسشتان و 1148 شهر در کشور داریم! کوئری روی این تعداد رکورد شبیه یک شوخی برای Sql Server  است!!! جنگ الان روی رکوردهای بالای چند میلیارد است! کوئری روی 1148 رکورد که چیزی نیست!

3- اما اگر جواب سوال قبل منفی است مساله کمی بغرنج می شود! یعنی ممکن است یک ویژگی به استان اطلاق شود اما برخی از شهرهای ان استان مستثنا باشند! مثلا بحث مناطق محروم! استان سیستان و بلوچستان منطقه ی محروم است بغیر از شهر زاهدان! یا مثلا استان کردستان منطقه ی عملیاتی است بغیر از سنندج و سرحدآباد.

اینجا کار کمی سخت است. چندین راه وجود داره! یا استفاده از تریگر یا استفاده از جدول مجزا!

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

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

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)