首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空间齿轮的DB方案设计

空间齿轮的DB方案设计
EN

Stack Overflow用户
提问于 2017-02-17 09:10:09
回答 2查看 98关注 0票数 0

我应该使用关系数据库模式(3NF)来设计Skygear的数据存储吗?

例如,我必须使用包含用户的用户组,下面是A还是B?

一个。

  • 用户{userId}
  • 群{groupId,groupName}
  • 分组(userId,groupId,角色)

B.

  • 组{userId,groupId,groupName,角色}

我认为我应该有以下的结果时,最终传递到应用程序。

代码语言:javascript
复制
{
   "groupName":"Group A",
   "groupId":"G123",
   "administrator":[
      {
         "userId":"U123"
      },
      {
         "userId":"U456"
      }
   ],
   "creator":{
      "userId":"U123"
   },
   "member":[

   ]
}

EN

回答 2

Stack Overflow用户

发布于 2017-02-20 02:56:17

3NF有利于数据的完整性。每个人都喜欢数据完整性,但在设计应用程序时,它可能并不总是第一优先。

在您提供的情况下,如果更改了Group,我可能会选择A.B要求更新所有的groupName

除了考虑数据如何传递到应用程序之外,还要考虑如何更新和创建?

什么时候打破3NF的天窗?

组内没有用户。

在3NF中,您可能会使用聚合函数。Skygear还没有提供它,常见的方式是将user_count列添加到group记录中。并在添加/删除用户时更新该号码。

票数 1
EN

Stack Overflow用户

发布于 2017-02-20 02:55:50

3NF的应用。

虽然天窗不支持连接表。它具有使用外键的记录关系数据类型。(虽然只有一个级别)

https://docs.skygear.io/guides/cloud-db/data-types/android/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42293743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档