我正在开发社交网络应用程序的浏览器前端。它有很多关系数据,具有一对多(1:m) 和大多数多对多(m:m) 关系,如下表所示。
我想在应用程序中使用 Flux 数据流架构。我将 Vuex.js 与 Vue.js 一起使用。
正如 Redux.js 文档中所表达的那样,出于各种原因使用 React,最好使用平坦、规范化的存储状态形状,我认为使用 Vue.js 也是如此。
- 帖子有类别(m:m)
- 帖子有标签 (m:m)
- 帖子有评论 (1:m)
- 帖子中有主题标签 (m:m) // 或用户创建主题标签
帖子中有提及(m:m)//或用户创建用户提及
用户喜欢帖子 (m:m)
- 用户关注用户、帖子、帖子类别等 (m:m)
- 用户最喜欢的帖子 (m:m)
等等
我将需要显示帖子提要及其所有其他实体的相关数据,如用户、评论、类别、标签。为此,就像有一个1:many关系一样,将这个关系的数据的 many 边保存在一侧(可以说是parent),即使它实际上是many-to-many,对于通常查询它们似乎没问题组成他们的父母,那就是帖子。但是,我还需要反向查询商店状态,例如,获取具有特定类别或标签的帖子。
在这种情况下,它不像帖子那样容易。我需要一个关系实体来保存两个连接数据实体的id对,就像 RDBMS 中的连接表或关联表一样,以便于访问和更新,避免深入挖掘状态,并避免不必要的重新渲染(即要求是 React 或 Vue.js 和 GUI 特定的)。
我怎样才能相对容易和有效地实现这一点,例如对于1:many关系?