Не существует правильного пути для структуры базы данных. Правильное решение для вашей базы данных - это решение, которое соответствует вашим потребностям и облегчает вашу работу. Мое мнение относительно вашей схемы базы данных на самом деле связано с тем, чего вы действительно хотите достичь.
Если вы хотите сделать запрос к вашей базе данных, чтобы получить только клиентов, которые соответствуют определенному администратору, тогда вы можете перейти к первому варианту. Если вы хотите в какой-то момент получить все клиенты из вашей базы данных, то второй вариант поможет вам добиться этого. Так что может быть вариант использовать оба варианта.
Но, если вы хотите добиться того же, используя второй вариант, это может быть возможно только в том случае, если вы будете использовать запрос, основанный на одном свойстве (свойство uid
), например:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference clientsRef = rootRef.collection("Clients");
Query query = clientsRef.whereEqualTo("uid", uid);
Но если вы хотите, чтобы instend добился того же, что и в первом варианте, и используйте запрос, который выглядит следующим образом:
Query query = clientsRef.whereEqualTo("uid", uid).orderBy("aProperty", Query.Direction.ASCENDING);
Вам нужно знать, что вы не можете этого достичь. Это невозможно, потому что в этом случае вам нужно создать index , и вы не можете вручную создать индекс для каждого uid
.
Еще одна вещь, я рекомендую вам использовать uid
вместо email address
в качестве ключа документа.