Ну, первичный ключ - это столбец или комбинация столбцов, которые делают строку в таблице уникальной.В первом примере mgr Id не является частью ключа, потому что менеджер назначен непосредственно пользователю, таким образом, имея только одного менеджера на пользователя.Поэтому, если вы знаете пользователя, менеджер не имеет значения, поскольку он получен от пользователя.С другой стороны, если у пользователя может быть более одного менеджера, вы должны извлечь идентификатор менеджера из этой таблицы и создать таблицу торговых представителей менеджера, чтобы сохранить эти отношения.В любом случае, менеджер действительно не нужен, чтобы сделать торгового представителя уникальным.
Второй пример более запутанный, поскольку зависит от интерпретации (не очень хорошего) описания проблемы.Если только один человек может осматривать дом в день, то да, персонал не нужен как часть первичного ключа.Однако, поскольку проблема говорит о том, что в машине может быть больше одного человека, возможно, что два человека вместе могут осмотреть дом за один день.Это будет означать, что персонал должен быть частью ключа в этом случае.
В конце концов, как и все в разработке программного обеспечения, все зависит от того, чего вы пытаетесь достичь с помощью своего приложения.