پرش به محتوای اصلی

ویرایش رابطه

رابطه‌ها از منوی زمینهٔ بوم، نوار ابزار بوم، جست‌وجوی سریع یا با یک میان‌بر رسم می‌شوند؛ شروع ویرایش را ببینید.
این صفحه توضیح می‌دهد که پس از ایجاد یک رابطه چه کارهایی با آن می‌توانید انجام دهید، نگاشت ستون‌ها چگونه انتهای یک رابطه را روی ستون‌هایی قرار می‌دهد که جدول فرزند از قبل دارد و نام ستون‌های کلید خارجی که رابطه اضافه می‌کند چگونه تعیین می‌شود.

حذف​

حذف از طریق منوی زمینهٔ رابطه امکان‌پذیر است.

حذف رابطهٔ products به reviews از منوی زمینهٔ آن

برای این کار میان‌بری وجود ندارد، زیرا رابطه مانند جدول یا یادداشت انتخاب نمی‌شود: کلیدهای Delete و Backspace که موارد انتخاب‌شده را حذف می‌کنند، هرگز رابطه را به‌تنهایی حذف نمی‌کنند؛ حذف جدول و یادداشت را ببینید.
رابطه‌ها همراه با آنچه به هم وصل می‌کنند نیز حذف می‌شوند: حذف یک جدول همهٔ رابطه‌های متصل به آن را حذف می‌کند و حذف یک ستون همهٔ رابطه‌هایی را که از آن استفاده می‌کنند حذف می‌کند.

تغییر نوع​

تغییر از طریق گزینهٔ Relationship Type در منوی زمینهٔ رابطه امکان‌پذیر است.
چهار نوع ارائه می‌شود و نوع فعلی با علامت تیک مشخص می‌شود:

  • Zero One
  • Zero N
  • One Only
  • One N

تغییر یک رابطه از Zero N به One Only و سپس One N در منوی زمینهٔ آن

این‌ها همان چهار نوعی هستند که رابطه را با آن‌ها آغاز می‌کنید و هر کدام میان‌بر خود را دارد؛ شروع ویرایش را ببینید.

ON DELETE و ON UPDATE​

از طریق گزینه‌های On Delete و On Update در منوی زمینهٔ رابطه، میان Relationship Type و Map Columns، تنظیم می‌شوند.
هر کدام همان شش گزینه را ارائه می‌کند و گزینهٔ فعلی با علامت تیک مشخص می‌شود:

  • Not set
  • NO ACTION
  • CASCADE
  • SET NULL
  • SET DEFAULT
  • RESTRICT

Not set هیچ بندی نمی‌نویسد، بنابراین پیش‌فرض خود پایگاه داده اعمال می‌شود. یک رابطهٔ جدید، چه رسم‌شده و چه ساخته‌شده در نگاشت ستون‌ها، در آغاز هر دو کنشش روی Not set است و اگر بعداً Not set را انتخاب کنید، کنش پاک می‌شود.
این دو مستقل از هم هستند: تغییر یکی، دیگری را همان‌طور که هست باقی می‌گذارد.
خط اتصال آنچه را تنظیم شده است نشان می‌دهد؛ خواندن خط اتصال را ببینید.
رابطه‌ای که همراه با جدول‌هایش کپی و جای‌گذاری یا تکثیر شود هر دو کنش را حفظ می‌کند و وارد کردن طرح‌واره SQL، DBML یا AML کنش‌هایی را که فایل اعلام می‌کند وارد می‌کند؛ وارد کردن یا صادر کردن فایل‌ها را ببینید.

تنظیم ON DELETE CASCADE و ON UPDATE RESTRICT روی رابطهٔ orders به order_items از منوی زمینهٔ آن، با برچسب D U، و سپس بردن نشانگر روی آن برای خواندن دوبارهٔ هر دو

صرف‌نظر از پایگاه داده، هر کنشی قابل انتخاب است.
کنشی که پایگاه دادهٔ انتخاب‌شده آن را در طرح‌واره SQL خود نمی‌نویسد، پیامی کم‌رنگ در کنار خود دارد، مانند not in MySQL. Not set هرگز چنین پیامی ندارد و تغییر پایگاه داده پیام‌ها را به‌روزرسانی می‌کند.
کنشی که پیام دارد همچنان روی رابطه ذخیره می‌شود: خط اتصال آن را نشان می‌دهد و JSON، DBML و AML آن را نگه می‌دارند، اما طرح‌واره SQL آن پایگاه داده این بند را نمی‌نویسد، بنابراین پیش‌فرض پایگاه داده اعمال می‌شود.

