内容提供者 URI 的分层性质与数据库的关系性质
随着 Android 学习的进展,我通过内容提供程序了解了数据源抽象的概念。
我注意到内容提供者是通过 URI 访问的,这些 URI 本质上是分层的。
我们都知道层次结构的局限性,这是关系数据库如此流行的原因之一。
“问题”是分层 URI 旨在表示关系数据库。
从本质上讲,这不是降低了关系数据库其他访问方法(例如 SQL)的功能和灵活性吗?像“有损压缩”之类的东西?
如果没有,我错过了什么?
Progressing with Android learning, I have been introduced to the concept of data source abstraction via a content provider.
I noticed that content providers are accessed via URIs, which are hierarchical in nature.
We all know about the limitations of hierarchy, which is one of the reasons relational databases are so much more prevalent.
The "problem" is that hierarchical URIs are aiming to represent relational databases.
Isn't this, in essence, reducing the power and flexibility of relational databases other access methods (e.g. SQL)? Something like "lossy compression"?
If not, what am I missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能缺少的是 URI 定义了一段数据,而不是它与其他数据的所有关系。它们并不代表关系数据库,而只是该数据库中的一段数据。您可以将关系数据库视为一堆重叠的层次结构,它们为您提供了多种获取同一条数据的方法。 Uri 仅定义这些路径之一。
我使用相当复杂的关系数据库,但我仍然可以通过 URI 访问一段数据。
这是我的方法:
Uri 路径是我想要从中检索数据的数据类型(或数据库表)。
Uri 查询参数定义了我想要的数据必须满足的关系。
您可以使用您想要的任何查询参数以及您想要返回的任何数据类型。然后由您决定如何在数据库管理器中实现它。
What you're missing may be that URI's define a piece of data, not all the relationships it has with other data. They aren't representing the relational database, just a piece of data in that database. You can think of the relational database as a bunch of overlapping hierarchies that give you many ways to get to the same piece of data. A Uri just defines one of those paths.
I use a fairly complicated relational database, but I still can access a piece of data with a URI.
Here's my approach:
The Uri path is the data type (or database table for example) I want to retrieve data from.
The Uri Query parameters define the relationships that the data I want must satisfy.
You can use whatever query parameters you want and whatever data type you want to return. It is then up to you how you implement that in your database manager.