خانه/ مدل‌سازی داده (CDM، LDM، PDM)/ رسم CDM در Power Designer

رسم مدل مفهومی (CDM) در Power Designer قدم‌به‌قدم

متوسط ۱۴ دقیقه مطالعه
یادداشت: Power Designer یک نرم‌افزار تجاری (از SAP) است و در بسیاری از دانشگاه‌ها تدریس می‌شود. نام و جای دقیق منوها در نسخه‌های مختلف (مثلاً ۱۵ و ۱۶) کمی فرق می‌کند؛ مسیرهای این درس بر اساس نسخه‌های رایج ۱۶ نوشته شده و اگر منویی جای دیگری بود، همان نام را جست‌وجو کن. بدون نصب نرم‌افزار هم می‌توانی همین مدل را در طراح تعاملی سایت بسازی.

در این درس یک مدل مفهومی (CDM) برای «ثبت‌نام دانشگاه» می‌سازیم: دانشجو، درس و استاد با ارتباط چندبه‌چند «ثبت‌نام» بین دانشجو و درس و ارتباط یک‌به‌چند «تدریس» بین استاد و درس.

گام ۱: ساخت مدل جدید

  1. Power Designer را باز کن و از منوی File → New Model… وارد پنجره‌ی انتخاب نوع مدل شو.
  2. در دسته‌ی Model types گزینه‌ی Conceptual Data Model را انتخاب کن.
  3. در قسمت Model name یک نام مثل UniversityCDM بنویس و OK را بزن.
  4. یک صفحه‌ی خالی (Diagram) و یک Palette (نوار ابزار) در کنار صفحه نمایش داده می‌شود.
اگر Palette دیده نمی‌شود از منوی View (بخش Toolbars یا Palette، بسته به نسخه) آن را فعال کن.

ابزارهای اصلی Palette

ابزارکاربرد در CDM
Entityساخت موجودیت (مستطیل)
Relationshipکشیدن ارتباط بین دو موجودیت (و تعیین کاردینالیتی)
Association / Association Linkارتباط پیچیده‌تر یا ارتباط با صفت (موجودیت مرتبط)
Inheritanceارث‌بری (مثلاً Person با زیرگروه‌های Student و Teacher)
Select (فلش)انتخاب و جابه‌جایی اشیا؛ با کلیک راست از ابزار فعلی خارج می‌شوی

گام ۲: ساخت موجودیت‌ها

  1. ابزار Entity را از Palette انتخاب کن و روی صفحه کلیک کن؛ یک مستطیل ظاهر می‌شود. با کلیک راست از ابزار خارج شو.
  2. روی موجودیت دوبار کلیک کن تا پنجره‌ی Entity Properties باز شود.
  3. در تب General: Name را Student و Code را هم Student بگذار.
  4. به تب Attributes برو و برای هر صفت یک ردیف اضافه کن.

ستون‌های مهم تب Attributes:

ستونمعنیمثال
Name / Codeنام و شناسه‌ی صفتStudentId، FullName
Data Typeنوع داده (در CDM اختیاری است ولی بهتر است مشخص شود)Integer، Variable characters (۱۰۰)
P (Primary Identifier)این صفت شناسه‌ی موجودیت استتیک برای StudentId
M (Mandatory)مقدار اجباری است (NOT NULL)تیک برای FullName
D (Displayed)در نمودار نمایش داده شودمعمولاً فعال

همین کار را برای Course (CourseId شناسه، Title، Credits) و Teacher (TeacherId شناسه، FullName) تکرار کن.

گام ۳: رسم ارتباط و تعیین کاردینالیتی

  1. ابزار Relationship را انتخاب کن، روی Student کلیک کن و بدون رها کردن ماوس تا Course بکش و رها کن.
  2. روی خط ارتباط دوبار کلیک کن تا Relationship Properties باز شود.
  3. در تب General نام ارتباط را Enroll بگذار (می‌توان برای هر جهت یک Role هم نوشت: «ثبت‌نام می‌کند» و «ثبت‌نام می‌شود»).
  4. در تب Cardinalities نوع را Many-Many انتخاب کن.
  5. برای هر جهت گزینه‌ی Mandatory را بسته به قاعده‌ی کسب‌وکار فعال یا غیرفعال کن.

اکنون روی خط ارتباط برچسب‌هایی مثل 0,n و 1,1 می‌بینی. این نمادگذاری حداقل–حداکثر است که در Power Designer پیش‌فرض است. ارتباط «تدریس» بین Teacher و Course را هم با نوع One-Many بکش.