طرح‌واره SQL این کنش‌ها را می‌نویسد و بقیه را کنار می‌گذارد:

پایگاه دادهON DELETEON UPDATE
DatabricksNO ACTIONNO ACTION
MSSQLNO ACTION، CASCADE، SET NULL، SET DEFAULTNO ACTION، CASCADE، SET NULL، SET DEFAULT
MariaDBNO ACTION، CASCADE، SET NULL، RESTRICTNO ACTION، CASCADE، SET NULL، RESTRICT
MySQLNO ACTION، CASCADE، SET NULL، RESTRICTNO ACTION، CASCADE، SET NULL، RESTRICT
OracleCASCADE، SET NULLهیچ‌کدام
PostgreSQLهر پنجهر پنج
SnowflakeNO ACTIONNO ACTION
SQLiteهر پنجهر پنج

طرح‌واره SQL برای Snowflake همچنین برای هر کنشی که کنار می‌گذارد توضیحی می‌نویسد که نام آن کنش را می‌آورد؛ کنش‌های ارجاعی را ببینید.

اینکه هدف‌های ORM مولد کد کدام کنش‌ها را می‌نویسند، علاوه بر پایگاه دادهٔ انتخاب‌شده به خود هدف نیز بستگی دارد؛ مولد کد را ببینید.

نگاشت ستون‌ها​

نگاشت ستون‌ها کلید جدول والد را با ستون‌هایی از جدول فرزند جفت می‌کند، به ازای هر ستون کلید یک ردیف.
هر ردیف یا از ستونی استفاده می‌کند که جدول فرزند از قبل دارد یا یک ستون کلید خارجی جدید اضافه می‌کند، بنابراین یک رابطه می‌تواند روی ستون‌هایی پایان یابد که از قبل وجود دارند.

رسم یک رابطهٔ Zero N از members به orders، انتخاب Map to existing columns و نگاشت id روی ستون موجود member_id

به دو روش باز می‌شود:

  • هنگام رسم یک رابطه، از دکمهٔ Map to existing columns در کنار جدول فرزند؛ ایجاد رابطه را ببینید. در این حالت Map رابطه‌ای از نوعی که در حال رسم است اضافه می‌کند.
  • از گزینهٔ Map Columns در منوی زمینهٔ رابطه، برای تغییر ستون‌های رابطه‌ای که وجود دارد. در این حالت Save تغییر را می‌نویسد. در ویرایشگر فقط خواندنی این گزینه نمایش داده نمی‌شود.

زیرعنوان کادر گفت‌وگو نام دو جدول و نوع رابطه را نشان می‌دهد، مانند users → posts · One N. نوع در اینجا نشان داده می‌شود اما تغییر نمی‌کند؛ برای این کار از تغییر نوع استفاده کنید.

References کلیدی را که رابطه به آن اشاره می‌کند انتخاب می‌کند: Primary Key با ستون‌هایش به ترتیب جدول، و سپس Unique: <column> برای هر ستونی که با Unique علامت خورده است. این فیلد فقط وقتی نمایش داده می‌شود که بیش از یک گزینه وجود داشته باشد.
شاخص یکتا در اینجا کلید به حساب نمی‌آید و ستونی که Unique است و به‌تنهایی کل کلید اصلی را تشکیل می‌دهد دو بار فهرست نمی‌شود.
انتخاب کلیدی دیگر ردیف‌ها را از نو می‌سازد. هر ردیف تا وقتی ستون انتخابی‌اش هنوز در جدول فرزند باشد، انتخاب خود را حفظ می‌کند.

زیر عنوان‌های Referenced column و Foreign key column، هر ردیف یکی از ستون‌های کلید را همراه با نوع داده‌اش و فهرستی از ستون‌های جدول فرزند برای جفت کردن با آن نشان می‌دهد:

  • Pick a column ردیف را خالی می‌گذارد.
  • New column: <name> یک ستون کلید خارجی جدید اضافه می‌کند. نام نمایش‌داده‌شده همان نامی است که ستون خواهد گرفت، همان‌طور که در نام ستون‌های کلید خارجی توضیح داده شده است، با شماره‌گذاری نسبت به ستون‌های جدول فرزند و ردیف‌های دیگری که ستون جدید اضافه می‌کنند. وقتی نام خالی باشد، مانند کلیدی بدون نام، این گزینه ارائه نمی‌شود.
  • همهٔ ستون‌های جدول فرزند، به‌صورت <name> (<data type>). ستونی که ردیف دیگری آن را انتخاب کرده است به‌صورت <name> (<data type>) · in use نمایش داده می‌شود و قابل انتخاب نیست، بنابراین هیچ دو ردیفی یک ستون مشترک ندارند. ستونی که رابطهٔ دیگری از قبل از آن استفاده می‌کند همچنان قابل انتخاب است، بنابراین ستون مشترکی مانند tenant_id می‌تواند در چند رابطه به کار رود.

