Это зависит от бизнес-классов, которые вы хотите использовать.Вы могли бы иметь эти классы;
class Person
{
int Id { get; private set; }
string Name { get; set; }
string Address { get; set; }
IList<Account> Accounts { get; private set; }
}
class Account
{
// ...
}
Тогда вы отображаете это "обычно" как один ко многим.Не забудьте использовать ленивую загрузку.Вы можете сделать его двунаправленным.
Вы можете создать оптимизированный запрос, который не позволяет загружать учетные записи только для их подсчета:
select
p,
size(p.Accounts)
from
Person p
where
p.id = :id
Это производит запрос, аналогичный вашему.Вы получаете человека в первом столбце и количество учетных записей во втором.