Иерархическая природа URI контент-провайдера и реляционная природа базы данных - PullRequest
0 голосов
/ 22 февраля 2011

Продолжая изучать Android, я познакомился с концепцией абстракции источника данных через провайдера контента.

Я заметил, что к провайдерам контента обращаются через URI, которые имеют иерархическую природу.

Мы все знаем об ограничениях иерархии, которая одна причин, по которым реляционные базы данных гораздо более распространены.

"Проблема" заключается в том, что иерархическая URI предназначены для представления реляционных баз данных.

Разве это, по сути, не снижает мощность и гибкость реляционных баз данных другими методами доступа (например, SQL)?Что-то вроде «сжатия с потерями»?

Если нет, то чего мне не хватает?

1 Ответ

1 голос
/ 22 февраля 2011

Что вам не хватает, так это то, что URI определяют часть данных, а не все связи, которые он имеет с другими данными.Они не представляют реляционную базу данных, просто часть данных в этой базе данных.Вы можете думать о реляционной базе данных как о множестве перекрывающихся иерархий, которые дают вам много способов получить один и тот же фрагмент данных.Uri просто определяет один из этих путей.

Я использую довольно сложную реляционную базу данных, но я все еще могу получить доступ к части данных с помощью URI.

Вот мой подход:

Путь Uri - это тип данных (или, например, таблица базы данных), из которого я хочу получить данные.
Параметры Uri Query определяют отношения, которым должны удовлетворять данные, которые мне нужны.

Вы можете использоватьлюбые параметры запроса, которые вы хотите, и любой тип данных, который вы хотите вернуть.Тогда вам решать, как реализовать это в менеджере баз данных.

...