با Map، یک ردیف فقط وقتی پرشده آغاز می‌شود که دقیقاً یک ستون از جدول فرزند، بدون توجه به بزرگی و کوچکی حروف، همان نامی را داشته باشد که یک ستون کلید خارجی جدید برای آن ردیف پیش از هر شماره‌گذاری _2 می‌گرفت، مانند users_id برای id در users و member_id برای member_id. تا وقتی Bracket روی مقدار پیش‌فرض None است، نامی که از بخش مربوط به جدول در یک نام جدول با پیشوند طرح‌واره ساخته می‌شود نیز به حساب می‌آید، بنابراین id در public.users با public.users_id یا users_id جفت می‌شود. برای کلید Unique، نام خود ستون کلید نیز به حساب می‌آید، بنابراین vin با vin جفت می‌شود. هر ردیف دیگری با Pick a column آغاز می‌شود.
با Save، هر ردیف با ستونی آغاز می‌شود که رابطه اکنون از آن استفاده می‌کند. در هر دو حالت، انتخاب کلیدی دیگر در References ردیف‌های خالی آن کلید را بر اساس همین نام‌ها پر می‌کند.

وقتی نوع دادهٔ ستون انتخاب‌شده با نوعی که ستون والد به کلید خارجی می‌دهد متفاوت باشد، پیامی زیر ردیف این را اعلام می‌کند.
وقتی همگام‌سازی نوع داده در رابطه‌ها روشن است و ستون والد نوع داده دارد، متن پیام <column> becomes <type> است، یعنی نوعی که نگاشت خواهد نوشت. در غیر این صورت متن آن Types differ: <parent type> and <child type> است و ستون نوع خود را حفظ می‌کند.

تا وقتی مانعی وجود دارد، Map یا Save غیرفعال می‌ماند و سطری زیر ردیف‌ها می‌گوید مانع چیست:

  • Pick a foreign key column for every referenced column: یک ردیف هنوز خالی است.
  • At least one column must reference a different column: رابطه‌ای خودارجاع که در آن هر ردیف ستون والد خودش را انتخاب کرده است.
  • These columns are already linked by another relationship: رابطهٔ دیگری میان همین دو جدول دقیقاً همین ستون‌ها را به هم وصل می‌کند.
  • <parent> has no key to reference: با Map، جدول والد نه کلید اصلی دارد و نه ستونی با Unique.

Save همچنین تا وقتی نگاشت با نگاشت فعلی رابطه تفاوتی نداشته باشد غیرفعال می‌ماند.
با Save، وقتی ستون یک ردیف از جدولش خارج شده باشد، آن ردیف (removed) را نشان می‌دهد. ستون دیگری از جدول فرزند انتخاب کنید، یا اگر ستون والد از بین رفته است، کلیدی را در References انتخاب کنید. با Map، ردیفی که ستون انتخاب‌شده‌اش حذف شود به Pick a column بازمی‌گردد.

رابطه‌ای که ستون‌های والدش دقیقاً یکی از کلیدهای جدول والد نیستند، با گزینه‌ای اضافی در انتهای References باز می‌شود، یعنی Current columns (not a key)، که آن ستون‌ها را همان‌طور که هستند نگه می‌دارد. وقتی جدول والد اصلاً کلیدی نداشته باشد، این تنها گزینه است و References نمایش داده نمی‌شود.
در این حالت، سطر The referenced columns are not a key of <parent>، یا <parent> has no key to reference وقتی جدول والد اصلاً کلیدی ندارد، یک پیام اطلاع‌رسانی است، نه خطا: Save همچنان کار می‌کند، بنابراین می‌توانید ستون‌های جدول فرزند را تغییر دهید و ارجاع را حفظ کنید.
رابطه‌ای که دو فهرست ستونش را نمی‌توان با هم جفت کرد، برای نمونه چون طولشان متفاوت است، ردیف‌های (invalid) نشان می‌دهد و Save را غیرفعال نگه می‌دارد تا وقتی که کلیدی را در References انتخاب کنید، یا اگر جدول والد کلیدی ندارد، یک کلید اصلی یا ستونی با Unique به آن اضافه کنید.

کادر گفت‌وگو تا وقتی باز است نمودار را دنبال می‌کند، از جمله ویرایش‌های یک همکار یا یک عامل کدنویسی، و آنچه را انتخاب کرده‌اید حفظ می‌کند.
اگر در این میان ستون‌های رابطه یا کلیدی که کادر گفت‌وگو با آن باز شده است تغییر کند، کادر سطر This relationship changed while the dialog was open را اضافه می‌کند.

