Как реализовать принцип «один ко многим» в базе данных

Я хочу реализовать концепцию один-ко-многим в своем приложении. Это сценарий: у меня есть две таблицы

(i). Лицо (ID, ИМЯ, ВОЗРАСТ, ОТДЕЛ)
(ii). Обязанности человека (ID, RESP'S)

Одно лицо может иметь более одной ответственности. Как мне реализовать здесь отношение 1-n ? На самом деле, я не понимаю правильных концепций для этого.

Мы будем благодарны за любые предложения или ссылки для понимания этой концепции.

14
задан philipxy 26 June 2017 в 23:40
поделиться

1 ответ

Это отношение «один ко многим» можно интерпретировать простым английским языком следующим образом...

Человек имеет одну или несколько обязанностей,

И

Каждая обязанность принадлежит ровно одному человеку.

Теперь, в зависимости от того, какие rdbms вы используете, вы должны реализовать это как отношение внешнего ключа.

Сначала вам нужно добавить в RESPS столбец, указывающий на таблицу person.

Назовем этот новый столбец PERSON_ID.

Теперь мы можем объявить отношения, код может выглядеть примерно так;

ALTER TABLE [Responsibilities] ADD CONSTRAINT FOREIGN KEY (PERSON_ID) 
REFERENCES [Person] (ID)

И это объявление ограничения внешнего ключа будет означать, что с этого момента вы не можете добавить ответственность, не указав человека, которому принадлежит эта ответственность.

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

Обратите внимание, что все это является академическим, так как в реальной жизни обязанности разделены.

Другими словами, лицо может иметь одну или несколько обязанностей, но каждая обязанность может принадлежать одному или нескольким лицам.

Это называется отношением «многие ко многим» и представляет собой хорошо известную проблему проектирования баз данных с четко определенным решением, которое я не буду сейчас рассматривать, поскольку оно не имеет отношения к вашему вопросу.

20
ответ дан 1 December 2019 в 13:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: