Диаграммы ER - Может кто-нибудь объяснить, пожалуйста, модальность? - PullRequest
0 голосов
/ 09 февраля 2020

Диаграммы ER - Может ли кто-нибудь объяснить модальность?

Modality - one at both ends

Вверху: если есть модуль, он должен принадлежать курсу. И если есть курс, мы бы очень хотели, чтобы был модуль. Но верна ли диаграмма?

Ограничение внешнего ключа обеспечивает, что если модуль существует в дочерней таблице, то в родительской таблице будет курс. Но нет другого ограничения, и, очевидно, вам нужно создать одну запись перед другой.

Итак, это более правильно (ниже)?

Modality - one at one end, zero at the other

Или нулевая модальность означает, что FK может быть нулевым?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

После прочтения этого сайта очень подробно мне кажется, что модальность нуля означает, что столбец может содержать нулевые значения. В этом случае столбец FK course_id может содержать нулевые значения, если модальность равна нулю.

Modality - one at one end, zero at the other «Если есть модуль, он должен принадлежать курсу», это означает, что модальность должна быть одним, поскольку внешний ключ не может быть нулевым. Если бы модальность была нулевой, а внешний ключ имел нулевые значения, то были бы модули, которые не принадлежали курсу.

Следовательно, изображение ниже будет правильным;

Modality - one at both ends Модальность ноль означает минимум нулевых отношений или объединений нулевой таблицы, но это не означает нулевые модули. Вы можете иметь модули, которые не принадлежат курсу, если модальность была нулевой, а внешний ключ был NULL.

Добавление к этому; MariaDB: ошибки ограничения внешнего ключа InnoDB

"требуется, чтобы внешний ключ был равен ключу-кандидату (PK) в некоторой строке первичной таблицы, или же не имеет значения ( значение NULL). Это называется ограничением ссылочной целостности между двумя таблицами. "

Таким образом, кажется, что у вас все еще может быть ограничение ссылочной целостности между двумя таблицами даже с нулевыми значениями и модальностью ноль.

Просто чтобы уточнить. Модальность - это внутренняя часть обозначения (минимумы), тогда как мощность - это внешняя часть (максимумы). Crows Foot Notation

0 голосов
/ 10 февраля 2020
  1. Первая диаграмма верна
  2. Нет "O" справа означает, что вы разрешаете пройти курс без модулей, это отношение 0-n.

Итак, первое означает отношение 1-n, что вы хотите, но вы не можете применить 1-n больше, чем 0-n в SQL. Использование «| <» предназначено для документации и реализации кода, а не для ограничения SQL. </p>

Значение вашего соглашения:
ERD legend

Примечание: я предпочитаю UML-нотацию "0-n", которая является более явной, здесь быть результатом в plantUML: (используйте planttext.com для рендеринга)
enter image description here

@startuml
title Relationships - Class Diagram
class Courses
class Modules
Courses "1" *-up- "1-n" Modules: Composition
@enduml
...