آنچه Map و Save می‌نویسند:

  • Map رابطه را با On Delete و On Update روی Not set اضافه می‌کند. Save فقط ستون‌های رابطه را تغییر می‌دهد، سمت والد آن را به کلید انتخاب‌شده در References متصل می‌کند و نوع آن و ON DELETE و ON UPDATE آن را حفظ می‌کند.
  • ردیف New column ستونی در انتهای جدول فرزند اضافه می‌کند، همان‌طور که رسم رابطه این کار را می‌کند: NOT NULL، با نامی برگرفته از کلیدش و با نوع داده، مقدار پیش‌فرض و توضیح کلید؛ رابطه‌های شناسا را ببینید.
  • نام ستون انتخاب‌شده هرگز تغییر نمی‌کند و Not Null، کلید اصلی، Unique، مقدار پیش‌فرض و توضیح آن همان‌طور که هستند می‌مانند. نوع دادهٔ آن فقط وقتی تغییر می‌کند که Relationship DataType Sync روشن باشد و ستون والد نوع داده داشته باشد: نوعی را می‌گیرد که ستون والد به کلید خارجی می‌دهد، که برای کلید serial، همانند ستون جدید، نوع عدد صحیح است، و تغییر همان‌طور که همگام‌سازی انجام می‌دهد در امتداد رابطه‌ها ادامه می‌یابد.
  • ستونی که نگاشت دیگر از آن استفاده نمی‌کند در جدول فرزند باقی می‌ماند و دیگر به‌عنوان کلید خارجی علامت نمی‌خورد، مگر اینکه رابطهٔ دیگری هنوز روی آن پایان یابد.
  • هر آنچه یک Map یا Save می‌نویسد، از جمله ستون‌های جدید و تغییرات نوع، یک گام واگرد است.

اینکه رابطه شناسا باشد یا نه و انتهای والد آن چگونه رسم شود، مانند هر رابطهٔ دیگری از ستون‌های نگاشت‌شدهٔ جدول فرزند خوانده می‌شود. نگاشت روی ستون‌های کلید اصلی جدول فرزند آن را بی‌درنگ شناسا می‌کند و نگاشت روی ستونی که NULL را مجاز می‌داند یک حلقه در انتهای والد قرار می‌دهد؛ خواندن خط اتصال را ببینید.
کلید خارجی در طرح‌واره SQL به کلیدی که انتخاب کرده‌اید ارجاع می‌دهد، مانند REFERENCES vehicle (vin) برای یک کلید Unique.

اگر هنگامی که دکمهٔ Map یا Save را فشار می‌دهید نمودار از قبل این نگاشت را داشته باشد، چون یک همکار یا یک عامل کدنویسی زودتر آن را انجام داده است، چیزی نوشته نمی‌شود.
اگر نمودار طوری تغییر کرده باشد که نگاشت دیگر با آن سازگار نباشد، چیزی نوشته نمی‌شود و اعلان Couldn't map columns: the diagram changed نمایش داده می‌شود.

دکمهٔ Cancel، دکمهٔ x، کلید Escape یا کلیک روی ناحیهٔ کم‌رنگ بیرون از کادر گفت‌وگو آن را بدون نوشتن چیزی می‌بندد.
ناحیهٔ کم‌رنگ کل ویرایشگر، از جمله نوار ابزار، را می‌پوشاند و کاوشگر اگر باز باشد زیر آن باز می‌ماند.
باز کردن جست‌وجوی سریع نیز کادر گفت‌وگو را می‌بندد و ترک زبانهٔ ERD یا فقط خواندنی شدن ویرایشگر نیز همین کار را می‌کند.
Ctrl + F (Windows/Linux) یا ⌘ + F (Mac) نیز آن را می‌بندد و مکان‌نما را در فیلد یافتن جست‌وجوی کاوشگر قرار می‌دهد و اگر کاوشگر بسته باشد آن را باز می‌کند. در ویرایشگری که برای نمایش کاوشگر بیش از حد باریک است، این میان‌بر همچنان کادر گفت‌وگو را می‌بندد اما به‌جای جابه‌جا کردن مکان‌نما یک اعلان نشان می‌دهد؛ باز و بسته کردن را ببینید.
اگر یکی از جدول‌های آن یا خود رابطه در حالی که کادر گفت‌وگو باز است حذف شود، کادر با اعلانی مانند Map Columns closed: the relationship was removed بسته می‌شود.
تا وقتی کادر گفت‌وگو باز است، میان‌برهای بوم، واگرد و ازنو و نیز کپی و جای‌گذاری کاری انجام نمی‌دهند.

