دوشنبه, ۳۱ اردیبهشت, ۱۴۰۳ / 20 May, 2024
مجله ویستا

اصول طراحی بانک های اطلاعاتی


اصول طراحی بانک های اطلاعاتی
طراحی پایگاه داده و ایجاد نمودار ارتباط موجودیت ها (ERD) یكی از مهمترین بخش های چرخه حیات توسعه یك نرم افزار است كه در برخی موارد از آن به عنوان مهمترین بخش نیز نام برده می شود. مدل صحیح و به هنگام (UP TO Date) اطلاعات می تواند به عنوان مهمترین ابزار مرجع برای مدیران بانك اطلاعاتی (DBAS) پیاده كنندگان نرم افزار و سایر اعضاء تیم توسعه دهنده نرم افزار باشد. فرآیند ایجاد مدل داده به تیم توسعه دهنده كمك می كند تا به پرسش های مطرح شده توسط كاربران نهائی سیستم پاسخ دهند . همچنین طراحی كارا و موثر پایگاه داده به تیم توسعه دهنده این امكان را می دهد تا سیستم را از همان ابتدا در فرم مناسب پیاده سازی نمایند. ساخت سیستم با كیفیت فوق الذكر این امكان را به تیم توسعه دهنده خواهد داد تا زمان كلی انجام پروژه را كاهش دهند كه در واقع این امر موجب كاهش هزینه های توسعه پروژه نیز خواهد شد.
طراحان خوب و خبره بانك های اطلاعاتی مبانی و اصول نرمال سازی پایگاه داده را همواره در خلال طراحی به خاطر داشته و آن را به كار خواهند گرفت نرمال سازی فرآیندی در خلال طراحی پایگاه داده است كه با چهار هدف عمده ذیل دنبال می شود:
▪ به حداقل رسانی افزونگی اطلاعات
▪ به حداقل رسانی تغییر ساختار اطلاعات
▪ به حداقل رسانی I/O سرور به منظور كاهش تعداد تراكنش ها (Transactions)
▪ و در نهایت حفظ یكپارچگی اطلاعات
برای طراحی بانك اطلاعاتی نرم افزار و مدل سازی آن می بایست اصول و تكنیك های ذیل را مد نظر داشت و از آنها استفاده نمود. موجودیت (Entity) مجموعه ای از چیزهائی است كه مربوط به بانك اطلاعاتی سیستم مورد نظر می باشد و یا به تعبیر دیگر هر آنچه كه می خواهید در سیستم راجع به آن اطلاعات جمع آوری و نگهداری نمائید را شامل می شود . در مدل فیزیكی موجودیت تبدیل به جدول (Table) می شود.
خصلت (Attribute) یكی از مشخصه های توصیفی و یا مقداری موجودیت می باشد. در مدل فیزیكی یك خصلت به یك ستون (Column) و یا فیلد (Field) تبدیل می شود. كلید اصلی (Primary Key)خصلت و یا تركیبی از خصلت ها در یك موجودیت است كه تضمین كننده یكتا بودن هر رخداد از موجودیت می باشد. خصلت یا خصلت های كلید اصلی نمی توانند فاقد ارزش باشند (NULL) و معمولا كمتر تغییر می كنند. معمولا سعی می شود جهت انتخاب كلید اصلی از خصلت هایی استفاده شود كه كارائی بیشتری داشته و بهترین معرف موجودیت باشند (كارائی یك فیلد از نوع integerبه مراتب بیشتر از فیلدی از نوع Charاست). در صورتیكه نتوان در یك موجودیت خصلت یا خصلت هائی برای كلید اصلی شدن یافت آنگاه كلیدهای دستی برای این كار را ایجاد می كنیم كه به آنها كلید Artificial می گویند. ارتباطRelationship)) ارتباط منطقی بین دو موجودیت است. یك ارتباط در واقع نشان دهنده قوانین كاری حاكم بر پروژه و اطلاعات آن است كه معمولا» به صورت جملات فعلی توصیف می گردد. مثل ارتباط بین موجودیت كارمند و دپارتمان كه به صورت جمله ذیل بیان می شود: «كارمند شاغل است در دپارتمان» در این مثال ارتباط بین موجودیت كارمند و دپارتمان با جمله «شاغل است» توصیف میگردد.
▪ دو نوع ارتباط می تواند بین موجودیت ها وجود داشته باشد:
۱) ارتباط یك به چند (One To Many) در این نوع ارتباط هر رخداد از موجودیت والد با چندین رخداد در موجودیت فرزند ارتباط دارد. به عنوان مثال چندین كارمند می توانند در یك دپارتمان شاغل به كار باشند.
۲) ارتباط چند به چند (Many To Many). در این نوع ارتباط چند رخداد از یك موجودیت با چند رخداد از موجودیت دیگر ارتباط دارند. به عنوان مثال اگر یك كارمند بتواند در چند دپارتمان شاغل به كار باشد آنگاه ارتباط بین موجودیت كارمند و دپارتمان یك ارتباط چند به چند است.
ارتباط چند به چند در طراحی پایگاه داده پذیرفته شده نیست چراكه علاوه بر افزونگی اطلاعات موجب عدم یكپارچگی اطلاعات نیز می گردد از اینرو باید این ارتباط طبق فرم چهارم نرمال سازی تبدیل به دو ارتباط یك به چند شود. همانطور كه در مقاله نرمال سازی بانك های اطلاعاتی اشاره گردید برای حل این مشكل كافی است یك موجودیت واسط كه به آن موجودیت XREF می گویند ایجاد و خصلت های كلید اصلی هردو موجودیت را به این موجودیت رابط منتقل نمود. با این عمل هریك از موجودیت های اصلی به عنوان والد این موجودیت رابط تلقی شده و یك ارتباط یك به چند بین آنها برقرار خواهد شد. در نتیجه یك ارتباط چند به چند تبدیل به دو ارتباط یك به چند خواهد شد. لازم به ذكر است كه بسیاری از سیستم های مدیریت بانك های اطلاعاتی رابطه ای (MS SQL Server) از ارتباط چند به چند پشتیبانی نمی كنند.
كلید خارجی (Foreign Key). هرگاه خصلت(های) كلید اصلی موجودیت والد در موجودیت فرزند وجود داشته باشد (بر اساس ارتباط تعریف شده بین دو موجودیت) آنگاه این خصلت ها در موجودیت فرزند كلید خارجی نامیده می شوند. در واقع نمی توان هیچ رخدادی در موجودیت فرزند (كه دارای كلید خارجی است) ایجاد نمود كه رخداد مربوط به آن (بر اساس محتوای خصلت كلید خارجی) قبلا در موجودیت والد ایجاد نشده باشد. آنگونه كه از توصیف فوق استنباط می شود كلید خارجی تضمین كننده یكپارچگی اطلاعات در داخل پایگاه داده است چرا كه باعث می شود كه هیچ فرزند بدون والدی در بانك اطلاعاتی نداشته باشیم.
● ارتباط(Relationship) بین دو موجودیت به دو مدل ذیل دسته بندی می گردد:
▪ ارتباط تعریف شده (identifying Relationship). اگر كلید اصلی جدول والد بخشی (یا تمام) از كلید اصلی جدول فرزند باشد و یا به تعبیر دیگر بخشی از كلید اصلی موجودیت فرزند كلید خارجی نیز باشد در این حالت ارتباط مابین این دو موجودیت از نوع تعریف شده است.
▪ ارتباط تعریف نشده(Non-identifying Relationship) برخلاف مورد فوق اگر كلید اصلی جدول والد در جدول فرزند وجود داشته باشد اما نه به عنوان بخشی از كلید اصلی آن و صرفا به عنوان یك خصلت غیر كلید در این حالت ارتباط بین این دو موجودیت از نوع تعریف نشده می باشد. ارتباط تعریف نشده خود دارای دو حالت متفاوت به شرح ذیل است: mandatory non-identifying relationship ، زمانی است كه خصلت كلید خارجی در موجودیت فرزند نتواند فاقد ارزش باشد (Not Allow NULL)non-mandatory-non-identifying relationship، زمانی است كه خصلت كلید خارجی در موجودیت فرزند بتواند فاقد ارزش باشد(Allow NULL)Cardinality به ما در فهم بیشتر ماهیت ارتباط مابین موجودیت والد و فرزند كمك می كند. جهت تشخیص Cardinality یك ارتباط كافی است به سؤال ذیل پاسخ داده شود:
«چه تعداد رخداد از موجودیت فرزند مرتبط است با هر رخداد از موجودیت والد؟»
● چهار نوع Cardinality مختلف به شرح ذیل وجود دارد:
One To Zero or Many به این معنی كه هر رخداد از موجودیت والد با هیچ و یا چند رخداد از موجودیت فرزند مرتبط است.
به این نوع Common Cardinality می گویند.
▪ One To one or Manyبه این معنی كه هر رخداد از موجودیت والد با حداقل یك و یا چند رخداد از موجودیت فرزند مرتبط است. به این نوع P Cardinality می گویند.
▪ One To Zero or oneبه این معنی كه هر رخداد از موجودیت والد با هیچ و یا تنها یك رخداد از موجودیت فرزند مرتبط است. به این نوع Cardinality Z می گویند.
▪ One Exactiy N به این معنی كه هر رخداد از موجودیت والد باید با N رخداد از موجودیت فرزند مرتبط باشد. به این نوع N Cardinality می گویند.
فریما سادات میری
منبع : روزنامه جوان