Как реализовать правильные отношения между таблицами? - PullRequest
0 голосов
/ 25 мая 2018

Привет всем,

Я планирую изменить текущий бэкэнд для моей компании.Я планирую создать новый веб-сервис с asp.net core и ef core .Честно говоря, я застрял в архитектуре.

Я не знаю, как мне реализовать отношения между таблицами для Entity Framework.Есть более одной должности в качестве сотрудников.И я не хочу реализовывать ролевый слой для этой архитектуры.Поэтому я создал такие таблицы: Сотрудники , Кассиры , Упаковщики , ... и т. Д. И спроектировал их так: Employees (EmployeeId, EmployeeName, ...) Cashiers (EmployeeId, Fee, ...) Но я 'Читал где-то нет способа использовать отношения 1 к 1 в SQL.Итак, как я могу реализовать эти отношения?

Диаграмма ER: Отношения сущностей

1 Ответ

0 голосов
/ 25 мая 2018

Если вы используете SQL Server, то я согласен, что не может быть реального отношения 1 к 1.

Соотношение должно быть 1: 0..1, так как вам нужносначала вставьте одну строку, а другую - вторую.В течение некоторого минимального промежутка времени отношение будет 1: 0, а затем переключится на 1: 1.

Для реализации реального 1-к-1 вам нужно будет использовать стандарт Функция SQL, называемая Ограничение отсрочиваемости .К сожалению, насколько я знаю, эта функция доступна только в базах данных PostgreSQL и Oracle.В этих базах данных у вас действительно могут быть отношения 1: 1, поскольку ограничение проверяется не для каждой вставки строки, а в конце транзакции.

Сказав это, меня это не сильно волнует.Если вы выполняете вставку с использованием транзакций базы данных, то я не понимаю, почему это может вызвать проблемы.Используя такой процесс, как:

  1. Начать транзакцию.

  2. Вставить в таблицу Employee.

  3. Вставьте в таблицу Cashier.

  4. Подтвердите транзакцию.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...