عامل کدنویسی ابزاری برای نگاشت ستون‌ها ندارد. این عامل یک رابطه را با حذف آن به کمک erd_remove_relationship، که ستون‌های کلید خارجی آن را نگه می‌دارد، و رسم دوبارهٔ آن روی ستون‌های موجود با erd_link_columns، هر دو در یک erd_batch، دوباره نگاشت می‌کند؛ ابزارها را ببینید.

رابطه‌های N:M​

از آنجا که ویرایشگر بر پایهٔ مدل فیزیکی است، رابطهٔ N:M مانند نمونهٔ زیر با یک جدول واسط بیان می‌شود.

رسم رابطه‌ها از products و سپس tags به جدول خالی product_tags با ⌘ + ⌥ + 2 و افزودن product_id و سپس tag_id

وقتی جدول واسط از قبل ستون‌های کلیدش را دارد، مانند product_id و tag_id در product_tags، هر رابطه را با دکمهٔ Map to existing columns رسم کنید و به‌جای افزودن ستون‌های جدید همان ستون‌ها را انتخاب کنید؛ نگاشت ستون‌ها را ببینید. اگر این ستون‌ها کلید اصلی جدول واسط باشند، هر رابطه بی‌درنگ شناسا می‌شود.

وارد کردن GraphQL، DBML یا AML جدول واسط را برایتان می‌سازد.
یک اعلان چندبه‌چند به‌صورت جدولی با نام <left>_<right> و توضیح Junction table inferred from <left> <-> <right> وارد می‌شود که با رابطه‌های شناسا به هر دو طرف متصل است.
وارد کردن یا صادر کردن فایل‌ها را ببینید.

رابطه‌های شناسا​

رسم یک رابطه با کلیک روی جدول فرزند، یا با دکمهٔ Create new columns، هر کلید اصلی جدول والد را به‌صورت یک ستون کلید خارجی NOT NULL در جدول فرزند کپی می‌کند، بنابراین یک رابطهٔ جدید در آغاز غیرشناسا است.
نسخهٔ کپی نوع داده، مقدار پیش‌فرض و توضیح کلید را می‌گیرد، اما Unique و Auto Increment را نمی‌گیرد، و همان‌طور که در نام ستون‌های کلید خارجی توضیح داده شده است نام‌گذاری می‌شود.
کلید serial در مورد نوع داده استثنا است: نسخهٔ کپی آن نوع عدد صحیحی را می‌گیرد که serial ذخیره می‌کند. در هر پایگاه داده‌ای، smallserial و serial2 به smallint، serial4 به integer و bigserial و serial8 به bigint تبدیل می‌شوند. serial به‌تنهایی در PostgreSQL به integer و در MySQL و MariaDB به bigint unsigned تبدیل می‌شود و در هر پایگاه دادهٔ دیگری serial باقی می‌ماند.
فقط کل نام نوع، بدون توجه به بزرگی و کوچکی حروف، به حساب می‌آید، بنابراین serial(4) همان‌طور که نوشته شده است کپی می‌شود. نوعی که با حروف بزرگ نوشته شده باشد نتیجه را هم با حروف بزرگ می‌دهد: SERIAL در PostgreSQL به INTEGER تبدیل می‌شود. اگر ستون کلید خارجی در یک نمودار ذخیره‌شده از قبل نوع serial داشته باشد، همان نوع را حفظ می‌کند.
برای شناسا کردن رابطه، آن ستون‌های کلید خارجی را در جدول فرزند به‌عنوان کلید اصلی تنظیم کنید: همهٔ آن‌ها را انتخاب کنید و یک بار Alt + K (Windows/Linux) یا ⌥ + K (Mac) را فشار دهید، یا در منوی زمینهٔ جدول گزینهٔ Primary Key را انتخاب کنید که وقتی دو ستون یا بیشتر انتخاب شده باشند عنوانش Primary Key on selected columns است؛ کلید اصلی ستون را ببینید.

روشن و خاموش کردن product_id به‌عنوان کلید اصلی با Alt + K و توپر و سپس خط‌چین شدن خط اتصال آن

ویرایشگر این وضعیت را خودش هماهنگ نگه می‌دارد.
رابطه تا وقتی همهٔ ستون‌های سمت فرزندش کلید اصلی باشند شناسا است و به محض اینکه یکی از آن‌ها کلید اصلی نباشد غیرشناسا می‌شود.

نام ستون‌های کلید خارجی​