کاردینالیتی نمایش‌داده‌شدهمعنیگزینه‌ی تنظیم
(0,1)اختیاری، حداکثر یکیOne + غیر Mandatory
(1,1)دقیقاً یکیOne + Mandatory
(0,n)صفر یا چندتاMany + غیر Mandatory
(1,n)حداقل یکی و چندتاMany + Mandatory

نتیجه‌ی کار

مدل مفهومی ساخته‌شده باید این شکل را داشته باشد (نسخه‌ی ساده‌شده با همان کاردینالیتی‌ها؛ ظاهر دقیق در Power Designer کمی متفاوت است):

0,n0,nEnroll 0,n1,1Teach StudentID StudentIdFullNameBirthDate CourseID CourseIdTitleCredits TeacherID TeacherIdFullName
CDM ثبت‌نام دانشگاه. ارتباط Enroll چندبه‌چند است و خودش صفت Grade (نمره) دارد.

نمره (Grade) صفتِ «ثبت‌نام» است، نه دانشجو یا درس. در Power Designer دو راه داری: ارتباط چندبه‌چند را به یک Association تبدیل کنی که صفت دارد، یا یک موجودیت مستقل Enrollment با دو ارتباط یک‌به‌چند بسازی. روش دوم برای شروع ساده‌تر است.

گام ۴: بررسی مدل با Check Model

قبل از تولید مدل بعدی، مدل را بررسی کن: منوی Tools → Check Model… (کلید F4) و OK. خطاها و هشدارها در پنجره‌ی Result فهرست می‌شوند.

پیام رایجعلتراه‌حل
Entity has no identifierهیچ صفتی شناسه (P) نیستدر تب Attributes تیک P را بزن
Name or Code already usedدو شیء هم‌نامیکی را تغییر نام بده
Relationship has no name/roleنام ارتباط خالی استیک نام معنادار بنویس
Attribute has no data typeنوع داده تعیین نشده (هشدار)برای تولید PDM بهتر است نوع تعیین شود

نکته‌های کار حرفه‌ای

  • Code انگلیسی، Name خوانا: برای خروجی SQL از Code استفاده می‌شود.
  • نام موجودیت‌ها را مفرد بنویس (Student نه Students).
  • برای هر ارتباط دو جمله بساز و بخوان: «هر دانشجو حداقل صفر و حداکثر چند درس ثبت‌نام می‌کند.»
  • نمودار را مرتب کن (Symbol → Align) تا خطوط هم‌دیگر را قطع نکنند؛ نمودار خوانا نمره‌ی بیشتری می‌گیرد.
  • قبل از مرحله‌ی بعد، مدل را ذخیره کن (Ctrl+S، فرمت .cdm).

مدل مفهومی آماده است. در درس بعد از روی همین CDM مدل LDM و PDM و اسکریپت SQL را تولید می‌کنیم.

تمرین‌های خودآزمایی

اول خودت جواب بده، بعد پاسخ را باز کن و مقایسه کن.

۱در Entity Properties تفاوت Name و Code چیست و کدام را انگلیسی بنویسم؟نمایش پاسخ
پاسخ

Name نام نمایشی است (می‌تواند فارسی یا با فاصله باشد) و Code شناسه‌ای است که هنگام تولید PDM و اسکریپت SQL به‌عنوان نام جدول و ستون به‌کار می‌رود. Code را انگلیسی و بدون فاصله بنویس (مثل Student و FullName).

۲رابطه‌ی «هر استاد چند درس ارائه می‌دهد و هر درس دقیقاً یک استاد دارد» چه کاردینالیتی‌هایی در CDM می‌گیرد؟نمایش پاسخ
پاسخ

سمت استاد (0,n) (یا (1,n) اگر هر استاد باید حداقل یک درس داشته باشد) و سمت درس (1,1). در پنجره‌ی Cardinalities نوع رابطه را «One-Many» انتخاب و گزینه‌ی Mandatory سمت درس را فعال می‌کنی.

۳چرا Check Model خطای «entity has no identifier» می‌دهد و راه‌حل چیست؟نمایش پاسخ
پاسخ

چون برای آن موجودیت هیچ صفتی به‌عنوان شناسه (Primary Identifier) علامت نخورده است. در تب Attributes ستون P را برای یکی از صفت‌ها (مثلاً StudentId) تیک بزن.