דילוג לתוכן הראשי

עריכת קשרים

קשרים משורטטים מתפריט ההקשר של בד הציור, מסרגל הכלים של בד הציור, מהחיפוש המהיר או באמצעות קיצור מקשים – ראו תחילת העריכה.
דף זה מתאר מה ניתן לעשות עם קשר אחרי שהוא קיים, כיצד מיפוי עמודות גורם לקשר להסתיים בעמודות שכבר קיימות בטבלת הבן, וכיצד נקבעים השמות של עמודות המפתח הזר שהקשר מוסיף.

מחיקה​

ניתן למחוק קשר דרך תפריט ההקשר של הקשר.

מחיקת הקשר מ-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 לבדו נותן integer ב-PostgreSQL ו-bigint unsigned ב-MySQL וב-MariaDB, ונשאר serial בכל מסד נתונים אחר.
רק שם הסוג השלם נחשב, ללא הבחנה ברישיות, ולכן serial(4) מועתק כפי שנכתב. סוג שנכתב באותיות רישיות נותן אותיות רישיות: SERIAL נותן INTEGER ב-PostgreSQL. עמודת מפתח זר שכבר יש לה הסוג 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 מקבל את אותם שמות ואת אותם סוגי נתונים – ראו כלים.

קריאת קו קשר​

  • קשר מזהה מוצג כקו רציף, וקשר לא מזהה כקו מקווקו.
  • בקצה הבן מופיע סימן הקרדינליות של סוג הקשר: עיגול וקו עבור אפס או אחד, עיגול ורגל עורב עבור אפס או N, שני קווים עבור אחד בלבד, וקו ורגל עורב עבור אחד או N.
  • קצה האב הוא עיגול וקו, כמו אפס או אחד, כשאחת מעמודות המפתח הזר מתירה NULL, ושני קווים, כמו אחד בלבד, כשכולן NOT NULL.
  • ריחוף עם הסמן מעל קו קשר מדגיש אותו יחד עם העמודות שהוא מקשר בשתי הטבלאות.

ריחוף מעל שלושה קווי קשר בזה אחר זה, כשכל אחד מהם מואר יחד עם העמודות שהוא מקשר

לצד קצה הבן של קשר שמגדיר 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 עדיין מוצג כ-D:SD ב-MySQL.

ריחוף מעל קו קשר שמוגדרת בו לפחות אחת מהפעולות מציג גם תיאור כלי שמפרט את הפסוקיות במלואן, אחת בכל שורה, כגון ON DELETE CASCADE ו-ON UPDATE RESTRICT.
תיאור הכלי מופיע גם כשהתווית מוסתרת.

מעבר אל קשר מאיר אותו: בחירה בשורה תחת התיקייה Foreign Keys של טבלה בסייר, או בשורת מפתח זר במציג ההבדלים, מציגה את קו הקשר ואת התווית שלו בצבע הריחוף. במציג ההבדלים מואר קו הקשר בכל צד שמכיל את הקשר, כך שמפתח זר שנוסף מאיר רק את הצד הנוכחי, ומפתח זר שהוסר רק את הצד השמור.
הקפיצה בוחרת רק את טבלת הבן יחד עם עמודות המפתח הזר שלה, כשהתא הפעיל נמצא בראשונה מהן; הקשר עצמו עדיין לעולם אינו נבחר. לגבי המקום שאליו עוברת התצוגה, ראו היכן נוחתת קפיצה.
ההארה נכבית בלחיצה השמאלית או הימנית הבאה על בד הציור, בין אם על מקום ריק, טבלה, פתק, קבוצת טבלאות או קו קשר, ואפילו בלחיצה שמשאירה את הבחירה כפי שהייתה. גם מעבר לשורה אחרת או להתאמת חיפוש אחרת בסייר מכבה אותה, וכך גם מעבר לשורה אחרת במציג ההבדלים, בכל צד שאליו השורה הזאת עוברת.
הזזת התצוגה באמצעות לחצן העכבר האמצעי או כלי היד משאירה אותה מוארת, וכך גם כיווץ או הרחבה של שורה בסייר או במציג ההבדלים, ביטול הבחירה באמצעות Escape, וקפיצה מהחיפוש המהיר או מלחצן הכרטיס של הקישור החיצוני במצב זרימה.
ההארה אינה נשמרת ואינה נכללת בהיסטוריית הפעולות, ושותפים לעריכה אינם רואים אותה.

ניתן להסתיר את קווי הקשר בבד הציור של ERD באמצעות אפשרות התצוגה Relationship, או רק את התוויות שלהם באמצעות אפשרות התצוגה Referential Actions, שמופעלת כברירת מחדל – ראו אפשרויות תצוגה של טבלאות.
התוויות אינן מוצגות ב-70% ומטה, שם הטבלאות מצטמצמות לשם שלהן.
ייצוא תמונה מוצג תמיד ב-100%, ולכן הוא מציג את התוויות בכל רמת זום של בד הציור, אלא אם אפשרות תצוגה מסתירה אותן. כשהאפשרות Background כבויה, גם התיבה שמאחורי כל תווית שקופה.
מצב זרימה בכרטיסיית ויזואליזציה מציג קווי קשר גם כשהאפשרות Relationship כבויה, כל אחד כעקומה אפורה רציפה וחלקה אחת עם אותם סימני קצה, ולכן הקו המקווקו, התוויות, תיאור הכלי, ההארה אחרי קפיצה והניתוב האורתוגונלי שמתוארים בדף זה חלים רק על בד הציור של ERD. גם במצב זרימה, קשר מטבלה אל עצמה מתעקל סביב הפינה הימנית העליונה – ראו ניתוב קווי קשר.

ניתוב קווי קשר​

קווי הקשר מנותבים באופן אורתוגונלי.
מסלול מתכופף סביב הטבלאות שנמצאות בין שני קצותיו במקום לחצות אותן, והפינות שלו מעוגלות.
כל קצה יוצא מהטבלה שלו בקטע ישר קצר לפני שהוא פונה, כך ששתי טבלאות קרובות זו לזו שקצוות קו הקשר שלהן מיושרים זה מול זה מחוברות בקו ישר אחד ולא במעקף.
מסלולים שיוצאים מאותו צד של טבלה מפוזרים למסדרונות נפרדים, כך שאינם עוברים זה על גבי זה.
רק טבלאות נעקפות: קו קשר עשוי לחצות פתק או את המלבן של קבוצת טבלאות, והוא מוצג מעל קבוצות טבלאות ומתחת לטבלאות ולפתקים.

קשר מטבלה אל עצמה מוצג כעקומה אחת סביב הפינה הימנית העליונה של הטבלה, שיוצאת מהצד העליון בקצה האב ונכנסת לצד הימני בקצה הבן.
קשרים עצמיים נוספים באותה טבלה מקוננים מחוץ לראשון, כך שהעקומות שלהם אינן חוצות זו את זו או את הטבלה.

אין מה להגדיר.
המסלולים מחושבים מחדש באופן אוטומטי בכל פעם שמשהו בבד הציור זז או משנה את גודלו, כך שלעולם אין צורך לגעת בהם ידנית.

גרירת הטבלה members למטה ובחזרה, בזמן שקו הקשר מ-orders מתחלף בין מעבר מימין ל-categories לבין מעבר סביב צידה השמאלי, וכל הפינות מעוגלות