هنگام رسم یک رابطه، نام هر ستون کلید خارجی که اضافه می‌شود از کلید والدی گرفته می‌شود که آن ستون از آن کپی شده است:

  • نام کلیدی که یک واژه است، مانند id، ID یا uuid، نام جدول والد و یک زیرخط را در ابتدای خود می‌گیرد: id در products به products_id تبدیل می‌شود.
  • نام کلیدی که از چند واژه تشکیل شده است، مانند member_id، userId یا UserID، همان‌طور که هست حفظ می‌شود.
  • نام کلید یک‌واژه‌ای که، بدون توجه به بزرگی و کوچکی حروف، همان نام خود جدول است نیز حفظ می‌شود: currency در currency همان currency می‌ماند. کلیدی که نام جدول تنها بخشی از آن است همچنان پیشوند را می‌گیرد: username در user به user_username تبدیل می‌شود.

یک نام وقتی یک واژه است که فقط حروف و ارقام داشته باشد و بزرگی و کوچکی حروف در آن تغییر نکند.
هر نویسهٔ دیگری آن را تقسیم می‌کند، بنابراین _id، order no و order-no چند واژه‌اند.
تغییر بزرگی و کوچکی حروف هم، که به شیوهٔ camelCase خوانده می‌شود، همین کار را می‌کند: یک حرف کوچک که پس از آن یک حرف بزرگ بیاید (userId)، دو حرف بزرگ که پس از آن‌ها یک حرف کوچک بیاید (IDCard، IDs) یا حرفی از خطی بدون بزرگی و کوچکی حروف، مانند هانگول، کانا یا هان، در کنار حرفی که بزرگی و کوچکی دارد (회원ID).
ارقام واژه را تقسیم نمی‌کنند، بنابراین id2 و SHA256 یک واژه‌اند. ترکیبی که یکسره با حروف کوچک یا یکسره با حروف بزرگ نوشته شده باشد نیز یک واژه است: memberid در members به members_memberid تبدیل می‌شود.

نام جدول، جز فاصله‌های دو طرفش، همان‌طور که نوشته شده است به کار می‌رود: بزرگی و کوچکی حروف، فاصله‌های درونی و نقطه‌هایش حفظ می‌شوند، مفرد نمی‌شود و گزینه‌های Table Name Case و Column Name Case مولد کد نقشی ندارند. Users با کلید ID نام Users_ID را می‌دهد.
هر ستون یک کلید مرکب جداگانه نام‌گذاری می‌شود: orders با کلید (tenant_id، id) ستون‌های tenant_id و orders_id را اضافه می‌کند.

نامی که جدول فرزند، بدون توجه به بزرگی و کوچکی حروف، از قبل دارد با _2، _3 و غیره شماره‌گذاری می‌شود و نخستین شمارهٔ آزاد را می‌گیرد.
رابطهٔ دومی از users با کلید id به همان جدول، ستون users_id_2 را اضافه می‌کند و یک رابطهٔ خودارجاع روی members با کلید member_id، ستون member_id_2 را اضافه می‌کند.
ستون‌های یک کلید مرکب نیز به همین شیوه نسبت به یکدیگر شماره‌گذاری می‌شوند و نامی که همان‌طور که هست حفظ می‌شود جای خود را زودتر می‌گیرد: user با کلید (id، user_id)، ستون user_id را برای user_id و ستون user_id_2 را برای id اضافه می‌کند.

جدول والدی که نام ندارد نام کلید را همان‌طور که هست باقی می‌گذارد و این نام در صورت تداخل مانند هر نام دیگری شماره‌گذاری می‌شود.
کلیدی که نام ندارد یک ستون کلید خارجی بدون نام می‌دهد.
این موضوع دربارهٔ کلید اصلی که ویرایشگر به جدول والد بدون کلید اصلی اضافه می‌کند نیز صدق می‌کند، مگر اینکه پیش از کلیک روی جدول فرزند آن را نام‌گذاری کنید.

نام‌ها هنگام رسم رابطه تعیین می‌شوند. اگر بعداً نام جدول والد یا کلید آن را تغییر دهید، نام این ستون‌ها تغییر نمی‌کند.
ردیف‌های New column در نگاشت ستون‌ها با همین قواعد نام‌گذاری می‌شوند و فهرست هر نام را پیش از اینکه آن را انتخاب کنید نشان می‌دهد.
رابطه‌هایی که ستون‌هایشان از قبل وجود دارد — از وارد کردن، جای‌گذاری، تکثیر یا جفت کردن ستون‌های موجود با نگاشت ستون‌ها — نام‌هایی را که آن ستون‌ها دارند حفظ می‌کنند.
وقتی عامل کدنویسی با erd_add_relationship رابطه‌ای اضافه می‌کند، همین نام‌ها و انواع داده را به دست می‌آورد؛ ابزارها را ببینید.

