MySQL Workbench Tutorial - ER Diagram.pdf

‫روش رسم نمودار ‪ ER‬در نرم افزار ‪MySQL Workbench‬‬
‫در این سند متنی قصد داریم تا روش رسم نمودار ‪ ER‬در نرمافزار ‪ Workbench‬توضیح دهیم‪ .‬برای این منظور از‬
‫مثال صفحه ‪ ۳۲‬از اسلید شماره ‪ ۲‬شروع میکنیم‪ .‬در این مثال قصد داریم تا نمودار ‪ ER‬زیر را در ای ن نرماف زار‬
‫مدل سازی کنیم‪.‬‬
‫در ابتدا باید دو مفهوم »رابطه شناساگر« و »رابطه نا شناساگر« را بررسی کنیم‪.‬‬
‫•‬
‫رابطه ناشناساگر ‪ :‬موجودیت های دو طرف این رابطه بسسه صسسورت مسسستقل از یسسک دیگسسر قابسسل شناسسسایی‬
‫هستند‪ .‬برای مثال رابطه بین موجودیت های »کتاب« و »فرد دارنده )صاحب(« از نوع ناشناساگر هستند‪.‬‬
‫از این جهت که یک کتاب میتواند صاحب نداشته باشد و یا صاحبش تغییر کنسسد و یسسا چنسسد صسساحب داشسسته‬
‫باشد‪.‬‬
‫•‬
‫رابطه شناساگر ‪ :‬در این حالت موجودیت فرزند بسسدون وجسسود موجسسودیت والسسد نمیتوانسسد حضسسور داشسسته‬
‫باشد‪ .‬برای مثال رابطه بین »کتاب« و »نویسنده« از این نوع است‪ .‬از این جهت که هیچ کتسسابی نمیتوانسسد‬
‫بدون نویسنده باشد‪.‬‬
‫اکنون در ادامه به مسسدل سسسازی ایسسن نمسسودار در نرمافسسزار ‪ Workbench‬خ واهیم پرداخ ت‪ .‬در ابت دا از موج ودیت‬
‫»درس« شروع میکنیم‪ .‬برای مدل سازی این موجودیت در این نرمافزار یسسک جسسدول خسسالی بسسه نسسام ‪ Course‬ایج اد‬
‫میکنیم و صفات مورد نظر را به آن اضافه میکنیم )شماره درس‪ ،‬نام درس و تعداد واحد(‪ .‬برای تغییر نام جسسدول‬
‫و افزودن صفات کافی است روی جسسدول ایجسساد شسسده دو بسسار کلیسسک کنیسسد‪ .‬سسسپس از پانسسل زیریسسن صسسفحه نمسسایش‬
‫میتوانید نام جدول و یا صفات آن را تغییر دهید و یا مشاهده کنید‪ .‬همچنین میتوانید خصیصه های خاصسسی بسسرای‬
‫نمونه کلید اصلی‪ ،‬یکتا بودن‪ ،‬غیر خالی بودن و … را در همان پانل برای صفات اضافه شده در نظر بگیرید‪.‬‬
‫اکنون قصد داریم تا رابطه پیشنیازی بین دروس را مدل کنیم‪ .‬در ابتسسدا بایسسد بسسبینیم کسسه رابطسسه بیسسن موجسسودیت‬
‫»درس« و »پیشنیاز یک درس« چگونه است‪ .‬بدیهی است که »پیشنیاز یک درس« بدون دانستن اینکه آن درس‬
‫چه هست بیمعنی است زیرا برای خواننده این سؤال پیش میآید که »پیشنیاز چه درسی؟« پس رابطه بین ایسسن‬
‫دو موجودیت یک رابطه »شناساگر« است‪ .‬اکنون چنسسدتایی ایسسن رابطسسه را تعییسسن میکنیسسم‪ .‬هسسر درس ممکسسن اسسست‬
‫چندین پیشنیاز داشته باشد و از طرفی دیگر یک درس میتواند پیشنیاز چندین درس باشسسد‪ .‬لسسذا چنسسدتایی ایسسن‬
‫رابطه ‪ n:m‬است‪.‬‬
‫برای مدل سازی در ‪ Workbench‬کافی است که روی رابطه شناساگر ‪ n:m‬کلیک کنی م و س پس مب دأ و مقص د آن‬
‫رابطه را هر دو موجودیت »درس« قرار دهیم‪ .‬در این هنگام نرمافزار ‪ Workbench‬به صورت خودکار ی ک ج دول‬
‫دیگر به مدل ما اضافه میکند‪.‬‬
‫اکنون برای خوانایی بیشتر نام این جدول را به ‪ Has Prerequisite‬تغییر میدهیم که نشان دهنده رابطه پیشنیازی‬
‫بین دروس است‪.‬‬
‫در ادامه‪ ،‬موجودیت »کتاب« را اضافه میکنیم و صفات مورد نظسسر را بسسه آن اضسسافه میکنیسسم‪ .‬بسسرای افسسزودن رابطسسه‬
‫»منبع اصلی« ابتدا باید تشخیص دهیم که نوع ایسسن رابطسسه چیسسست‪» .‬درس« و »کتسساب« دو موجسسودیت مسسستقل از‬
‫یکدیگر هستند پس نوع این رابطه »ناشناساگر« است‪ .‬برای افزودن این رابط کسسافی اسسست کسسه روی گزینسسه رابطسسه‬
‫ناشاناساگر ‪ n:1‬در نرماف زار ‪ Workbench‬کلی ک کنی م و مب دأ و مقص د رابط ه را ج دوال ‪ Book‬و ‪ Course‬در نظ ر‬
‫بگیریم‪ .‬خروجی نهایی به شکل زیر خواهد بود‪.‬‬
‫توجه کنید که در این حالت شیئ اضافهای بیسسن اشسسیای ‪ Book‬و ‪ Course‬ایج اد نخواه د ش د‪) .‬ب رخلف نم ودار‬
‫اصلی که یک شکل لوزی برای این رابطه دارد‪(.‬‬
‫اکنون میتوان موجودیت »گروه درس« را به مدل مسسان اضسسافه کنیسسم بسسرای ایسسن منظسسور یسسک جسسدول جدیسسد بسسه نسسام‬
‫‪ CourseGroup‬اضافه میکنیم و صفات مورد نظر را به آن تخصیص می دهیم‪ .‬ب رای اض افه ک ردن رابط ه بی ن ای ن‬
‫موجودیت و موجودیت »درس« باید ببینیم که نوع این رابطه چگونه است‪ .‬بدیهی است که »گسسروه درسسسی« بسسدون‬
‫اینکه »درس« مورد نظر آن مشخص باید معنا ندارد‪ .‬برای مثال اگر به یک استادی بگوییم لطفاا این »گروه درس«‬
‫را تدریس کنید اولین سؤال ایشان این خواهد بود که این »گروه درس« مربوط به چه »درسسسی« مسسی شسسود‪ .‬پسسس‬
‫موجودیت »گروه درس« بدون دانستن »درس« مورد نظر بیمعنی است‪ .‬پس رابطه بین »درس« و »گسسروه درس«‬
‫یک رابطه »شناساگر« است‪ .‬از طرفسسی دیگسسر یسسک درس میتوانسسد چنسسدین »گسسروه درس« داشسسته باشسسد‪ .‬مثلا درس‬
‫»پایگاه داده« را در نظر بگیرید که میتواند در چندین »گروه درسسسی« بسسا زمسسان هسسای متفسساوت و اسسستادان متفسساوت‬
‫ارایه شود‪ .‬پس چندتایی این رابطه از نوع ‪ n:1‬است‪ .‬پس تاکنون مدل ما اینگونه خواهد بود‪.‬‬
‫‪ER‬‬
‫توجه داشته باشد که در این حالت نیز هیچ شیئ اضافهای بین این دو موجودیت ایجاد نخواهد شد‪.‬‬
‫اکنون اجازه دهید تا رابطه »تدریس شدن« به وسیله »استاد« را مدل کنیسسم‪ .‬بسسرای ایسسن منظسسور ابتسسدا موجسسودیت‬
‫»استاد« را به صورت یک جدول جداگانه به مدل خود اضافه میکنیم و صفات مورد نیاز را هم بدان اختصاص مسسی‬
‫دهیم‪ .‬برای افزودن رابطه تدریس باید ببینیم کسسه نسسوع ایسسن رابطسسه چیسسست‪ .‬واضسسح اسسست کسسه »اسسستاد« و »گسسروه‬
‫درس« مستقل از یکدیگر هستند‪ .‬برای مثال اگر شما به دوستتان بگویید من یک استاد را دیدم قطعسساا دوسسستتان‬
‫نمیگوید که »گروه درسش« چی بود؟!! چون موجودیت »استاد« مستقل است و نیازی بسسه موجسسودیت دیگسسری بسسرای‬
‫هویت یافتن ندارد‪ .‬ولی برعکس‪ :‬اگر شما به دوستتان بگویید که من فلن »گسسروه درس« را برداشسسته ام‪ ،‬ممکسسن‬
‫است دوستتان بپرسد کسسه »اسسستادش« کیسسست؟ در اینجسسا تسسوجه داشسسته باشسسید »گسسروه درس« بسسه وسسسیله اسسستاد‬
‫تدریس میشود ولی شناسایی نمی شود‪» .‬گروه درس« هویتش فقسسط بسسه هسسویت »درس« مسسورد تسسدریس وابسسسته‬
‫است‪ .‬چرا که ممکن است »استاد« یک »گروه درس« در حین ترم عوض شود ولی همچنسسان هسسویت »گسسروه درس«‬
‫ثابت باقی میمانند ولی اگر »درس« مورد تسسدریس عسسوض شسسود دیگسسر مفهسسوم و هسسویت آن »گسسروه درس« از بیسسن‬
‫میرود‪ .‬لذا با همه این تفاصیر نوع رابطه تدریس یک رابطه ناشناساگر است‪.‬‬
‫اکنون به سراغ رابطه آخر یعنی رابطه »برداشتن« درس به وسیله »دانشسسجویان« مسسی رویسسم‪ .‬در ابتسسدا موجسسودیت‬
‫»دانشجو« و صفات مورد نظر آن را اضافه میکنیسسم‪ .‬سسسپس در مسسورد نسسوع رابطسسه آن بسسا موجسسودیت » گسسروه درس«‬
‫تصمیم می گیریم‪.‬‬
‫به دلیل اینکه هر »دانشجو« میتواند چندین »گروه درسی« را اخذ کند و از طسسرف دیگسسر چنسسدین »دانشسسجو« یسسک‬
‫»گروه درسی« یکسان را اخذ کنند پس چندتایی این رابطه به صورت ‪ n:m‬است‪ .‬از طرفی ب ه دلی ل آنک ه رابط ه‬
‫»ناشناساگر« چند به چند معنی ندارد جنس این رابطه از نوع شناساگر چنسسد بسسه چنسسد اسسست‪ .‬یعنسسی اگسسر لیسسستی از‬
‫دروس گرفته از سوی داشنجویان را به یک نفر بدهید اولین سؤالش این است که »کی« چه »درسسسی« را گرفتسسه‬
‫است‪ .‬پس یک جدول دیگری لزم تا این لیست را در خود ذخیره کند و پیوند هایی نیز بسسه جسسداول ‪CourseGroup‬‬
‫و ‪ Student‬دارد‪ .‬بدین منظور گزینه رابطه شناس اگر ‪ n:m‬را انتخ اب کنی م و س پس روی ج دوال ‪ CourseGroup‬و‬
‫‪ Student‬به عنوان مبدأ و مقصد آن کلیک کنیم‪ .‬در نتیجه برنامه ‪ Workbench‬خودبخ ود ی ک ج دول دیگ ر اض افه‬
‫میکند‪ .‬برای خوانایی بیشتر نام این جدول را به ‪ Takes‬تغییر میدهیم‪.‬‬
‫پس همانگونه که مشاهده کردیم تمام نمودارهای ‪ ER‬مرسوم را میتوان در ‪ Workbench‬مدل سازی کرد‪.‬‬
‫موفق باشید‬
‫علیرضا برخورداری‬