SQL - моделирование ролей для сотрудников - PullRequest
0 голосов
/ 15 декабря 2018

Мне интересно, как лучше представить следующую ситуацию в базе данных.

У вас есть таблица для ролей.Их всего несколько: [МЕНЕДЖЕР, СТОК, КАССА, ПО УМОЛЧАНИЮ].Между сотрудником и магазином существует много-много отношений.В магазине может быть много сотрудников, и сотрудник может быть нанят во многих магазинах.Кроме того, сотрудник может иметь только одну роль в магазине, с которой он связан.

Если ниже приведен правильный способ моделирования этих таблиц?Есть ли лучший способ?

CREATE TABLE EmployeeStore
(
    Id 
    StoreId
    EmployeeId
    EmployeeRoleId 
)

CREATE TABLE Store
(
    Id 
    Name
)

CREATE TABLE Employee
(
    Id 
    ...
)

CREATE TABLE Role
(
    Id 
    ...
)

1 Ответ

0 голосов
/ 01 сентября 2019

Обычно, когда существует отношение «многие ко многим», имейте в виду, что вам нужно создать новую таблицу для этого отношения «многие ко многим», первичные ключи обеих таблиц работают там как внешние ключи, иСочетание этих двух работает как первичный ключ в новой таблице.Позвольте мне прояснить это с помощью примера:

Предположим, у нас есть таблица STUDENTS, имеющая различные атрибуты, такие как student_id(pk), Student_name и т. Д., И вторая таблица с именем subject, имеющая различные атрибуты, такие как subjectCode(pk), subject_faculty, subject_duration и т.д.

Соотношение между этими двумя таблицами много-много: один студент может зарегистрировать более одного предмета, а предмет может иметь много студентов, для этой ситуации мы создаем новую третью таблицу StudentsSubject, имеющую student_id и subjectCode как внешние ключи из существующих таблиц, а комбинация этих двух атрибутов выступает в качестве первичного ключа этой таблицы, вы можете изучить ее более подробно.

Прежде чем кто-то посвятит мой ответ,Пожалуйста, дайте мне причину раньше, чтобы я мог попытаться прояснить, Если вы согласны, пожалуйста, проголосуйте.

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