خواندن خط اتصال​

  • رابطهٔ شناسا با خط توپر و رابطهٔ غیرشناسا با خط‌چین رسم می‌شود.
  • انتهای فرزند نماد کاردینالیتی نوع رابطه را دارد: یک حلقه و یک خط برای Zero One، یک حلقه و یک پنجهٔ کلاغ برای Zero N، دو خط برای One Only و یک خط و یک پنجهٔ کلاغ برای One N.
  • انتهای والد وقتی دست‌کم یکی از ستون‌های کلید خارجی NULL را مجاز بداند، مانند Zero One یک حلقه و یک خط است و وقتی همهٔ آن‌ها NOT NULL باشند، مانند One Only دو خط است.
  • بردن نشانگر روی یک خط اتصال، آن را همراه با ستون‌هایی که در هر دو جدول به هم وصل می‌کند برجسته می‌کند.

بردن نشانگر روی سه خط اتصال به نوبت و برجسته شدن هر کدام همراه با ستون‌هایی که به هم وصل می‌کند

رابطه‌ای که ON DELETE یا ON UPDATE را تنظیم می‌کند، برچسبی در کنار انتهای فرزندش دارد، مانند D:C U:R: ابتدا D: و کنش ON DELETE، سپس U: و کنش ON UPDATE، هر کدام فقط وقتی تنظیم شده باشد.
کنش‌ها بر اساس نمادگذاری erwin کوتاه می‌شوند: C برای CASCADE، R برای RESTRICT، SN برای SET NULL، SD برای SET DEFAULT و NA برای NO ACTION. رابطه‌ای که هیچ‌کدام را تنظیم نکند برچسبی ندارد.
برچسب در سمتی قرار می‌گیرد که از جدول فرزند دور است: وقتی خط اتصال از سمت چپ یا راست آن جدول خارج می‌شود بالای خط، و وقتی از بالا یا پایین خارج می‌شود سمت راست خط، و با نماد کاردینالیتی هم‌پوشانی ندارد.
برچسب با رنگ خط اتصال روی مستطیل کوچکی به رنگ پس‌زمینهٔ بوم رسم می‌شود و همراه با خط اتصالش برجسته می‌شود. برچسب‌ها روی همهٔ خط‌های اتصال رسم می‌شوند، بنابراین خطی که از یک برچسب می‌گذرد از زیر آن عبور می‌کند.
برچسب کنشی را نشان می‌دهد که روی رابطه ذخیره شده است، صرف‌نظر از اینکه پایگاه دادهٔ انتخاب‌شده چه می‌نویسد، بنابراین ON DELETE SET DEFAULT در MySQL نیز همچنان D:SD نمایش داده می‌شود.

بردن نشانگر روی خط اتصالی که دست‌کم یکی از دو کنش را تنظیم کرده است، راهنمای ابزاری نیز نشان می‌دهد که بندها را به‌طور کامل، هر کدام در یک سطر، می‌نویسد، مانند ON DELETE CASCADE و ON UPDATE RESTRICT.
راهنمای ابزار حتی وقتی برچسب پنهان است نیز نمایش داده می‌شود.

رفتن به یک رابطه آن را برجسته می‌کند: انتخاب ردیفی زیر پوشهٔ Foreign Keys یک جدول در کاوشگر، یا ردیف یک کلید خارجی در نمایشگر تفاوت‌ها، خط اتصال و برچسب آن را با همان رنگی رسم می‌کند که هنگام قرار گرفتن نشانگر روی آن دارد. در نمایشگر تفاوت‌ها، خط اتصال در هر سمتی که رابطه را دارد برجسته می‌شود، بنابراین یک کلید خارجی افزوده فقط سمت فعلی را و یک کلید خارجی حذف‌شده فقط سمت ذخیره‌شده را برجسته می‌کند.
این پرش فقط جدول فرزند و ستون‌های کلید خارجی آن را انتخاب می‌کند و خانهٔ دارای فوکوس روی نخستین آن‌ها قرار می‌گیرد؛ خود رابطه همچنان هرگز انتخاب نمی‌شود. برای اینکه نما به کجا می‌رود، مقصد پرش را ببینید.
حالت برجسته با فشردن بعدی دکمهٔ چپ یا راست ماوس روی بوم از بین می‌رود، چه روی یک نقطهٔ خالی، یک جدول، یک یادداشت، یک گروه جدول یا یک خط اتصال، حتی فشردنی که انتخاب را تغییر ندهد. رفتن به ردیف دیگر یا مورد منطبق دیگری از جست‌وجو در کاوشگر نیز آن را از بین می‌برد و رفتن به ردیف دیگری در نمایشگر تفاوت‌ها نیز، در هر سمتی که آن ردیف به آن می‌رود، همین کار را می‌کند.
جابه‌جا کردن نما با دکمهٔ میانی ماوس یا ابزار دست آن را برجسته باقی می‌گذارد و همین‌طور جمع کردن یا باز کردن یک ردیف در کاوشگر یا نمایشگر تفاوت‌ها، پاک کردن انتخاب با Escape و پرش از جست‌وجوی سریع یا از دکمهٔ کارت با نماد پیوند خارجی در حالت جریان.
حالت برجسته ذخیره نمی‌شود، در تاریخچهٔ واگرد نیست و همکاران آن را نمی‌بینند.

