اگر فکر میکنید که مدیریت کردن دیتابیس MySql با استفاده از Workbench کار دشواری است، باید به شما بگم که اصلا اینطور نیست بلکه کاملا برعکس است. زمانیکه شما با ابزار MySql Workbench آشنا باشید، ایجاد schema ها، جداول، رابطه ها و پر کردن جداول با داده ها کار خیلی راحتی است.
با پیروی کردن از دستورات این مقاله، شما مهارت ایجاد دیتابیس، ایجاد و پر کردن جداول، ایجاد رابطه بین جدولها و گرفتن backup از داده ها را کسب خواهید کرد. بعدا، ما از این دیتابیس برای اتصال به پروژه NET Core. به آن استفاده خواهیم کرد.
این مقاله، قسمتی از مجموعه آموزشی زیر میباشد:
- ایجاد یک دیتابیس برای پروژه(همین مقاله)
- پیاده سازی کدهای پایه
- log سفارشی در ASP.NET Core
- الگوی Repository با Entity Framework Core
- استفاده از Repository برای درخواستهای GET
- استفاده از Repository برای درخواستهای POST، PUT و DELETE
اگر می خواهید تمام آموزشهای لازم و پایه مربوط به این دوره آموزشی را ببینید ، لطفاً روی این لینک کلیک کنید: صفحه مقدمه برای این آموزش.
این مقاله به چند قسمت زیر تقسیم میشود:
- ایجاد نمودار اسکیمای مدل MySQL
- ایجاد جداول در نمودار اسکیمای مدل
- اضافه کردن رابطه بین جداول
- Export اسکیما به فایل اسکریپت
- ایجاد دیتابیس از فایل اسکریپت
- پر کردن جداول با داده ها
- نتیجه گیری
ایجاد نمودار اسکیمای مدل MySQL
بعد از اینکه سرور MySQL نصب شد (ما در این سری از آموزشها، از نسخه 8.0.23 استفاده میکنیم)، MySQL Workbench را اجرا میکنیم که این، ابزار ما برای ایجاد جداول میباشد. وقتی شما Workbench را باز کردید، بر روی existing connection کلیک کنید، یک password اضافه کنید و سپس به database view ریدایرکت خواهید شد. به صفحه home برگردید و بر روی آیکن Models کلیک کنید.
با کلیک بر روی دکمه + نزدیک نوشته Models، وارد قسمت model view میشوید که به ما اجازه میدهد تا schema جدیدمان را ایجاد کنیم.
دوبار بر روی دکمه Add Diagram کلیک کنید. سپس صفحه ایجاد یک اسکیما را میبینید. در این صفحه، ما جدولها و رابطه بین آنها را ایجاد میکنیم.
ایجاد جداول در نمودار اسکیمای مدل
ما میخواهیم دو جدول ایجاد کنیم. روی آیکن table کلیک کنید و سپس مجددا بر روی محیط Schema کلیک کنید. این کار را یکبار دیگر برای ایجاد جدول دوم تکرار کنید. بعد از این، دوبار بر روی اولین جدول کلیک کنید، سپس میتوانیم ستونها را در آن ایجاد کرده و یک نام هم به آن بدهیم.
نام این اولین جدول را Owner بگذارید و ستونهای زیر را در آن اضافه کنید:
حال بر روی جدول دوم دابل کلیک کنید و نام آن را Account گذاشته و ستونهای زیر را به آن اضافه کنید:
حالا چرا برای کلیدهای اصلی در جداول ما، مقدار Char (36) انتخاب شده است. به این دلیل که ما از GUID برای کلیدهای خود استفاده خواهیم کرد و نماینده یک GUID در Char(36) ،MySQL است.
اضافه کردن رابطه بین جداول
شما میتوانید با کلیدهای ترکیبی CTRL+S، مدلتان را ذخیره کنید و بعد از آن، ما رابطه را به جداولمان اضافه میکنیم. ما فرض میکنیم که یک owner میتواند چند account (Domestic, Foreign currency, Savings…) داشته باشد. بنابراین با این حساب، میبینیم که یک رابطه یک به چند بین owner و account وجود دارد. در نظر داشته باشید که ما میخواهیم این دو جدول را با ایجاد کلید خارجی OwnerId در جدول Account، اتصال دهیم، پس این کلید میتواند رابطه بین این دو جدول را برقرار کند.
روی رابطه 1
:N که در تصویر بالا مشخص شده است کلیک کنید، سپس اول روی جدول Account و سپس روی جدول Owner کلیک کنید. سپس بلافاصله بعد از این اقدام، شما ستون جدید را در جدول Account میبینید. این کلید خارجی ما است.برای تغییر نام این ستون جدید، بر روی آن دابل کلیک کنید و نام آن را OwnerId بگذارید.
حالا اگر به قسمت پایین نگاه کنید، چند tab میبنید. ما هم اکنون در تب Columns قرار داریم. اگر بر روی تب foreign keys کلیک کنید، سپس اطلاعاتی را در مورد foreign key ما در جدول Account مشاهده میکنید.
اجازه دهید تنظیمات پیشفرض برای OnUpdate و OnDelete را تغییر دهیم. برای OnUpdate، ما گزینه Cascade را انتخاب میکنیم. این بدان معناست که اگر یک سطر با یک کلید اصلی در جدول Owner به طور خودکار، update شود، سپس سطر با کلید خارجی مربوطه در جدول Account نیز باید update شود. همچنین برای OnDelete، ما گزینه Restrict را انتخاب میکنیم. این به این دلیل است که ما نمیخواهیم یک سطر با کلید اصلی از جدول Owner، بدون حذف شدن سطر با کلید خارجی مربوطه در جدول Account، حذف شود. به این ترتیب ما می توانیم یکپارچگی را در پایگاه داده خود حفظ کنیم.
اگر شما به Catalog Tree که قسمتی از schema view است نگاه کنید، نام mydb را به عنوان نام دیتابیس میبینید. ما نمیخواهیم دیتابیسمان را با این نام صدا بزنیم، پس آن را تغییر میدهیم. روی mydb راست کلیک کنید و سپس edit schema را انتخاب کنید. به آن نام AccountOwner بدهید و سپس مدل خود را ذخیره کنید.
Export اسکیما به فایل اسکریپت
ما به پایان ایجاد اسکیما رسیدیم. حالا میخواهیم اسکیمای دیتابیسمان را به یک فایل اسکریپت، export کنیم که کدی را برای ایجاد پایگاه داده به همراه جداول مورد نظر در اختیار ما قرار می دهد که جلوتر، با یک اجرای ساده از این اسکریپت، دیتابیس مورد نظر برای ما تولید میشود.
بر روی منوی File کلیک کنید، سپس بر روی Export قرار بگیرید و گزینه Forward Engineering SQL Create Script را انتخاب کنید. حالا شما یک پنجره جدید میبینید که در آن باید نام فایل اسکریپت مورد نظر و دیگر آپشنها برای تولید اسکریپتها را تعیین نمایید. در فیلد Output SQL Script File، نام اسکریپت را بنویسید. اگر این قسمت را خالی بگذارید، فقط اسکریپت تولید شده را میتوانید مشاهده کرده و آن را کپی کنید اما در جایی ذخیره نخواهد شد. همچنین بر روی گزینه Generate DROP Statements Before Each CREATE Statement کلیک کنید. این گزینه، قبل از ایجاد یک جدول جدید که اگر همنام با یکی از جداول موجود باشد، آن جدول موجود را حذف میکند. به این ترتیب، اگر هنگام اجرای فایل اسکریپت ، هریک از جدولها از قبل در پایگاه داده وجود داشته باشد، با این کار شما از بروز خطاها جلوگیری میکنید.
بر روی دکمه Next کلیک کنید. سپس شما SQL Object Explorer Filter را میبینید. در این پنجره، فقط بر روی اولین گزینه کلیک کنید: Export MySQL Table Objects. دومرتبه بر روی Next کلیک کنید. در اینجا شما، نمایی از اسکریپت خود را خواهید دید. سپس بر روی finish کلیک کنید. سپس اسکریپت در مقصدی که تعیین کرده بودید export میشود.
ایجاد دیتابیس از فایل اسکریپت
اگر viewی دیتابیس شما هنوز باز است به آن view بروید.در غیر اینصورت، بر روی تب home کلیک کنید، سپس از بالا بر روی اولین آیکن کلیک کنید (آیکن دلفین) و سپس بر روی قسمت Local Instance کلیک کنید و وارد database view شوید.
در این database view، بر روی Schemas tab در قسمت Navigator صفحه کلیک کنید. آنجا، شما تعدادی دیتابیس پیشفرض را میبینید که در همین قسمت، دیتابیس جدید شما ظاهر خواهد شد.
به منوی File بروید و گزینه Run SQL Script را اجرا کنید. فایل اسکریپتی که قبلا ذخیره کرده بودید را انتخاب کنید، سپس بر روی دکمه run کلیک کنید. این باعث میشود که دیتابیس ایجاد شود. اگر شما schemas view تان را Refresh کنید، دیتابیستان را خواهید دید.
نکته: اگر بعد از انتخاب گزینه Run SQL Script، اسکریپت مورد نظرتان را اجرا نمودید و با خطای زیر روبه رو شدید با گزینه Open SQL Script از همان منوی File، اسکریپت مورد نظرتان را باز نمایید و اجرا کنید:
به این دلیل که جدول account وابسته به جدول owner است، باید اول جدول owner را با داده های مورد نظرمان پر کنیم، سپس جدول account را. روی جدول owner راست کلیک کنید و اولین گزینه را انتخاب کنید: …Select Rows – Limit. سپس پنجره query را خواهید دید:
پر کردن جداول با داده ها
حالا ما میخواهیم جداولمان را با داده ها پر کنیم. برای این منظور، یک تب SQL جدید برای اجرای کوئریها باز میکنیم:
و کد زیر را اجرا میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
INSERT INTO `accountowner`.`owner` VALUES ('24fd81f8-d58a-4bcc-9f35-dc6cd5641906','John Keen','1980-12-05','61 Wellfield Road'), ('261e1685-cf26-494c-b17c-3546e65f5620','Anna Bosh','1974-11-14','27 Colored Row'), ('a3c1880c-674c-4d18-8f91-5d3608a2c937','Sam Query','1990-04-22','91 Western Roads'), ('f98e4d74-0f68-4aac-89fd-047f1aaca6b6','Martin Miller','1983-05-21','3 Edgar Buildings'); INSERT INTO `accountowner`.`account` VALUES ('03e91478-5608-4132-a753-d494dafce00b','2003-12-15','Domestic','f98e4d74-0f68-4aac-89fd-047f1aaca6b6'), ('356a5a9b-64bf-4de0-bc84-5395a1fdc9c4','1996-02-15','Domestic','261e1685-cf26-494c-b17c-3546e65f5620'), ('371b93f2-f8c5-4a32-894a-fc672741aa5b','1999-05-04','Domestic','24fd81f8-d58a-4bcc-9f35-dc6cd5641906'), ('670775db-ecc0-4b90-a9ab-37cd0d8e2801','1999-12-21','Savings','24fd81f8-d58a-4bcc-9f35-dc6cd5641906'), ('a3fbad0b-7f48-4feb-8ac0-6d3bbc997bfc','2010-05-28','Domestic','a3c1880c-674c-4d18-8f91-5d3608a2c937'), ('aa15f658-04bb-4f73-82af-82db49d0fbef','1999-05-12','Foreign','24fd81f8-d58a-4bcc-9f35-dc6cd5641906'), ('c6066eb0-53ca-43e1-97aa-3c2169eec659','1996-02-16','Foreign','261e1685-cf26-494c-b17c-3546e65f5620'), ('eccadf79-85fe-402f-893c-32d3f03ed9b1','2010-06-20','Foreign','a3c1880c-674c-4d18-8f91-5d3608a2c937'); |
با اجرای این کد، جدولهای ما با داده های مورد نیازمان، پر خواهند شد. اگر میخواهید از داده هایتان، back up بگیرید باید به این طریق عمل کنید: روی منوی Server کلیک کنید، Data Export را انتخاب کنید، سپس دیتابیستان را انتخاب کنید و در قسمت پایین، گزینه Export to Self-Contained File را علامت بزنید. مقصد را برای فایل backup تان انتخاب کنید و بر روی Start Export کلیک کنید.
نتیجه گیری
این پست، قسمت 1 از این سری از آموزش میباشد. ما یاد گرفتیم که چطور اسکیمای MySQL را بسازیم، چطور جدولها و ارتباط بین آنها را ایجاد کنیم. علاوه بر این، در حال حاضر میدانیم که چطور اسکریپت دیتابیس را ایجاد کنیم و داده ها را به داخل جدولها درج کنیم.
با اینکه ما اصول MySQL را مورد بررسی قرار دادیم، شما در حال حاضر، دانش کافی برای شروع ایجاد طرح های پایگاه داده رابطه ای خود را دارید.
از شما برای مطالعه این قسمت از آموزش تشکر میکنیم، حال قسمت بعدی که ما وارد دنیای NET CORE. میشویم را بررسی کنید.