我应该使用关系数据库方案(3NF)来设计Skygear的数据存储吗?Skygear DB方案设计
例如,我必须包含用户的用户组,它应该是下面的情况A还是B?
A.
- 用户{用户id}
- 组{的groupId,组名}
- 分组(用户ID,的groupId,角色}
B.
- 组{userId,groupId,groupName,role}
我想我应该在传递给应用程序时最终得到以下结果。
{
"groupName":"Group A",
"groupId":"G123",
"administrator":[
{
"userId":"U123"
},
{
"userId":"U456"
}
],
"creator":{
"userId":"U123"
},
"member":[
]
}
设计B不在3NF;对于每个不同组合的用户标识和组标识,都会重复使用相同的组名称。应用程序根据基表查询任何想要的内容。关系数据库管理系统就是为此而设计的。为什么你认为重要的是在最好的数据库设计中某些查询与某些表看起来不一样? – philipxy