я была назначена задача, с которой я не знаю, как подойти к нему База данных:Хороший дизайн/нормализация
Я должен построить Messaging-System, которая поддерживает несколько устройств, и это должно быть как можно более эффективным. Пользователи могут иметь до 10 устройств, которым все должны получать сообщение, когда Пользователь его получает.
У меня есть две идеи:
Table Messages:
- ID (PK)
- SenderID
- ReceiverID
- Data
Table PendingTransmissions:
- MessageID (FK (PK of above table))
- DeviceID (FK)
Проблема здесь в том, что каждый раз, когда сообщение посылается, одна запись для каждого устройства создается и приводит к большим накладных расходов.
Table Messages:
- ID (PK)
- SenderID
- ReceiverID
- Data
- ReceivedDevice1
- ReceivedDevice2
- ReceivedDevice3
- ReceivedDevice4
- ReceivedDevice5
- ReceivedDevice6
- ReceivedDevice7
- ReceivedDevice8
- ReceivedDevice9
- ReceivedDevice10
Проблема здесь, очевидно, в избыточности устройств, но накладные расходы будут ниже.
Какое лучшее решение или что-то, что я пропустил полностью?
Заранее благодарен!
Что вы считаете «большими накладными расходами»? Вы вставляете каждую строку в PendingTransmissions по одному за раз? – JimmyJames
Поместите зарегистрированные устройства приемников в отдельную таблицу. Затем при отправке сообщения посмотрите на эту таблицу для пользователя, получающего сообщение, и отправляйте на все зарегистрированные устройства – RiggsFolly
На стороне примечание «эффективный как можно» (предположительно с точки зрения скорости) почти никогда не является требованием. Вы никогда не закончите, потому что всегда есть возможность, что вы можете сделать это быстрее. Вам нужно выяснить, что такое хорошая производительность, а затем разработать для этого. – JimmyJames