【发布时间】:2017-02-17 09:10:09
【问题描述】:
我应该使用关系数据库模式 (3NF) 来设计 Skygear 的数据存储吗?
例如,我必须要包含用户的用户组,它应该是下面的情况 A 还是 B?
一个。
- 用户{userId}
- 组{groupId, groupName}
- 分组(userId、groupId、角色}
B.
- 组{userId, groupId, groupName, role}
我认为在传递给应用程序时我最终应该得到以下结果。
{
"groupName":"Group A",
"groupId":"G123",
"administrator":[
{
"userId":"U123"
},
{
"userId":"U456"
}
],
"creator":{
"userId":"U123"
},
"member":[
]
}
【问题讨论】:
-
设计 B 不在 3NF 中;对于每个不同的组合,它出现的用户 ID 和组 ID 都会不必要地重复相同的组名。应用程序根据基表查询它想要的任何内容。关系 DBMS 就是为此而生的。为什么您认为某些查询与最佳数据库设计中的某些表看起来不一样很重要?
标签: postgresql relational-database database-schema skygear