ورود

View Full Version : تحلیل در تعداد جداول دیتابیس



aradpc
شنبه 30 اردیبهشت 1396, 18:58 عصر
با سلام و عرض خسته نباشید خدمت دوستان

یه سوال در مورد نحوه تحلیل:

برای مثال میخواییم رابطه بین کشور و شهر رو تحلیل کنیم و جداولش رو بسازیم.

خوب هر کشور میتونه چنتا شهر داشته باشه ولی یک شهر نمیتونه چنتا کشور داشته باشه.

تا اینجا نتیجه گرفتیم که رابطه یک به چنده.

کشور ---> شهر

پس یه جدول میسازیم برای کشور که فیلدهاش عبارت است از: کد و نام
یه جدول هم برای شهر که فیلدهاش عبارت است از: کد و نام و کد کشور

تا اینجا همه چی درسته.

یه رکورد در جدول کشور ثبت میکنیم با کد 1 و نام ایران

در جدول شهر هم یه رکورد ثبت میکنیم با کد 1 نام تهران و کد کشور هم 1

حالا وقتی کشورها زیاد میشن پس شهرها هم زیاد میشن دیگه.

آیا این راه حل زیر درسته؟؟؟؟؟؟؟؟؟؟؟

برای هر کشور یه جدول شهر ساخته بشه.

یعنی یه جدول داریم که کل کشورها توش ریخته میشه. حالا برای کشور ایران بیاییم یه جدول جدا بسازیم: برای مثال

جدول کشور: tbl_country
رکورد:
1 ایران
2 ترکیه
3 تگزاس

الان ما 3 تا کشور داریم.

یعنی 3 تا جدول شهر باید ساخته بشه:
جدول شهرهای ایران tbl_city_iran
جدول شهرهای ترکیه tbl_city_turk
جدول شهرهای تگزاس tbl_city_tegzas

آیا این تحلیل خوبه یا اینکه همه شهرها توی یه جدول ریخته بشه؟

با تشکر از دوستان

aradpc
یک شنبه 31 اردیبهشت 1396, 09:22 صبح
از دوستان کسی نیست نظری پاسخی چیزی بده.

alireza_s_84
یک شنبه 31 اردیبهشت 1396, 11:22 صبح
با سلام و عرض خسته نباشید خدمت دوستان

یه سوال در مورد نحوه تحلیل:

برای مثال میخواییم رابطه بین کشور و شهر رو تحلیل کنیم و جداولش رو بسازیم.

خوب هر کشور میتونه چنتا شهر داشته باشه ولی یک شهر نمیتونه چنتا کشور داشته باشه.

تا اینجا نتیجه گرفتیم که رابطه یک به چنده.

کشور ---> شهر

پس یه جدول میسازیم برای کشور که فیلدهاش عبارت است از: کد و نام
یه جدول هم برای شهر که فیلدهاش عبارت است از: کد و نام و کد کشور

تا اینجا همه چی درسته.

یه رکورد در جدول کشور ثبت میکنیم با کد 1 و نام ایران

در جدول شهر هم یه رکورد ثبت میکنیم با کد 1 نام تهران و کد کشور هم 1

حالا وقتی کشورها زیاد میشن پس شهرها هم زیاد میشن دیگه.

آیا این راه حل زیر درسته؟؟؟؟؟؟؟؟؟؟؟

برای هر کشور یه جدول شهر ساخته بشه.

یعنی یه جدول داریم که کل کشورها توش ریخته میشه. حالا برای کشور ایران بیاییم یه جدول جدا بسازیم: برای مثال

جدول کشور: tbl_country
رکورد:
1 ایران
2 ترکیه
3 تگزاس

الان ما 3 تا کشور داریم.

یعنی 3 تا جدول شهر باید ساخته بشه:
جدول شهرهای ایران tbl_city_iran
جدول شهرهای ترکیه tbl_city_turk
جدول شهرهای تگزاس tbl_city_tegzas

آیا این تحلیل خوبه یا اینکه همه شهرها توی یه جدول ریخته بشه؟

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

aradpc
دوشنبه 01 خرداد 1396, 14:17 عصر
ممنون بابت پاسخ.

پس برای اطلاعات زیاد راه حل چیست؟

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

مثلا اگر کل شهرهای دنیا رو یک میلیون بزاریم و شهرهای ایران رو 100 عدد در روشی که کل شهرها داخل یک جدول باشه برای جستجو تهران باید میون یک میلیون رکرود جستجو انجام بشه ولی در روشی که بنده عرض کردم برای جستجوی تهران فقط کافیه بین 100 رکورد جستجو انجام بشه.

اگر نظری دارین ممنون میشم بگید

alireza_s_84
دوشنبه 01 خرداد 1396, 14:32 عصر
ممنون بابت پاسخ.

پس برای اطلاعات زیاد راه حل چیست؟

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

مثلا اگر کل شهرهای دنیا رو یک میلیون بزاریم و شهرهای ایران رو 100 عدد در روشی که کل شهرها داخل یک جدول باشه برای جستجو تهران باید میون یک میلیون رکرود جستجو انجام بشه ولی در روشی که بنده عرض کردم برای جستجوی تهران فقط کافیه بین 100 رکورد جستجو انجام بشه.

اگر نظری دارین ممنون میشم بگید
اطلاعات در یک جدول بصورت درخت متوازن (Binary Tree) ذخیره میشن. همچنین از ایندکس گذاری برای مرتب سازی و جستجوی سریعتر استفاده میشه. اینطور نیست که اگه شما 10 میلیون رکورد داشته باشه عین 10 میلیون جستجو بشه. معمولا مرتبه جستجوی log n هست و بسیار بهینه.