Должен ли я использовать схему реляционной базы данных (3NF) для проектирования хранилища данных для Skygear?Схема схемы DB для Skygear
Например, у меня есть группа пользователей, которая содержит пользователя, должна ли она быть в случае A или B ниже?
А.
- пользователя {идентификатор пользователя}
- Группа {идентификатор_группы, GroupName}
- Группировка (идентификатор пользователя, идентификатор_группы, роль}
Б.
- Группа {userId, groupId, groupName, role}
Я думаю, что при переходе в приложение, я должен получить следующий результат.
{
"groupName":"Group A",
"groupId":"G123",
"administrator":[
{
"userId":"U123"
},
{
"userId":"U456"
}
],
"creator":{
"userId":"U123"
},
"member":[
]
}
Дизайн B не в 3NF; одно и то же имя группы ненужно повторяется для каждой другой комбинации идентификатора пользователя и группы, с которым он появляется. Приложение запрашивает все, что захочет, с точки зрения базовых таблиц. Для этого предназначены реляционные СУБД. Почему, по вашему мнению, важно, чтобы какой-то запрос выглядел не так, как в таблице наилучшего дизайна базы данных? – philipxy