طراحی پایگاه داده در MySql
با سلام
چگونه یک پایگاه داده خوب در MySql طراحی کنیم ؟
منظور از خوب ، نرمالیزه کردن جدول ها ،اینکه چه تعداد جدول باید داشته باشیم و ... می باشد.
2 پاسخ
با تشکر از شما دوست عزیز
بله تقریبا با تمامی مفاهیمی که گفتید آشنا هستم .
در واقع می خواستم در یک پروژه خاص جدول های مورد نظر رو بدونم.
اگر مایل به راهنمایی بودید جزئیات پروژه ام رو در اختیارتون قرار میدم .
در هر صورت متشکرم.
سلام دوست عزیز، در مورد نرمال سازی بانک اطلاعاتی شما باید دانش این کار رو داشته باشید، ما چندین فرم مختلف نرمال سازی داریم که معمول ترین حالت نرمال سازی تا مرحله سوم هست، البته مراحل دیگه ای هم داره. بیشترین چیزی که شما باید بهش توجه کنید اینه که موجودیت ها کاملاً از هم مجزا باشن. برای مثال، فرض کنید شما قصد دارید اطلاعات یک مشتری به همراه شماره های تماس رو در یک جدول ذخیره کنید. ممکنه بیایید یک جدول طراحی کنید که اطلاعات مشتری و مثلاً 2 شماره تماس رو در اون ذخیره می کنید. در اینجا کاری که باید انجام بشه جدا سازی موجودیت شماره تماس از مشتری، ذخیره اون داخل یک جدول جداگانه و ایجاد ارتباط بین این دو جدول هست.
یکی دیگه از مواردی که باید بهش توجه کنید عدم تکرار اطلاعات در یک جدول هست، برای مثال، فرض کنید شهر محل سکونت مشتری قراره ذخیره بشه، شما ممکنه 100 مشتری داشته باشید که در شهر تهران سکونت دارن و عبارت تهران 100 بار داخل جدول شما تکرار میشه، در اینجا باید یک جدول جداگانه برای شهرها بسازید و بین جدول مشتریان و شهرها ارتباط برقرار کنید.
در مورد تعداد جداول، به طور معمول با نرمال سازی بانک اطلاعاتی، تعداد جدول ها بیشتر میشه، اما نباید همینجوری جدول ایجاد بشه و باید بر اساس منطق باشه. اصولاً تعداد جداول کاملاً بستگی به نوع بانکی که طراحی می کنید داره.
موارد دیگه ای هم هست مثل:
- هر جدول حتماً یک کلید اولیه داشته باشه
- جداول بوسیله Foreign Key با هم ارتباط داشته باشن (در صورت نیاز)
- از نوع های داده مناسب استفاده کنید و تو انتخاب ستون های NULL و NOT NULL دقت کنید.
- از Index های مناسب در جداول باید استفاده بشه
- از Check Constraint ها و Unique Constraint ها باید به صورت اصولی استفاده بشه
البته موارد خیلی بیشتر از این هاست، ولی مهمترین موارد رو سعی کردم اشاره کنم. سعی کنید یک کتاب در مورد طراحی و پیاده سازی بانک های اطلاعاتی مطالعه کنید تا بیشتر با این مفاهیم آشنا بشید.