如今的现代数据库系统具有许多功能。 你同意我的意见,要学习一个数据库,你必须忘记在另一个数据库中学到的概念。 例如,每个数据库都会实现与其他数据库不同的锁定。 因此,将一个数据库的概念带到另一个数据库将是一个失败的方法。 还有其他一些例子,两个数据库的表现非常不同。

因此,在开发数据库驱动的系统时,程序员是否需要详细了解数据库,以便他们对性能进行编码? 我认为让DBA稍后要求性能是不合适的,因为他的工作是仅维护数据库并在紧急情况下帮助开发人员,但不是定期。

您认为开发人员需要深入了解数据库的程度如何?

===============>>#1 票数:6

我认为这些是最重要的事情(从最重要到最不重要的IMO):

  • SQL(显然) - 它有助于知道如何至少执行基本查询,聚合(sum()等)和内部联接
  • 规范化 - 数据库设计技能是一项主要要求
  • 锁定模型/ MVCC - 至少可以基本掌握数据库如何管理行锁定(或使用MVCC通过乐观锁定实现类似目标)
  • ACID合规性,Txns - 请知道这些是如何工作和互动的
  • 索引 - 虽然我认为您不需要成为表空间专家,将数据放在单独的驱动器上以获得最佳性能,以及其他细节,但它确实有助于高度了解索引扫描如何工作与表扫描。 它还有助于能够阅读查询计划并理解为什么它可能选择一个而不是另一个。
  • 基本工具 - 您可能会发现自己希望在某些时候将生产数据复制到测试环境,因此了解如何恢复/备份数据库的基础知识非常重要。

幸运的是,今天有一些很棒的FOSS和免费商业数据库,可以用来学习db基础知识。

===============>>#2 票数:3

我认为开发人员应该很好地掌握他们的数据库系统是如何工作的,而不管它是哪一个。 在进行设计和架构决策时,他们需要了解数据库可能产生的影响。

===============>>#3 票数:3

就个人而言,我认为你应该知道数据库是如何工作的,以及关系模型及其背后的修辞,包括所有形式的规范化(尽管我很少看到需要超越第三范式)。 关系模型的核心概念不会从关系数据库变为关系数据库 - 实现可能会,但那又如何呢?

不理解数据库规范化,索引等背后的基本原理的开发人员如果从事过一个非平凡的项目,将会受到影响。

===============>>#4 票数:3

我认为这取决于你的工作。 如果您是拥有专门DBA的大公司的开发人员,那么您可能不需要了解太多,但如果您在一家小公司,那么了解有关数据库的更多信息可能会非常有用。 在小公司,你可以戴一顶以上的帽子。

在任何情况下了解更多都不会有害。

===============>>#5 票数:3

熟悉关系数据库理论肯定不会有害,并且对标准SQL语法有很好的工作知识,并且知道存储过程,触发器,视图和索引是什么。 显然,在开始使用该数据库之前,学习SQL的特定于数据库的扩展(T-SQL,PL / SQL等)并不是非常重要。

我认为在开发数据库应用程序时对数据库有基本的了解非常重要,就像了解软件运行的硬件一样重要。 您不必是专家,但您不应该完全不知道软件与之交互的任何内容。

也就是说,作为应用程序开发人员,您可能不需要做很多SQL。 大多数与数据库的交互应该通过DBA开发的存储过程完成,我不是在应用程序代码中包含SQL代码的忠实粉丝。 如果您的查询在存储过程中,那么DBA可以更改存储过程的实现,甚至是数据库模式,只要结果相同,它就不需要对应用程序代码进行任何更改。

===============>>#6 票数:2

如果您不确定如何最好地访问数据库,您应该使用经过试验和测试的解决方案,例如Microsoft的应用程序块 - http://msdn.microsoft.com/en-us/library/cc309504.aspx 通过检查代码的实现方式,它们也可以证明对您有所帮助。

===============>>#7 票数:0

