Наличие обязательного отношения не совпадает с наличием идентифицирующего отношения .
Идентифицирующее отношение имеет первичный ключ, который включает внешний ключ для родительского элементатип сущности, а также один или несколько других предикатов (столбцов).Исключением является 1: 1, идентифицирующая отношения, и в этом случае внешнего ключа достаточно, чтобы однозначно идентифицировать тип дочернего объекта.
Если ваша таблица message
будет иметь свой собственный уникальный идентификатор, независимый от внешнегоключ к user
, тогда отношения между ними не являются идентифицирующими отношениями.
Не существует жесткого и быстрого правила относительно того, что является «правильным» способом моделирования отношений.Люди имеют разные (и часто твердо) мнения о том, должен ли каждая таблица иметь бессмысленный, автоматически генерируемый целочисленный первичный ключ.
В вашем случае я бы спросил о том, как вы относитесь к сообщениям.Является ли конкретное сообщение, скажем, 2437-м, отправленным пользователем A , или просто сообщением 835092nd в вашей системе?Вы можете взглянуть на это в любом случае, но что для вас имеет больше смысла, исходя из того, как ваша система будет использовать эти данные?
Я бы также спросил, ваш проект записывает, кто отправляет сообщение, но где он записывает, ктополучает сообщение?Это известно вашей системе или все сообщения публикуются в «общедоступных» (что это значит для вашей системы)?Влияет ли этот факт на ваше представление об идентификаторе message
?