Skygear 용 데이터 저장소 설계에 관계형 데이터베이스 스키마 (3NF)를 사용해야합니까?Skygear 용 DB Scheme Design
예를 들어 아래의 사례 A 또는 B에 해당하는 사용자가 포함 된 사용자 그룹이 있어야합니까?
A.
- 사용자 {userId를}
- 그룹 {의 groupId, groupName을}
- 그룹화 (사 용자 ID의 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는이를위한 것입니다. 어떤 쿼리가 최상의 데이터베이스 디자인에서 일부 테이블처럼 보이지 않는 것이 중요하다고 생각하는 이유는 무엇입니까? – philipxy