Soll ich das relationale Datenbankschema (3NF) für den Entwurf des Datenspeichers für Skygear verwenden?DB Scheme Design für Skygear
Zum Beispiel muss ich Benutzergruppe, die Benutzer enthält, sollte es Fall A oder B unten sein?
A.
- Benutzer {} userId
- Gruppe {groupId, Gruppenname}
- Grouping (UserID groupId, Rollen}
B.
- Gruppe {userId, groupId, groupName, role}
Ich denke, ich sollte das folgende Ergebnis schließlich bei der Weitergabe an die App haben.
{
"groupName":"Group A",
"groupId":"G123",
"administrator":[
{
"userId":"U123"
},
{
"userId":"U456"
}
],
"creator":{
"userId":"U123"
},
"member":[
]
}
Design B ist nicht in 3NF; Derselbe Gruppenname wird unnötigerweise für jede unterschiedliche Kombination wiederholt, deren Benutzer-ID & Gruppen-ID er erscheint. Eine Anwendung fragt nach den gewünschten Basistabellen ab. Relationale DBMS sind dafür gedacht. Warum denken Sie, dass es wichtig ist, dass einige Abfragen nicht gleich aussehen wie einige Tabellen im besten Datenbankentwurf? – philipxy