خانه/ طراحی پایگاه‌داده/ مدل‌های ER

مدل‌های ER: طراحی پایگاه‌داده روی کاغذ، پیش از SQL

مبتدی ۱۲ دقیقه مطالعه

پیش از نوشتن حتی یک خط CREATE TABLE، طراحان پایگاه‌داده معمولاً اول روی کاغذ (یا یک ابزار طراحی) فکرشان را به شکل یک مدل ER (مخفف Entity-Relationship، یعنی «موجودیت-رابطه») ترسیم می‌کنند. این مدل، همان چیزی است که در درس نرمال‌سازی به آن رسیدیم، اما این‌بار به‌صورت بصری.

سه مفهوم اصلی مدل ER

  • موجودیت (Entity): هر چیزی که می‌خواهیم اطلاعاتش را نگه داریم — معمولاً بعداً یک جدول می‌شود. مثال: دانش‌آموز، درس.
  • ویژگی (Attribute): اطلاعاتی که هر موجودیت دارد — بعداً یک ستون می‌شود. مثال: نام دانش‌آموز، عنوان درس.
  • رابطه (Relationship): ارتباط بین دو موجودیت — بعداً یا یک کلید خارجی می‌شود، یا (اگر رابطه چندبه‌چند باشد) یک جدول واسط. مثال: «ثبت‌نام‌کردن».

نمودار ER همان اسکیمای آشنای ما

بیا مدل ER همان سه جدول students، enrollments و courses را که در فصل ۴ به بعد همیشه استفاده کردیم، ببینیم:

Students
id, full_name, city
۱
Enrollments
student_id, course_id
M
Courses
id, title, teacher

هر دانش‌آموز (۱) می‌تواند در چند ثبت‌نام (M) باشد؛ هر ثبت‌نام دقیقاً به یک درس اشاره می‌کند.

در این نمودار، Students و Courses موجودیت‌اند، full_name و title ویژگی‌اند، و «ثبت‌نام» رابطه‌ای است که چون چندبه‌چند است (هر دانش‌آموز چند درس، هر درس چند دانش‌آموز)، خودش به یک موجودیت/جدول واسط (Enrollments) تبدیل شده — دقیقاً همان چیزی که در درس بعدی (ارتباطات) با جزئیات بیشتر می‌بینیم.

از نمودار ER تا CREATE TABLE

ترجمه‌ی این نمودار به SQL تقریباً مستقیم است:

مفهوم ERمعادل SQL
موجودیت (Entity)CREATE TABLE
ویژگی (Attribute)یک ستون در جدول
ویژگی شناسه‌ای (Identifier)PRIMARY KEY
رابطه‌ی یک‌به‌چندستون FOREIGN KEY در سمت «چند»
رابطه‌ی چندبه‌چندیک جدول واسط با دو FOREIGN KEY

بیا این نمودار را عملاً به SQL تبدیل کنیم و ببینیم دقیقاً همان چیزی است که همیشه با آن کار کرده‌ایم:

امتحانش کن — ساخت جدول‌ها مستقیم از روی نمودار ER
همین سه CREATE TABLE دقیقاً همان نموداری است که بالا کشیدیم. این‌که اول روی کاغذ (یا حتی روی یک تخته‌سفید با همکارانت) طراحی کنی، پیش از این‌که کد بنویسی، باعث می‌شود اشتباهات ساختاری را خیلی زودتر و ارزان‌تر پیدا کنی — تغییردادن یک جعبه در یک نمودار، خیلی ساده‌تر از تغییردادن یک جدول واقعی پر از داده است.

جمع‌بندی این درس

  • مدل ER از سه بخش تشکیل شده: موجودیت (Entity)، ویژگی (Attribute) و رابطه (Relationship).
  • هر موجودیت معمولاً یک جدول، هر ویژگی یک ستون، و هر رابطه یک کلید خارجی یا جدول واسط می‌شود.
  • طراحی روی کاغذ پیش از نوشتن SQL، هزینه‌ی اصلاح اشتباهات ساختاری را به‌شدت کاهش می‌دهد.

در درس بعدی، عمیق‌تر به خودِ روابط می‌رویم: یک‌به‌یک، یک‌به‌چند و چندبه‌چند دقیقاً چه فرقی دارند و هرکدام کِی به‌کار می‌آیند.