【发布时间】:2011-02-23 10:14:20
【问题描述】:
我不太确定 stackoverflow 是否适合提出此类一般性问题,但让我们试一试。
由于需要在某处存储应用程序数据,我一直使用 MySQL 或 sqlite,因为它总是这样做。似乎全世界都在使用这些数据库(大多数软件产品、框架等),对于像我这样的初学者来说,开始思考这是否是一个好的解决方案是相当困难的。
好吧,假设我们的应用程序中有一些面向对象的逻辑,并且对象以某种方式相互关联。我们需要将此逻辑映射到存储逻辑,因此也需要数据库对象之间的关系。这导致我们使用关系数据库,我对此很满意 - 简单地说,我们的数据库表行有时需要引用其他表的行。 但为什么要使用 SQL 语言与这样的数据库进行交互呢?
SQL 查询是一条文本消息。我可以理解这对于真正理解它的作用很酷,但是将文本表和列名用于部署后没人见过的应用程序的一部分是不是很愚蠢?如果您必须从头开始编写数据存储,您将永远不会使用这种解决方案。就个人而言,我会使用一些“已编译的数据库查询”字节码,这些字节码将在客户端应用程序中组装一次并传递给数据库。它肯定会通过 id 编号而不是 ascii 字符串来命名表和冒号。在表结构发生变化的情况下,这些字节查询可以根据新的数据库模式重新编译,存储在 XML 或类似的东西中。
我的想法有什么问题?我有什么理由不自己写,改用 SQL 数据库吗?
编辑让我的问题更清楚。大多数答案声称 SQL 作为文本查询,可以帮助开发人员更好地理解查询本身并更轻松地调试它。就个人而言,我已经有一段时间没有看到人们手动编写 SQL 查询了。我认识的每个人,包括我,都在使用 ORM。在这种情况下,我们建立了一个新的抽象级别来隐藏 SQL,这导致我们思考是否需要 SQL。如果您能给出一些故意在没有 ORM 的情况下使用 SQL 的例子,我将不胜感激。
EDIT2 SQL 是人与数据库之间的接口。问题是为什么我们必须将它用于应用程序/数据库交互?我仍然要求人类编写/调试 SQL 的示例。
【问题讨论】:
-
当我读到标题的时候,我以为这是一个愚蠢的问题……但它实际上是一个非常有趣的想法!
-
也许问题应该是,“为什么在数据库中使用 SQL 与编译查询”?
-
我通常手写 SQL(当然,我的查询不是很复杂)。
-
@martinthenext。回复:“我仍然要求提供人类编写/调试 SQL 的示例”。你是认真的吗?
-
NoSQL Google 组也适合这种查询。
标签: sql database database-design data-structures