طراحی ساختیافته و دقیق
پایگاههای داده یکی از مولفههای مهم برنامههای کاربردی هستند. آنها میزبان تمام دادههای مهمی هستند که برای اجرای برنامههای کاربردی مورد نیاز است. هنگام کار با برنامههای کاربردی همواره یک یا چند پایگاه داده وجود دارند که در پشت صحنه کار میکنند تا برنامهها بهترین عملکرد را ارائه دهند. میتوانید پایگاههای داده را شبیه به مخازن بزرگی تصور کنید که اطلاعات را به شکل مرتب و ساختاریافته نگهداری میکنند تا دسترسی و جستوجو در آنها با سهولت انجام شود. به همین دلیل، طراحی درست پایگاههای داده یکی از مراحل مهم در فرآیند توسعه نرمافزار است. در این مقاله با چیستی و چرایی طراحی درست پایگاه داده و اصولی که کمک میکنند یک پایگاه داده خوش ساخت را طراحی کنیم آشنا خواهیم شد.
چرا طراحی پایگاه داده اهمیت دارد؟
یک فروشگاه آنلاین لباس را تصور کنید که قصد دارید از میان البسه این فروشگاه پیراهنی را سفارش دهید. فرآیند سفارش پیراهن از این وبسایت ممکن است ساده به نظر برسد، اما در پسزمینه کارهای زیادی انجام میشود تا شما بتوانید لباس مدنظر خود را پیدا کنید. هنگامی که برای اولین بار به وبسایت مراجعه میکنید، فهرستی از دستهبندی محصولات و تمامی محصولات موجود، قیمت آنها، اندازههای موجود، رنگها و سایر اطلاعات مرتبط را مشاهده میکنید.
وبسایت این دادهها را از پایگاه دادهای که اطلاعات مذکور را ذخیره میکند، بازیابی میکند. هنگامی که کالای مورد نظر خود را انتخاب میکنید و اقدام به خرید آن میکنید، وبسایت از شما مشخصات فردی، آدرس گیرنده و جزئیات پرداخت را درخواست میکند و در نهایت سفارش شما را تایید میکند. در این مرحله، اطلاعات جدیدی از جانب شما که خریدار هستید مثل مشخصات فردی (هویتی)، جزئیات سفارش، خرید، پرداخت و.... تولید میشوند که به پایگاه داده افزوده خواهند شد.
طراحی پایگاه داده به این دلیل اهمیت دارد که برای ساخت برنامههای نرمافزاری گسترشپذیر و به ویژه برنامههایی که ارتباط مستقیمی با کاربر دارند ضروری است که اطلاعات در یک مکان واحد و متمرکز ذخیرهسازی شوند. هنگامی که قصد طراحی پایگاه داده را دارید، اولین کاری که باید انجام دهید، انتخاب یک سامانه مدیریت پایگاه داده (DBMS) است. سیستم مدیریت پایگاه داده نرمافزاری است که کاربر نهایی، برنامههای کاربردی و پایگاه داده برای ذخیره و پردازش دادهها با آن در ارتباط هستند. امروزه، صدها نرمافزار مدیریت پایگاه داده در دسترس هستند که میتوانید از میان آنها گزینه مناسب را انتخاب کنید، البته دقت کنید که همه آنها رایگان نیستند.
بهطور مثال، گزینههایی مثل Microsoft SQL Server تجاری هستند و برای استفاده از آنها بسته به نوع کاربری باید لایسنس مربوطه را خریداری کنید. علاوه بر این، میتوانید از میان نرمافزارهای پایگاه داده رایگان و متنبازی که در دسترس هستند گزینه مناسب با پروژه را انتخاب کنید. بهطور مثال، MySQL یکی از محبوبترین گزینهها در این زمینه است.
گام بعدی این است که پایگاه داده خود را به گونهای طراحی کنید که پاسخگوی نیازهای شما باشد. در این مقاله با 10 تکنیک طراحی اصولی پایگاههای داده آشنا خواهید شد که کمک میکنند یک طراحی منسجم، بهینه و با بالاترین عملکرد را انجام دهید.
10 مورد از بهترین تکنیکهای طراحی پایگاههای داده
1. دیدگاه همه را در نظر بگیرید
برای طراحی یک پایگاه داده خوب، توجه به دیدگاه تمامی ذینفعان ضروری است. اما ذینفعان چه افرادی هستند؟ کاربران نهایی، مدیران ارشد اجرایی سازمان، کارمندان و حتا سرویسهای تحت شبکه یا برنامههای کاربردی در گروه ذینفعان قرار میگیرند.
کاربران نهایی: افرادی هستند که به شکل غیرمستقیم از پایگاه داده استفاده میکنند. بهطور مثال، هنگام ورود به یک فروشگاه آنلاین، کادر جستوجویی در اختیارتان قرار میگیرد که اجازه میدهد کالای موردنظر خود را جستوجو کنید. هنگامی که عبارت مدنظر را وارد کرده و کلید اینتر را فشار میدهید، جستوجویی در پایگاه داده انجام شده و نتیجه به شما نشان داده میشود.
مدیران ارشد اجرایی سازمان: افرادی هستند که پایگاه داده باید با هدف پاسخگویی به نیازهای تجاری آنها طراحی شود.
کارمندان: افرادی هستند که در بخشهایی مثل حسابداری، فروش، کارگزینی و غیره کار میکنند و برای انجام وظایف خود دائما به پایگاه داده متصل شده، اطلاعاتی در آن مینویسند، اطلاعات را ویرایش یا حذف میکنند.
سرویسها و برنامههای کاربردی: ابزارهایی هستند که برای انجام فعالیتهای خود در پسزمینه به پایگاه داده متصل میشوند. بهطور مثال، هنگامی که یک برنامه یا سرویس هواشناسی را باز میکنید، این سرویس اطلاعات مورد درخواست را از پایگاه داده استخراج کرده و نشان میدهد.
قبل از ساخت یک پایگاه داده بهتر است، درخواستهای این ذینفعان را جمعآوری کنید تا بدانید آنها از یک پایگاه داده چه انتظاراتی دارند و چقدر در کار با پایگاه داده مهارت دارند. رویکرد فوق به شما این ایده را میدهد که بدانید پایگاه داده شما باید بر مبنای چه معماری طراحی شود، سطح پیچیدگی آن به چه ترتیبی است و آیا کاربران برای کار با ویژگیهای کاربردی پایگاه داده به آموزش نیاز دارند یا خیر. هر یک از پایگاههای داده امروزی، قابلیتهای خوبی در اختیار کاربران قرار میدهند، بهطور مثال، MongoDB قادر است، کارهای پیچیده را ساده کند و اجازه دهد یک پایگاه داده کارآمد را توسعه دهید.
2. پایگاه دادهای متناسب با نیازهای کاری انتخاب کنید
انواع مختلفی از پایگاههای داده وجود دارد و انتخاب نوع مناسب بخش مهمی از طراحی پایگاه داده است. شما میتوانید پایگاههای داده را به دو شکل طبقهبندی کنید.
در حالت اول، میتوانید بر مبنای زبان پرسوجو (Query) که یک پایگاه داده برای تعریف و دستکاری دادهها از آن استفاده میکند، پایگاههای داده را طبقهبندی کنید. پایگاههای دادهای که از SQL استفاده میکنند در ارتباط با دادههای ساختاریافته استفاده میشوند، در حالی که پایگاههای داده NoSQL به دلیل ویژگیهایی مانند مقیاسپذیری، انعطافپذیری و سرعت بیشتر، در کاربردهایی مثل یادگیری ماشین، تجزیه و تحلیل وب و اینترنت اشیا عملکرد بهتری دارند.
راه دیگر برای طبقهبندی پایگاههای داده بر مبنای مدلهای داده است. در این حالت، چهار نوع پایگاه داده به نامهای پایگاه داده رابطهای (Relational Database)، پایگاه داده سلسله مراتبی (Hierarchical Database)، پایگاه داده شبکه (Network Database) و پایگاه داده شیگرا (Object-Oriented Database) وجود دارد.
با این توصیف، باید بگوییم، اولین قدم شما به عنوان یک طراح پایگاه داده، تحقیق در مورد انواع مختلف پایگاههای داده، موارد استفاده و مزایا و معایب آنها است. تنها در این حالت است که میتوانید گزینهای که بیشترین هماهنگی با نیازهای کاری دارد را انتخاب کنید.
3. جداول و ستونها را با الگوی ثابت نامگذاری کنید
هنگام تعریف عناصر دادهای و برچسبگذاری جداول و ستونها از یک الگوی ثابت و مشخص استفاده کنید. رویکرد فوق به شما کمک میکند ماهیت اطلاعاتی که قرار است به جداول و ستونها وارد شوند را بهتر درک کنید. یکی از بهترین روشها برای نامگذاری جداول و ستونها، اختصاص نامی ساده است که توصیفکننده دادههای موجود است. به عنوان مثال، ستونی که قرار است نام مشتریان را داشته باشد، بهتر است با عبارتی مثل "CustomerName" برچسبگذاری شود.
همچنین، پیشنهاد میشود از نامهای جمع (مانند Customer Name ) ختصارات (مانند CN) خودداری کنید و از فاصله در نام (مانند Customer Names) استفاده نکنید. اگر بر مبنای قوانین این چنینی کار کنید، استفاده از پایگاه داده برای کاربران و توسعهدهندگانی که قصد استفاده از پایگاه داده را دارند سادهتر خواهد بود.
4. نرمالسازی موضوع مهمی است که نباید نادیده گرفته شود
نرمالسازی یک پایگاه داده به معنای سازماندهی اطلاعات پایگاه داده با هدف پیشگیری از بروز مشکل دادههای تکراری و افزونگی است. به زبان ساده، نرمالسازی به معنای توزیع دادهها در چند جدول کوچکتر مرتبط به جای ذخیره همه دادهها در یک جدول واحد و بزرگ است.
اگر در نظر دارید پایگاه داده عملکرد قابل قبولی داشته باشد، باید از تکنیک نرمالسازی استفاده کنید. دقت کنید که نرمالسازی سطوح مختلفی دارد و اگر بیش از اندازه به فکر نرمالسازی باشید و سعی کنید دادهها در جداول بسیار کوچکتر ذخیرهسازی و توزیع شوند، همه چیز به سرعت به سمت پیچیدگی خواهد رفت. امروزه سطوح مختلفی از نرمالسازی مثل 1NF، 2NF، 3NF، BCNF و 5NF وجود دارند که نحوه استفاده از هر سطح به نوع پروژه و برنامه کاربردی که قرار است با پایگاه داده در ارتباط باشد، بستگی دارد. البته دقت کنید سطوح بالاتر نرمالسازی به ندرت استفاده میشوند، زیرا نیازمند محاسبات پیچیدهای هستند که بار محاسباتی زیادی به پردازنده مرکزی سرور وارد میکنند.
5. مستندسازی طراحی پایگاه داده مهم است
متاسفانه بیشتر توسعهدهندگان و طراحان پایگاه داده علاقهای به مستندسازی ندارند، زیرا زمانبر است و باید جزییات به دقت تشریح شوند. با اینحال، به یاد داشته باشید، مستندسازی یکی از ملزومات مهم در هنگام طراحی پایگاه داده است، زیرا به تمام جزئیات کوچک اشاره دارد. از نکات مهمی که باید در مستندات طراحی پایگاه داده قید شوند باید به دستورالعملها، نمودارهای ER مخفف Entity–relationship، رویههای ذخیره شده و سایر اطلاعات مرتبط اشاره کرد. مستندات باید اطلاعات کافی در اختیار برنامهنویسان و کاربران نهایی قرار دهند تا بتوانند نحوه استفاده از آنرا درک کنند.
6. حفظ حریم خصوصی موضوع مهمی است که باید به آن دقت کنید
در بیشتر موارد، اطلاعات ذخیره شده در پایگاه داده محرمانه هستند و حفظ حریم خصوصی اهمیت بسیار زیادی دارد. برای آنکه به بهترین شکل از دادههای محرمانه محافظت کنید، باید رمزهای عبور را به شکل رمزگذاری شده در پایگاه داده ذخیرهسازی کنید، دسترسی به پایگاه داده را با استفاده از مکانیزم احراز هویت محدود کنید و از سروری متفاوت از سروری که میزبان برنامه مدیریت پایگاه داده است، استفاده کنید.
رویکرد فوق از دادههای شما در برابر حمله و نقض حریم خصوصی محافظت میکنند. یکی از مشکلاتی که متاسفانه برخی از وبسایتهای ایرانی دارند، ذخیرهسازی همه پایگاههای داده روی یک سرور است. بهعنوان تجربه شخصی، پیشنهاد میکنم در صورت امکان از پایگاه داده جداگانهای برای نامهای کاربری و رمزهای عبور استفاده کنید و این پایگاه داده را روی سرور جداگانهای از پایگاههای دادهای که وبسایت با آن در تعامل است قرار دهید. تکنیک فوق باعث میشود اگر وبسایت با یک حمله سایبری روبرو شد، هکرها موفق نشوند به اطلاعات حساس دسترسی پیدا کنند.
7. به نیازهای بلندمدت فکر کنید
طراحی پایگاه داده خوب باید مبتنی بر اصل مقیاسپذیری باشد، به این معنا که بدون مشکل توانایی پردازش بارهای کاری سنگین را داشته باشد و در صورت افزایش استفاده، پایگاه داده در وضعیت پایدار قادر به خدمترسانی باشد. کسب و کارهایی که تصور میکنند، ممکن است تغییراتی در حجم کاری آنها به وجود آید، مهم است در هنگام طراحی پایگاه داده به این مسئله دقت کنند. به عنوان مثال، اگر یک وبسایت تجارت الکترونیک پیشبینی میکند تعداد بازدیدکنندگان در ماهها یا مناسبتهای خاص بیشتر میشود، باید در فرآیند طراحی پایگاه داده به این نکته دقت کند تا پایگاه داده توانایی خدمترسانی به بازدیدکنندگان مضاعف را داشته باشد.
8. از رویههای ذخیره شده (Stored Procedures) استفاده کنید
عدم استفاده از روالها/رویههای ذخیره شده (Stored Procedures) یک اشتباه رایج در طراحی پایگاه داده است. رویههای ذخیره شده کدهای آماده استفادهای هستند که برای تغییر دادهها و ویرایش آنها مورد استفاده قرار میگیرند. به عنوان مثال، اگر یک پرسوجوی SQL وجود دارد که اغلب از آن استفاده میکنید، برای آسانتر کردن کار خود، میتوانید به جای نوشتن بارها و بارها، آن کوئری را در یک رویه ذخیره شده کدنویسی کنید. هنگامی که رویه ذخیره شدهای داشته باشید، قادر هستید به سادگی آنرا همراه با کوئری SQL اجرا کنید. مزیت مهم دیگری که رویههای ذخیره شده دارند، پیشگیری از بروز حملههای امنیتی مثل تزریق کد است، زیرا مانع از آن میشوند تا کدهای هکرها به طور مستقیم اجرا شوند. در این حالت، رویه ذخیره شده بر مبنای پارامترهایی، اطلاعات را از فیلدهای ورودی دریافت میکند، در نتیجه اگر اطلاعات ورودی مغایر با خطمشیها باشند، اجرا نخواهند شد.
9. برای مدلسازی و طراحی پایگاه داده وقت بگذارید
یک نکته حرفهای که باید هنگام طراحی یک پایگاه داده به آن دقت کنید، صرف زمان و تلاش برای مدلسازی و طراحی پایگاه داده است. به طور معمول، توسعهدهندگان برای صرفهجویی در وقت و تمرکز بر سایر جنبههای مهمتر توسعه نرمافزار، بی تفاوت از کنار این موضوع عبور میکنند. با این حال، مدلسازی و طراحی اولیه پایگاه داده برای اطمینان از عملکرد درست آن ضروری است.
نوشتن طرحواره (Schema) روی کاغذ به طراح اجازه میدهد تا عیبهای طراحی را خیلی سریع پیدا کند. تصحیح خطاها با استفاده از مداد روی کاغذ، به مراتب سادهتر از یک پایگاه داده SQL است که روی یک سامانه پیادهسازی شده است. علاوه بر این، میتوانید طرح کاغذی را به یک محیط دیجیتالی منتقل کنید تا همکاران دیگر توانایی کار روی آنرا داشته باشند. یکی از بهترین گزینهها در این زمینه نمودارهای UML است. شما باید طرح خود را با افراد دیگر چند مرتبه بررسی کنید، زیرا همواره این احتمال وجود دارد تا برخی جزئیات نادیده گرفته شده باشند یا فراموش کرده باشید یک ویژگی سفارشی را به پایگاه داده اضافه کنید.
10. طراحی خود را آزمایش کنید
آزمایش یک مرحله بسیار مهم در زمان طراحی پایگاه داده است که اغلب نادیده گرفته میشود یا به شکل شتابزدهی انجام میشود. شما باید قبل از انتشار نهایی پروژه زمانی را صرف آزمایش کامل طراحی پایگاه داده خود کنید تا مطمئن شوید که تمام الزامات در طراحی اعمال شدهاند و عملکرد پایگاه داده در وضعیت قابل قبولی قرار دارد.
کلام آخر
در یک پروژه دادهمحور، طراحی درست پایگاه داده عامل موفقیت است که باید در طول فرآیند توسعه به آن توجه شود. در هنگام طراحی پایگاه داده باید به موضوعات مهمی مثل برنامهریزی برای پاسخگویی به الزامات مهم، انتخاب نوع مناسب پایگاه داده، استفاده از نامها و برچسبهای یکپارچه ، نرمالسازی، مستندسازی و آزمایش دقت کنید تا یک پایگاه داده کارآمد را طراحی کنید.
💎 پیشنهاد می کنیم برای انتخاب نرم افزار طراحی دیاگرام دیتابیس خود مقالهی 9 نرمافزار برتر برای طراحی دیتابیس را مطالعه کنید.