Внедрение отношения "один к нулю" или "один" в SQL Server

Я использую первый подход к базе данных Entity Framework 4.1. Я использовал устаревшую базу данных. В моем файле edmx, который создал классы сущностей на основе таблиц в старой базе данных, между некоторыми объектами существует связь один к нулю или один.

Хотя я изучил таблицы базы данных и отношения между ними, я не узнал, как отношение одно к нулю или было реализовано в базе данных.

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

enter image description hereenter image description here

Ответ 1

Отношение 1-0..1 в вашей базе данных отображается непосредственно. Он построен между таблицами курсов и онлайн-курсов, где курс является основным в отношении (1), а OnlineCourse зависит от FK, настроенного на CourseID. FK также является PK OnlineCourse = он должен быть уникальным, и из-за этого он равен 0..1.

База данных "всегда" использует 1 - 0..1, потому что реальный 1 - 1 не может быть эффективно использован для вставки данных. 1 - 1 означает, что левый должен быть вставлен после правого, но правый должен быть вставлен после левого = невозможно. Из-за этого используется 1 - 0..1, где left является основным и должен быть вставлен до того, как правое и правое будут зависеть и должны быть вставлены после левого.

Ответ 2

Если таблицы базы данных уже сконструированы с соотношением 1:1 (или 1: 0-1), тогда EF будет работать с ним просто отлично, хотя он будет плюрализовать имя дочерней таблицы (если вы позволите ей плюрализовать),

Основной подход - создать внешний ключ (как если бы вы делали отношения 1: многие), а затем поместить уникальный индекс в поле внешнего ключа. Это то, к чему вы стремитесь?

Это также может помочь: Разработка отношений 1:1 и 1: m в SQL Server.

С одной стороны, отношения 1-1 часто не нужны и/или симптом дизайна базы данных, который нуждается в переосмыслении. Однако, похоже, что вы унаследовали дизайн... Я знаю все об этом!