طراحی پایگاه داده را از کجا شروع کنیم
طراحی پایگاه داده چیست
در حال حاضر نیاز به پایگاه داده از هر زمانی بیشتر احساس میشود. سایتهای اینترنتی و اپلیکیشنها بر مبنای استفاده از دیتابیسها شکل میگیرند. به همین دلیل طراحی پایگاه داده به یک ضرورت برای بسیاری از کسبوکارهای جدید و خصوصا استارتاپها تبدیل شده است. در این مطلب میخواهیم نیاز موجود برای یک پایگاه داده خوب را تشریح کرده و سپس انواع پایگاه داده و سیستمهای مدیریت مختلف آن را معرفی کنیم. در نهایت هم مراحل دستهبندی اطلاعات و تبدیل آنها به یک پایگاه داده SQL را به شما نشان خواهیم داد. در مرحلهی اول باید طراحی پایگاه داده چیست متوجه شویم.
دلیل نیاز به طراحی پایگاه داده چیست
پایگاه داده یک مجموعه منظم از دادههاست که در یک سیستم کامپیوتری ذخیره میشود. دسترسی به این دادهها برای کاربر از طریق نرمافزاری با نام DBMS یا Database Management System صورت میگیرد. دنیای امروز بر پایه عملکرد سیستمهای دیجیتالی و کسبوکارهای الکترونیک شکل گرفته است. برای مثال در ایران «اسنپ»، «دیجیکالا» و «دیوار» نقش مهم و غیرقابل انکاری در زندگی مردم پیدا کردهاند. از طرف دیگر استارتاپهای بیشماری همهروزه بر بستر اینترنت در حال شکلگیریاند.
پایگاه داده در طراحی بکاند یا درونی سایتها و اپلیکیشنها نقش اساسی دارد. لیست اجناس و مشخصات کاربران دو نمونه مهم از کاربرد پایگاه داده برای کسبوکارهای الکترونیکاند. دادهها در قالب پایگاه داده ثبت شده و در زمان نیاز، از طریق برنامهنویسی با چندخط کد فراخوانده شده و روی صفحه سایت به نمایش درمیآیند. برای همین طراحی پایگاه داده به بخشی مهم و کلیدی از فرآیند راهاندازی کسبوکارهای الکترونیک تبدیل شده است.
انواع سیستم های مدیریت پایگاه داده
گفتیم که پایگاه داده مجموعه منظمی از دادههاست که روی کامپیوتر ذخیره میشود. دسترسی کاربر به اطلاعات موجود در پایگاه داده از طریق DBMSها یا سیستمهای مدیریت پایگاه داده ممکن میشود. Database Management System که بهاختصار DBMS نامیده میشود، نرمافزاری است که کار ذخیرهسازی و سازماندهی دادهها را بر عهده دارد. انواع سیستم مدیریت پایگاه داده عبارتند از:
- سلسله مراتبی
- شبکهای
- رابطهای
- شیگرا
- دیتابیس گراف
- مدل ER
- دیتابیس سند
- دیتابیس NoSQL
مدل سلسله مراتبی
در این مدل از مدیریت پایگاه داده، دادهها در شکل گرههای والد/فرزندی ذخیره میشوند. هر گره جدا از دادههای مربوط به خود، اطلاعاتی درباره شرایط والد/فرزندی خود و ارتباطش با گرههای دیگر را در خود دارد. در این مدل دادهها به شکل درختی ذخیره میشوند. هر شاخه والد میتواند چند فرزند داشته باشد اما هر فرزند فقط یک والد دارد.
از این مدل (که در دهه 60 میلادی توسط IBM طراحی شد) برای مدیریت داده در سیستمهای ارتباطی و بانکی استفاده میشود. ارتباط یک به چند در بین گرههای والد و فرزند و نبود امکان ارتباط بین فرزندان باعث کمبود انعطافپذیری در مدل سلسلهمراتبی است. امتیاز اصلی این مدل به سرعت بالا و عملکرد دقیق آن مربوط میشود.
مدل شبکهای
مدل مدیریت پایگاه داده شبکهای، شکلی شبیه به تار عنکبوت دارد. این مدل تا حدودی شبیه مدل سلسلهمراتبی است، با این تفاوت که در این مدل حالت والد و فرزندی وجود نداشته و هر نقطه میتواند با تعدادی از نقاط دیگر در ارتباط باشد. کاربرد اصلی این شبکه در مدیریت سیستم اطلاعاتی برای شرکتهای بزرگ کامپیوتری است. والد در مدل شبکهای «اشغالکننده» و فرزند «عضو» نام دارد. روابط بین این دو چند به چند است و محدودیتی در ارتباط با یکدیگر ندارند. مبدع این مدل چارلز باخمن است.
مدل رابطهای
معروفترین و پراستفادهترین نوع مدیریت پایگاه داده که زبان SQL برای دسترسی به آن طراحی شده است. در این مدل دادهها در قالب جدولهایی ذخیره میشوند. هر ستون شامل یک ویژگی و هر طرح شامل یک رکورد است. رکورد شامل اطلاعاتی بوده که در مورد یک پدیده و ویژگیهای مختلف آن به دست آمده است. برای مثال در ستونها «نام»، «سن»، «جنسیت» و «پرداختی» بوده و در هر سطر را مقدار این ویژگیها برای یک مشتری تشکیل میدهد. این مدل به علت سازگاری با برنامهنویسی و دسترسی آسان اطلاعات برای طراحی سایت و اپلیکیشن از محبوبیت بالای جهانی برخوردار است.
مدل شی گرا
امتیاز مدل رابطهای در راحت بودن کار با آن است. مدل شیگرا در طرف مقابل هزینه توسعه و یادگیری بالایی دارد و کار با آن مناسب هرکسی نیست. در عوض مدل شیگرا ضعفهای مدل رابطهای مثل غیرقابل تجزیه بودن ستونها و نبود ترتیب در ردیفها را نداشته و از دقت بسیار بالاتری برخوردار است. اگر مسئله کمبود منابع (مالی و انسانی) برای توسعه این مدل در کسبوکار وجود نداشته باشد، انتخاب مد شی گرا منطقیتر از مدل رابطهای بهنظر میرسد.
مدل گراف
این مدل مشتقی از مدل رابطهای بوده و زیرمجموعه NoSQL قرار میگیرد. در مدل گراف، یک سری گره و لبه داریم که نماینده اطلاعاتاند. هر گره نقش رکورد در مدل رابطهای را دارد (اطلاعات ثبت شده کاربر، کالا یا…) و هر لبه ارتباط بین رکوردها را بیان میکند. یکسری خواص (Properties) هم بهعنوان اطلاعات اضافی در گرهها قرار میگیرند.
مدل ER
مدل ER یا Entity Relationship بر مبنای دو رکن اساسی شکل گرفته است. ER در انگلیسی مخفف رابطه پدیدهها است. در این مدل پدیدهها روابط مختلف (یک به یک – یک به چند – چند به چند) با یکدیگر دارند. در مدل ER نموداری داریم که اشکال مختلف در آن معانی خاص خود را دارند:
- مستطیل: پدیده (مدیر، استاد، دانشجو یا…)
- بیضی: ویژگی (نام، سن، جنسیت یا…)
- لوزی: نوع رابطه (برای مثال رابطه دو پدیده استاد و دانشگاه از نوع استخدام است)
- خطوط: وجود ارتباط بین پدیدهها را نشان میدهند
- بیضی دولایه: ویژگی چندمقداری
- بیضی نقطهچین: ویژگی مشتق شده
- مستطیلهای دولایه: مجموعه پدیدههای ضعیف
- دو خط کنار هم: شرکت کردن کامل یک پدیده در یک رابطه
مدل سند
این مدل نیز جزو زیرمجموعههای NoSQL به حساب میآید و اخیرا محبوبیت زیادی کسب کرده است. در مدل سند، دادهها در قالب سندهایی ذخیره میشوند. هر سند شامل خود داده، روابط آن داده با دیگر دادهها و ویژگیهای آن داده است. مزیتی که باعث شده بعضی از متخصصان در سالهای اخیر این روش را به SQL ترجیح دهند، ذخیره سریعتر و دسترسی بهتر به اطلاعات است. در حال حاضر این مدل از طریق نرمافزارهایی مثل Hbase، Cassandra، Apache Flink و IBM Informix ارائه میشود.
مدل NoSQL
مدل سند و مدل گراف دو نمونه از معروفترین جایگزینهای معرفی شده برای SQL اند. مدل NoSQL به حذف کامل SQL تاکید ندارد بلکه میخواهد محدودیتهای SQL برای سیستمهایی همچون اینترنت اشیا را دور بزند. برای همین بیشتر اوقاتی که این روش در پروژهای به کار میرود، در واقع یک روش دیگر در کنار SQL بههمراه معماری ابری برای دادهها پیادهسازی میشود. معروفترین دیتابیسها NoSQL را در ادامه میبینید:
- Cosmos DB
- ArangoDB
- Couchbase Server
- CouchDB
- Amazon DocumentDB
- MongoDB, CouchBase
- Elasticsearch
- Informix
- SAP HANA
- Neo4j
مراحل طراحی پایگاه داده چیست
حالا میخواهیم به سراغ طراحی یک پایگاه داده برویم. لازم به ذکر است در اینجا تمرکز ما بر پایگاه داده رابطهای خواهد بود. چون که این مدل ازمدیریت پایگاه داده محبوبترین و پرکاربردترین آنها است و توضیح تمام روشها از توان این مقاله خارج خواهد بود. فرض کنید کسبوکاری دارید و قرار است برای آن پایگاه دادهای طراحی شود. این فرآیند لازم است با ظرافت و دقت خاصی به انجام برسد. چون در غیراینصورت قادر به بهبود روندهای کاری شما نخواهد بود. در ادامه این مراحل به ترتیب توضیح داده میشوند.
هدف از طراحی پایگاه داده چیست
پایگاههای داده در جاهای مختلف و برای اهداف متفاوتی طراحی میشوند. اینکه چه فرد یا افرادی قرار است با این پایگاه داده کار کنند بسیار مهم خواهد بود. مثلا اگر قرار است منشی شرکت با اطلاعات بسیار پایین کامپیوتری از آن استفاده کند، این دیتابیس باید مطابق با توانایی او طراحی شود. توصیه ما برای این مرحله بررسی نوع سازماندهی فعلی اطلاعات و مصاحبه با کسانی است که در آینده با دیتابیس کار خواهند کرد.
فهرست پدیدهها و ویژگیهایشان را بسازید
پایگاه داده رابطهای بر مبنای یکسری جدول شکل میگیرد. هر سطر این جدولها مربوط به یک پدیده (کاربر، کالا، کارمند یا..) و هر ستون شامل ویژگیهای آن (نامکاربری، قیمت، شمارهپرسنلی یا…) خواهد بود. ابتدا باید تمام پدیدههای مورد بررسی را مشخص کرده و سپس تمام ویژگیهای مهم آنها را روی کاغذ بیاورید
جدول اولیه را روی کاغذ طراحی کنید
در ادامه یک فهرست دارید شامل پدیدهها و ویژگیهای مهم هر پدیده. حالا نوبت به طراحی جدول از این فهرست میرسد. فرض کنید کسب و کار شما میخواهد پایگاه دادهای از مشتریان و اطلاعات آنها داشته باشد.
تعیین نوع دادهها
پس از طراحی یک جدول اولیه روی کاغذ، نوبت به تعیین نوع داده هر ستون میرسد. این جدولها قرار است وارد یک زبان برنامهنویسی شوند و اولین قدم در برنامهنویسی، تعیین نوع دادهها است. برای مثال دادههای ستون سن از جنس int دادههای ستون نام از جنس varchar خواهند بود.
تعیین کلید اصلی برای هر جدول
در این مرحله باید بدانید چند جدول دارید، هر کدام توصیف کننده کدام پدیده هستند و چه ویژگیهایی از آن پدیده را توصیف خواهند کرد. در ادامه برای هر جدول یک کلید اصلی (Primary Key) مشخص کنید. این کلید بهمعنای مقداری است که باعث مجزا شدن ردیفهای جدول از یکدیگر میشود.
برای مثال مشتری، بهترین گزینه برای کلید اصلی شماره ملی خواهد بود چون که منحصربهفرد است و مشتریان را از یکدیگر مجزا میکند. مقدار ستون کلید اصلی هیچگاه نباید null باشد. بههمین دلیل است که اغلب کسبوکارها به هر سفارش یا مشتری یک عدد چندرقمی یا کد شامل حرف و رقم اختصاص میدهند.
تخمین فضای لازم
با توجه به جدولهای اولیه میزان فضای دیجیتالی لازم برای پایگاه داده را تخمین بزنید.
تعیین روابط بین جدولها
در حال بررسی سیستم رابطهای مدیریت پایگاه داده هستیم. در اینجا لازم داریم بدانیم بین جدولهایمان چه روابطی وجود دارد. این رابطه میتواند یکبهیک، یکبهچند، چندبهچند، چندبهیک، اجباری، بازگشتی یا زائد باشد. روابط زائد یعنی روابطی که دو بار بیان شدهاند و باید یکی از آنها را حذف کنیم.
نرمالیزه کردن
قبل از اینکه به طراحی نهایی برسیم نیاز است دستهبندیهای خود را نرمالیزه کنیم. این کار باعث سرعت و دقت عملکرد بهتر خواهد شد.
برنامهنویسی
حالا دادههای شما آماده ورود به فضای دیجیتال از طریق زبان SQL اند. یادگیری این زبان کار سختی نبوده و بهراحتی میتوانید آن را بیاموزید.
منابع مطالعاتی برای یادگیری طراحی پایگاه داده چیست
برای یادگیری طراحی و کار با پایگاه داده دو روش وجود دارد:
- کتاب : استفاده از کتاب آموزش طراحی پایگاه داده و یادگیری زبان SQL از طریق مطالعه کتاب مربوطه در این دسته قرار میگیرند. چند نمونه از بهترین کتابهای نوشته شده در این حوزه را در ادامه میآوریم.
- کتاب اصول طراحی پایگاه داده از رمضان عباس نژادورزی، علیرضا عظیمی و باقر رحیم پور کامی انتشارات فناوری نوین
- Database Design for Mere Mortals: A Hands-on Guide to Relational Database Design نوشته مایکل جی فرناندز
- آموزش دیجیتال : استفاده از منابع آموزش الکترونیک یا E-Learning که برای مسائلی مثل پایگاه داده روش بهتری بهنظر میرسد. این منابع اطلاعات بهروز را در اختیار افراد قرار میدهند، در حالی که کتابها برای بهروز شدن زمان بیشتری میبرند. مکتبخونه یکی از منابع الکترونیک آموزش است که میتوانید از آن برای یادگیری طراحی پایگاه داده استفاده کنید.
کلام آخر
کسبوکارهای امروزی خصوصا کسبوکارهای دیجیتال، برای ثبت و کار با دادهها نیازمند پایگاه داده هستند. پایگاه داده محلی است در یک سیستم کامپیوتری که دادههای مربوط به مشتریان، دانشآموزان، کارمندان یا هر گونه دادهای که نیاز به ثبت دارد در آنجا ذخیره میشود. دسترسی به این محل از طریق نرمافزاری با نام «سیستم مدیریت پایگاه داده» (DBMS) ممکن میشود.
در این مقاله تعریف پایگاه داده بههمراه انواع سیستمهای مدیریت آن را معرفی کردیم و در ادامه مراحل طراحی یک پایگاه داده رابطهای را شرح دادیم. اگر پیشنهاد، انتقاد یا تجربهای در رابطه با مطلب طراحی پایگاه داده چیست دارید از بخش کامنت با ما در میان بگذارید.