تولید LDM و PDM و اسکریپت SQL با Power Designer
در درس قبل مدل مفهومی ساختیم. حالا میخواهیم از همان مدل، مدل فیزیکی (PDM) را برای SQL Server بسازیم و از آن اسکریپت SQL بگیریم.
نمای کلی مسیر
| از | به | منو |
|---|---|---|
| CDM | LDM (در نسخههایی که دارند) | Tools → Generate Logical Data Model… |
| CDM یا LDM | PDM | Tools → Generate Physical Data Model… |
| PDM | اسکریپت SQL / ساخت دیتابیس | Database → Generate Database… (Ctrl+G) |
| دیتابیس یا اسکریپت | PDM (مهندسی معکوس) | File → Reverse Engineer → Database… |
گام ۱: تولید PDM از CDM
- مدل CDM را باز کن و از منوی
Toolsگزینهی Generate Physical Data Model… را بزن. - در تب General گزینهی Generate new Physical Data Model را انتخاب کن.
- فهرست DBMS را باز کن و نزدیکترین نسخه به SQL Server خودت را انتخاب کن (مثلاً
Microsoft SQL Server 2019؛ اگر دقیقاً نبود نسخهی قبلی). - در Name و Code نام مدل را بنویس (مثل
UniversityPDM). - در تب Detail گزینهی Check model را فعال بگذار تا قبل از تولید، مدل بررسی شود.
- در تب Selection میتوانی انتخاب کنی کدام موجودیتها تبدیل شوند (پیشفرض: همه).
- OK را بزن.
یک مدل جدید با پسوند .pdm باز میشود که جدولها (Table)، ارجاعها (Reference) و ستونها را نشان میدهد.
گام ۲: قوانین تبدیل CDM به PDM
Power Designer قوانین نگاشت را خودکار اعمال میکند؛ باید بدانی چه اتفاقی میافتد تا نتیجه را بخوانی:
| در CDM | در PDM |
|---|---|
| Entity | Table |
| Attribute | Column |
| Primary Identifier | Primary Key |
| رابطهی یکبهچند | ستون کلید خارجی در جدول سمت «چند» + Reference |
| رابطهی چندبهچند | جدول واسط با کلید ترکیبی و دو Reference |
| Mandatory | ستون NOT NULL |
| Name و Code | نام و Code جدول/ستون (Code مبنای اسکریپت است) |
گام ۳: بازبینی و اصلاح PDM
نتیجهی خودکار را بدون بازبینی استفاده نکن. روی هر جدول دوبار کلیک کن و این موارد را بررسی کن:
- تب Columns: Data Type هر ستون را درست کن. برای متن فارسی
nvarchar(100)انتخاب کن، نهvarchar. - ستونهای P (Primary)، F (Foreign) و M (Mandatory) را بررسی کن.
- برای کلیدهای اصلی عددی که باید خودکار افزایش پیدا کنند، در جزئیات ستون (Column Properties) گزینهی Identity را فعال کن.
- تب Indexes: ایندکسهای لازم (مثلاً روی ستونهای کلید خارجی پرمصرف) را اضافه کن.
- روی هر Reference (خط بین جدولها) دوبار کلیک کن و در تب Integrity رفتار حذف و بهروزرسانی را مشخص کن (None، Restrict، Cascade، Set null).
گام ۴: تولید اسکریپت SQL
- با PDM باز، منوی
Database → Generate Database…(یاCtrl+G) را بزن. - در تب General: Directory (محل ذخیره) و File name (مثلاً
create_university.sql) را بنویس و گزینهی One file only را فعال کن. - گزینهی Script generation را انتخاب کن (نه اتصال مستقیم به دیتابیس).
- در تب Options مشخص کن Table، Index، Reference و ... تولید شوند و آیا
DROPقبل ازCREATEبیاید. - تب Preview را باز کن و اسکریپت را ببین؛ بعد OK را بزن.
فایل .sql تولید میشود. آن را در SSMS باز کن (نصب SSMS)، یک پایگاهدادهی خالی انتخاب کن و اجرا کن. اسکریپتی شبیه این را خواهی دید:
CREATE TABLE Student ( StudentId int not null, FullName nvarchar(100) not null, BirthDate date null, constraint PK_STUDENT primary key (StudentId) ); CREATE TABLE Enroll ( StudentId int not null, CourseId int not null, Grade decimal(4,2) null, constraint PK_ENROLL primary key (StudentId, CourseId) ); alter table Enroll add constraint FK_ENROLL_ENROLL_STUDENT foreign key (StudentId) references Student (StudentId);
نام قیدها (PK_STUDENT، FK_ENROLL_...) را Power Designer از روی Code میسازد. دقت کن بر خلاف سازندهی ما، Power Designer معمولاً کلید خارجیها را با ALTER TABLE جداگانه در انتهای اسکریپت میآورد.
مهندسی معکوس: از دیتابیس به نمودار
برای تحلیل یک پایگاهدادهی موجود (مثلاً پروژهی دانشجویی دیگر یا دیتابیس نمونه) میتوانی نمودار PDM بسازی:
File → Reverse Engineer → Database…- یک مدل PDM جدید با DBMS مناسب بساز.
- منبع را انتخاب کن: Script files (فایلهای
.sql) یا Using a data source (اتصال ODBC به سرور). - جدولها را انتخاب و تایید کن؛ نمودار ساخته میشود.
با این روش میتوانی از دیتابیس واقعی نمودار تحلیل بگیری و ایرادهای طراحی را پیدا کنی.
خطاهای رایج و راهحل
| مشکل | راهحل |
|---|---|
| اسکریپت روی SQL Server خطای Syntax میدهد | نام جدول/ستون کلمهی رزروشده است (Order، User، Group)؛ Code را عوض کن |
نوع ستونها <Undefined> است | در CDM یا PDM نوع داده تعیین کن و دوباره تولید کن |
| همهی جدولها با حروف بزرگ ساخته شدهاند | در Model Options → Naming Convention تنظیم Code را عوض کن |
| اجرای اسکریپت دوم بار خطا میدهد | گزینهی Drop table قبل از Create را در تب Options فعال کن |
| PDM بعد از تغییر CDM بهروز نشده | Generate PDM را با گزینهی Update existing اجرا کن |
تمرین بعدی: همین مراحل را روی مدل خودت اجرا کن و خروجی را با اسکریپت طراح تعاملی مقایسه کن. اگر Power Designer در دسترس نیست، درس بعد ابزارهای رایگان را معرفی میکند: ابزارهای رایگان رسم نمودار.
تمرینهای خودآزمایی
اول خودت جواب بده، بعد پاسخ را باز کن و مقایسه کن.
۱رابطهی چندبهچند Student–Course در PDM به چه شکلی درمیآید؟نمایش پاسخ
به یک جدول واسط (مثلاً Enroll) با دو کلید خارجی به Student و Course تبدیل میشود که کلید اصلی آن ترکیب هر دو است. Power Designer نام این جدول را از نام (Code) ارتباط میگیرد.
۲اسکریپت تولیدشده روی SQL Server خطای «Incorrect syntax near the keyword 'Order'» میدهد. چرا و چه کنیم؟نمایش پاسخ
Order کلمهی رزروشدهی SQL است. Code موجودیت را به Orders (یا CustomerOrder) تغییر بده و دوباره PDM و اسکریپت را تولید کن؛ یا نام را در [براکت] قرار بده.
۳اگر بعد از تولید PDM در CDM یک صفت جدید اضافه کنیم، لازم است PDM را از اول بسازیم؟نمایش پاسخ
نه. در پنجرهی Generate Physical Data Model گزینهی Update existing Physical Data Model را انتخاب کن تا فقط تغییرات به PDM موجود منتقل شود و ویرایشهای دستی تو حفظ شود.