Я пытаюсь создать диаграмму ER, где у меня есть ПОЛЬЗОВАТЕЛЬ и объект MESSAGE. Пользователи могут отправлять сообщения другим пользователям. Я разработал для этого две альтернативные диаграммы, но я не уверен, какой из них правильный. Как моделировать обмен сообщениями между пользователями? - ER-диаграмма
ответ
Ни то, ни другое. Здесь у нас есть случай самостоятельности.
Отправка сообщений интерпретируется как событие, а не как сущность, даже если оно имеет атрибуты/свойства. Между двумя объектами существует тесная связь: пользователи, а также пользователи. Правильное место для концептуальной модели в ER-диаграмме будет:
Примечание мощности здесь. Пользователь может или не может отправлять сообщения другим пользователям. Аналогично, пользователь может получать или не получать сообщения от других пользователей.
После того, как вы расчленить его, то есть, как только вы делаете разложение в логической модели, вы в конечном итоге с следующий случай:
«В» и «С» здесь представляет иностранный ключ. Этот тип модели приводит к двум таблицам в базе данных. Один из них будет представлять пользователей системы. Другой будет представлять сообщения, которыми обмениваются пользователи. Внешние ключи здесь могут или не могут служить в качестве составного первичного ключа. Я, по-моему, предпочитаю использовать суррогатные ключи, но это зависит от вас.
Надеюсь, я каким-то образом помог. Если у вас есть дополнительные вопросы, прокомментируйте, и я отредактирую свой ответ, или я тоже могу добавить комментарий.
Я думаю, вы можете использовать второй, но только с одним отношением «многие ко многим».
Таким образом, вы можете иметь много-ко-многим отношений с двумя внешними ключами указывающих USER и один для СООБЩЕНИЯ.
Итак, у вас есть IDUSERSENDER, IDUSERRECEIVER и IDMESSAGE. Я не делаю то, что у вас есть в таблице сообщений, но вы также можете добавить атрибут в отношении ТЕКСТ для вставки здесь контура сообщения.
Как вы думаете? Соответствует ли эта идея вашим потребностям?
Я бы сделал sender_id атрибутом сообщения, имея таблицу «много ко многим» для получателей. Формально модель ER не смешивает отношения между объектами с атрибутами. Я считаю, что 2-я диаграмма формально правильная, хотя два отношения будут реализованы по-разному.
- 1. Android, обмен сообщениями между 2 зарегистрированными пользователями советы
- 2. Обмен сообщениями между пользователями с помощью приложения-узла
- 3. связи между пользователями с сообщениями
- 4. Python: обмен сообщениями между процессами
- 5. Обмен сообщениями между потребителями kafkacat
- 6. Видеомагнитофон Обмен сообщениями между кассетами?
- 7. Обмен заданиями rundeck между пользователями
- 8. Как реализовать систему обмена сообщениями между пользователями?
- 9. Как реализовать непрерывный обмен сообщениями между службами?
- 10. Как обеспечивается обмен сообщениями между Java-классами?
- 11. Как работает обмен сообщениями Akka
- 12. Socket.io Личный обмен сообщениями с несколькими пользователями онлайн одновременно
- 13. Сессия между двумя пользователями
- 14. Hadoop Heartbeat Обмен сообщениями
- 15. Обмен сообщениями между Django и Twisted
- 16. Двунаправленный обмен сообщениями между двумя tizen wearble
- 17. Socket.io - Ретрансляция сервера, обмен сообщениями между клиентом
- 18. обмен данными между другими пользователями/устройствами
- 19. Обмен сообщениями между Android и настольным компьютером
- 20. iOS 8 обмен данными между пользователями
- 21. Windows Phone 8 - Обмен данными между пользователями
- 22. Обмен сообщениями между ViewControllers с использованием делегатов
- 23. Обмен сообщениями между двумя скриптами Ruby
- 24. Обмен сообщениями между двумя процессами в Erlang
- 25. обмен сообщениями между приложениями в кластере
- 26. Обмен сообщениями между приложениями в разных сетях
- 27. Symfony2 - Обмен пользователями между несколькими приложениями
- 28. Мгновенный обмен файлами между пользователями в PHP
- 29. Приложение для Android: обмен данными между пользователями
- 30. Обмен объектами между пользователями с Backand