الانتقال إلى المحتوى الرئيسي

تحرير العلاقات

تُرسم العلاقات من قائمة السياق للوحة الرسم أو من شريط أدوات لوحة الرسم أو من البحث السريع أو باستخدام اختصار، راجع بدء التحرير.
تتناول هذه الصفحة ما يمكنك فعله بالعلاقة بعد إنشائها، وكيف يجعل تعيين الأعمدة العلاقة تنتهي عند أعمدة موجودة بالفعل في الجدول الفرعي، وكيف تُسمّى أعمدة المفاتيح الخارجية التي تضيفها العلاقة.

الحذف​

يمكن الحذف من خلال قائمة السياق للعلاقة.

حذف العلاقة من 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 على الأسماء وأنواع البيانات نفسها، راجع الأدوات.

قراءة خط الربط​

  • تُرسم العلاقة المُعرِّفة بخط متصل، والعلاقة غير المُعرِّفة بخط متقطع.
  • يحمل طرف الجدول الفرعي رمز التعددية لنوع العلاقة: دائرة وشرطة عند Zero One، ودائرة وقدم الغراب عند Zero N، وشرطتان عند One Only، وشرطة وقدم الغراب عند One N.
  • يكون طرف الجدول الأصل دائرة وشرطة، مثل Zero One، عندما يسمح أي من أعمدة المفتاح الخارجي بالقيمة NULL، وشرطتين، مثل One Only، عندما تكون كلها 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 والالتفاف حول يساره، وكل الزوايا مستديرة