mrdime 20:34 14-04-2014 Цитата: Поясню. Каждый адресат в адресной книге должен быть записан только один раз (как и в любой базе данных). А вот входить в группы мог бы в какие-угодно, т.е. в виртуальной группе должна бы была находиться только ссылка на конкретного адресата
Не знаю, как там всё унутре устроено, сколько записей делается в базе данных и сколько ссылок. Но
с функциональной точки зрения нет отличий от описанного вами алгоритма. С той только разницей, что нет какой-то одной "главной" записи, на которую ссылались бы все остальные: записи контакта во всех группах равноценны, но взаимосвязаны (см ниже).
Может, вы не там настраиваете принадлежность контакта к группам? Гляньте на скриншот.
Цитата: при удалении группы соответственно адресат бы не удалялся, а удалялась бы только группа.
В целом, так оно и работает.
Изменение данных контакта в любой из групп автоматически изменяет данные этого контакта во всех остальных группах (как это и должно быть в нормальной базе данных).
Однако
удаление контакта из некоторых групп (или, как частный случай удаление некоторых групп вместе с этим контактом)
не ведёт к удалению контакта из остальных групп.
А вот
если удалить все группы, в которые входит данный контакт, то это действительно приведёт к удалению контакта из адресной книги. Ему просто негде станет жить
(В этом заключается важное отличие от "нормальной" базы данных, где после удаления всех "виртуальных" групп их члены всё-таки остаются в базе, но получают статус "бомж" "без группы". Надо привыкнуть к этой специфике адресной книги TheBat! - и тогда всё будет хорошо. Концепция, возможно, не слишком удачная, но так уж оно есть.)
Чтобы при удалении группы контактов (или отдельного контакта из этой группы) случайно не удалить нужный контакт совсем из базы данных (если окажется, что этот контакт не входит ни в одну из оставшихся групп) можно создать ещё одну, служебную группу (назвав её как-нибудь вроде "резервная", "общая", "без группы" и т.п.) и вносить в неё
все без исключения контакты. Тогда даже при удалении всех остальных групп контакты останутся, по крайней мере, в этой группе. Это будет как бы функциональный аналог "главной" записи в базе данных (хотя технически он, конечно, не отличается от всех остальных записей этого контакта).
(Возможно, было бы более логичным вместо создания "резервной" группы просто иметь одну запись каждого контакта в общем списке в "корне" адресной книги. Но это невозможно технически, поскольку в корневой директории могут находится только контакты, не внесённые ни в одну из групп. Если же контакт внесён хотя бы в одну группу, то он удаляется из корневой директории, вернуть его туда вручную не получится. Я пробовал и мышью перетаскивать, и копировать через буфер - не добавляется
Возможно, это баг, а может, так и было задумано.)
Цитата: Внесение изменений в эл. адрес или любую другую инфу об. адресате отображалось бы во всех группах сразу и т.п.
Именно так и происходит. Попробуйте изменить данные контакта, входящего в несколько групп, и посмотрите, изменятся ли данные этого контакта в других группах.