数据库的结构如何像游戏一样?用户可以玩的地方,我存储积分时间等,并且有不同的级别,然后我想用难度查询用户,我猜是
users
-- id
--- name
--- ....
-- id
--- name
--- ....
然后是难度表
diff
-- id
-- 2
-- id
-- 3
然后我想像一个表来存储像用户级别和积分一样的排名,数据库结构怎么样?
答案 0 :(得分:0)
用于排名的Firebase数据结构将如下所示:
Ranking
-- level 1
-- 1 // top list for level 1
-- name -> username1 (value)// user details, point and name, can be store more details.
-- point -> 300
-- 2
-- name -> username2
-- point -> 260
......
-- level 2
-- 1 // 1st user
-- name -> username1
-- point -> 280
-- 2 // 2nd user
-- name -> username2
-- point -> 240
......
-- level 3
-- 1
-- name -> username1
-- point -> 230
-- 2
-- name -> username2
-- point -> 200
......
答案 1 :(得分:0)
如果对象USER具有正确的属性,则不需要仅用于商店排名的表。例如:
<强>类强>
public class UserData {
//------PROPERTIES-------
private String id;
private String nickname;
private int points;
private int level;
private String email;
}
...
<强>活性强>
private final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
private final DatabaseReference userReference = databaseReference.child("Users");
/** --SAVING USER--
* * THIS METHOD INSERT OBJECT USER IN DATABASE
* **/
private void insertNewUser(String id, String nickname, String email, int points, int level)
{
try {
UserData userdata = new UserData(id, name, nickname, email, points);
userReference.child(id).setValue(userdata);
}catch (Exception e)
{
e.printStackTrace();
}
}
这在firestore中更好,你可以在需要的时候改变这个结构......不需要开始你所有的结构完成项目。 然后,对于节目排名,您只需要 OrderBy
rankingRef.orderBy("level").orderBy("points");
/**
* RETRIEVE DATA
* */
public void loadUsers(final int level)
{
final List<UserData> userList = new ArrayList<UserData>();
if(userList.size() > 0)
{
userList.clear();
}
//--INITIALIZE--
userListRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> children = dataSnapshot.getChildren();
for(DataSnapshot child: children)
{
UserData user = child.getValue(UserData.class);
userList.add(user);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}