Я пытаюсь смоделировать свою первую базу данных NoSQL (Firestore) для приложения, которое отражает решения демократических организаций (например, партий) об идеях.
Поэтому я был бы очень признателен, если бы вы могли просмотреть мой NoSQLконцепции и дать мне советы о том, как ее улучшить.Если вам понравилась идея и вы хотели бы поддержать проект, посмотрите git-repo: https://github.com/Donnerstagnacht/leftlife
Итак, я подумал о модели демократической идеи со следующими атрибутами:
// attributes of the idea
ideaID: string;
location: string;
image: string;
video: string;
text: string;
hashtags?: Object[];
date?: string;
Теперь пользователи могут выполнять следующие операции:
- Как у идеи
- Поделиться идеей
- Добавить комментарий
- Добавить предложение
- Группы могут поддержать идею
Пользователи и приложение также будут регулярно выполнять следующие операции:
- Пользователь ищет IdeaNames (SearchComponent)
- Пользователь ищет IdeaHashtags (SearchComponent)
- Пользователь ищет все идеи за промежуток времени (SearchComponent)
- Приложение запрашивает все идеи определенного события (EventComponent)
- Приложение запрашивает все идеи определенного человека (ProfileComponent)
- Приложение запрашивает все идеи определенной группы (GroupComponent)
- Приложение запрашивает идеи с наибольшим количеством лайков
- Приложение запрашивает идеи с самыми поддерживающими группами
Чтобы полностью представить идею, мне нужно получить различную информацию о:
- Автор
- Комментарии
- Предложения
- События
- Лайки
- Группы поддержки
Имея это в виду, я подумал создать 6 коллекций:
- Коллекция идей
- Коллекция пользователей
- Сборник комментариев
- Сборник предложений
- Сборник событий
- Сборник групп
... чтобы выполнить следующие запросы для отображения представления IdeaComponent
// the idea has an author
// query idea collection to retrieve
userID: string;
userName: string;
userImage: string;
// user can add comments
// query comment collection to retrieve
commentID: string;
commentText: string;
commentAuthorName: string; // userName
commentAuthorID: string; // userID
commentAuthorImage: string; // userImage
// user can add proposals how to change the idea
// query proposal collection to retrieve
proposalID: string;
proposalText: string;
proposalAuthorName: string; // userName
proposalAuthorID: string; // userID
proposalAuthorImage: string; // userImage
// user discuss the idea at real life events
// query event collection to retrieve
eventID: string;
eventAuthorName: string;
eventAuthorID: string;
eventAuthorImage: string;
// user can like the idea
// query user collection to retrieve
userID: string;
userName: string;
userImage: string;
// groups can support the idea
// query groups collection to retrieve
groupID: string;
groupName: string;
groupImage: string;