关于Sql查询的基本知识是必须的。 那么你可以开发简单的系统。 但是当你要实现复杂系统时,你应该知道规范化,程序,功能等。

  ask by Krantz translate from so

未解决问题?本站智能推荐:

31回复

每个开发人员应该了解数据库? [关闭]

无论我们是否喜欢,很多人(如果不是大多数)开发人员要么经常使用数据库,要么可能有一天必须使用数据库。 考虑到野外滥用和滥用的数量,以及每天出现的数据库相关问题的数量,可以说开发人员应该知道某些概念 - 即使他们没有设计或使用数据库今天。 所以: 开发人员和其他软件专业人员应该了解的
1回复

iPad / iPhone App开发人员-我应该在设备的磁盘和数据库上存储用户数据吗?

我是iPad / iPhone应用程序/游戏开发的新手。 我正在开发游戏。 游戏将需要用户的库存,例如当前的服装,他/他购买了哪些物品。 我已经阅读了iPad / iPhone的核心数据和sqlite3。 这是我的问题: 核心数据(使用sqlite3)是否只能在手机上存储数
6回复

开发人员最佳数据库书籍[关闭]

我想为开发人员下载一本好的数据库书,你能指导我并给我发好链接找一个好的。 我正在使用SQL Server 2008。
22回复

每个好的数据库/ SQL开发人员应该能够回答的问题[关闭]

每个好的.Net开发人员都应该能够回答并且对这个问题的内容和方法留下了深刻的印象,所以本着同样的精神,我问这个问题是为了数据库/ SQL开发人员。 您认为一个好的Database / SQL程序员能够回答 哪些问题 ?
1回复

数据库应在多大程度上规范化? [关闭]

我个人认为数据库规范化确实很有趣(实际上真的很喜欢这样做),但是当我为资产管理器设计模式并对其进行规范化时(我正在研究资产和项目特定的资产,每种资产具有任意关系深度的类型)提出了一个基本问题,即应该在多大程度上规范化数据库(我知道3NF ),以使进行多次查询,插入等操作不会比以编程方式处理规范化试图
11回复

直接访问数据库的开发人员工具[关闭]

我使用几个不同的数据库,发现自己经常尝试连接这些数据库以测试查询。 我使用特定于数据库的工具连接到数据库并运行查询。 我发现这些特定于数据库的工具,如SQL查询分析器(SQL-Server),Oracle企业管理器,MySQL查询浏览器,在运行快速查询和直接查看数据时非常笨拙和缓慢。
1回复

Android开发人员:同步数据库

这是我第一次编写利用数据库的Android应用程序。 我已经在资产文件夹中创建了一个测试数据库。 然后,我让应用程序将数据库复制到数据库文件夹:/data/data/myapplication1/databases/myDB.db 现在我意识到资产文件夹是只读的,但是如何同步数据库
1回复

SQL数据库的“开发人员/测试”模式

我是一个相对较大的项目的新手,该项目使用带有C#和Entity Framework的Microsoft SQL Server数据库。 当前的开发过程如下: 编写一些功能/意图来修复错误 启动应用程序 通过GUI对数据库进行一些更改,以测试编码功能/测试错误是否已修
2回复

用户和开发人员的数据库设计

我想创建一个具有实体-用户和开发人员的Web服务。 开发人员可能是也可能不是用户(在大多数情况下,我希望他是用户)。 他可以使用Web API在我的Web服务之上创建自己的应用程序。 示例-Facebook允许我们在developer.facebook.com上创建应用程序,然后使用F
5回复

在开发人员之间同步数据库模式

我和其他几个人正在合作一个项目。 我们都有该项目的本地副本,也通过svn repo不断更新。 因为我们处于开发的早期阶段,所以我们经常更改数据库的模式。 当我们同步代码时,这会导致很多问题,因为我们没有很好的方法来同步我们的数据库模式。 有哪些直观且简单的方法可以同步频繁更改的数