خط‌های اتصال را در بوم ERD با گزینهٔ نمایش Relationship، یا فقط برچسب‌هایشان را با گزینهٔ نمایش Referential Actions که به‌طور پیش‌فرض روشن است، پنهان کنید؛ گزینه‌های نمایش جدول را ببینید.
برچسب‌ها در سطح بزرگ‌نمایی 70% و کمتر، یعنی جایی که جدول‌ها فقط به نامشان خلاصه می‌شوند، رسم نمی‌شوند.
صادر کردن تصویر همیشه در 100% رسم می‌شود، بنابراین برچسب‌ها را صرف‌نظر از بزرگ‌نمایی بوم رسم می‌کند، مگر اینکه یک گزینهٔ نمایش آن‌ها را پنهان کند. وقتی Background خاموش باشد، مستطیل پشت هر برچسب نیز شفاف است.
حالت جریان در زبانهٔ مصورسازی حتی وقتی Relationship خاموش است خط‌های اتصال را رسم می‌کند، هر کدام به‌صورت یک منحنی نرم، توپر و خاکستری با همان نشانه‌های انتهایی، بنابراین خط‌چین، برچسب‌ها، راهنمای ابزار، حالت برجستهٔ پس از پرش و مسیریابی متعامدی که در این صفحه توضیح داده شده است فقط برای بوم ERD کاربرد دارند. رابطه‌ای از یک جدول به خودش در حالت جریان نیز دور گوشهٔ بالا سمت راست جدول خم می‌شود؛ مسیریابی خط اتصال را ببینید.

مسیریابی خط اتصال​

خط‌های اتصال به‌صورت متعامد مسیریابی می‌شوند.
هر مسیر به‌جای عبور از روی جدول‌هایی که میان دو انتهایش قرار دارند، دور آن‌ها خم می‌شود و گوشه‌هایش گرد است.
هر انتها پیش از چرخش، با یک بخش مستقیم کوتاه از جدولش خارج می‌شود، بنابراین دو جدول با فاصلهٔ کم که انتهاهای خط اتصالشان در یک راستا قرار دارند به‌جای یک مسیر انحرافی با یک خط مستقیم به هم وصل می‌شوند.
مسیرهایی که از یک سمت جدول خارج می‌شوند در گذرگاه‌های جداگانه پخش می‌شوند تا روی هم نیفتند.
فقط از جدول‌ها پرهیز می‌شود: خط اتصال ممکن است از روی یک یادداشت یا کادر یک گروه جدول عبور کند و بالای گروه‌های جدول و زیر جدول‌ها و یادداشت‌ها رسم می‌شود.

رابطه‌ای از یک جدول به خودش به‌صورت یک منحنی دور گوشهٔ بالا سمت راست جدول رسم می‌شود که در انتهای والد از سمت بالا خارج می‌شود و در انتهای فرزند از سمت راست وارد می‌شود.
رابطه‌های خودارجاع بعدی روی همان جدول به‌صورت تودرتو بیرون از اولی قرار می‌گیرند، بنابراین منحنی‌هایشان نه یکدیگر را قطع می‌کنند و نه جدول را.

چیزی برای پیکربندی وجود ندارد.
هر بار که چیزی روی بوم جابه‌جا می‌شود یا اندازه‌اش تغییر می‌کند، مسیرها به‌طور خودکار دوباره محاسبه می‌شوند، بنابراین هرگز نیازی به تنظیم دستی آن‌ها نیست.

کشیدن جدول members به پایین و برگرداندن آن، در حالی که خط اتصال از orders میان عبور از سمت راست categories و دور زدن از سمت چپ آن جابه‌جا می‌شود و همهٔ گوشه‌ها گرد است