Обязательный и Не обязательный в неидентифицирующих отношениях - PullRequest
2 голосов
/ 07 апреля 2011

Применительно к последней части ответа, приведенной здесь: В чем разница между идентифицирующими и неидентифицирующими отношениями?

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

Я создаю неидентифицирующее отношение в MySQL Workbench, и не имеет значения, сохраняю ли я столбец внешнего ключа ОБЯЗАТЕЛЬНО или НЕ ОБЯЗАТЕЛЬНО. Даже если это НЕ ОБЯЗАТЕЛЬНО, я не могу ввести в него значения NULL. Я должен явно выбрать этот конкретный внешний ключ как разрешающий NULL, и только тогда я смогу хранить значения NULL.
Поэтому я хочу спросить, правильное ли это поведение или это проблема MySQL Workbench или MySQL?

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 июля 2011

G'day,

Ответ: Ошибки в MySQL Workbench.

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

Для неидентифицирующих отношений рабочее место должно указывать, является ли оно обязательным для значка с розовым ромбом (или не обязательно для незаполненного розового ромба). Для определения взаимосвязи вы должны увидеть ключ для обозначения первичного ключа.

Я не жалуюсь на ошибки в версии сообщества! программное обеспечение верстака получает от меня 10/10. Если, с другой стороны, вы используете стандартную версию, обратитесь в MySQL.

(я использую MySQL Workbench v5.2.34 CE, Rev 7780.)

Приветствия

0 голосов
/ 07 апреля 2011

Это звучит как проблема с вашим инструментом дизайна, с которой я не знаком.

Ограничения внешнего ключа всегда необязательны в SQL. То есть внешний ключ не требует строки в ссылочной таблице, он только требует, чтобы каждая ссылочная строка имела соответствующую строку в ссылочной таблице (родительской таблице). Это один из способов, которым моделирование ER плохо отображается в базе данных SQL. Вы можете нарисовать картину обязательного отношения 1 к N (N> 0) на диаграмме ER, но для большинства практических целей вы не можете реализовать в SQL - фактически это всегда от 1 до 0 / N.

Хотя допускаются пустые внешние ключи, я не рекомендую вам это делать. Нули во внешних ключах, вероятно, позже вызовут проблемы с неверными результатами, они работают по-разному в разных СУБД и, как правило, неправильно понимаются даже опытными пользователями.

...