Проектирование БД MS SQL Server с возможными множеств значений

Подскажите пожалуйста. Проектирую БД и столкнулся с такой проблемой. Вот примерный проект БД Проект БД

Оказалось что у 1 Persons может быть множества Services. Например: Person {id: 1; Name: Иван; date: 07.04.2022} будет и idService {1} это нормальное явление, но если Person будет ссылаться на множества id из таблицы Service. Подскажите пожалуйста, как решить данную проблему


Ответы (1 шт):

Автор решения: Great Tech

Раз у персоны может быть несколько сервисов, зачем вам в таблице персоны упоминать ID сервиса? Вам следовало бы задать идентификатор для персоны.

Набор следующих таблиц можно считать хорошей реализацией:

Person (PersonID, Name, Date) - здесь храним информацию о каждой персоне (для чего date, кстати?).

Services (PersonID, ServiceID) - здесь храним связки персона-сервис.

ServiceNames (ServiceID, Name) - здесь храним информацию о том, как каждый сервис называется (подразумевая, что каждому ServiceID соответствует определенный Name)

Извлечение информации

Для получения определенного рода информации вам понадобится JOIN.

Например, чтобы получить таблицу, в которой есть и персона, и ее имя, и сервис, и название сервиса, вам будет необходимо воспользоваться join'ом: по ключу PersonID между таблицами Person и Services, а затем по ключу ServiceID между таблицами Services и ServiceNames .

Логика запроса:

Выбрать все значения из таблицы Person объединить с Services по ключу Person.PersonID = Services.PersonID объединить с ServiceNames по ключу Services.ServiceID = ServiceNames.ServiceID

→ Ссылка