每个开发人员都应该了解哪些有关数据库的知识? [英] What should every developer know about databases?

查看:13
本文介绍了每个开发人员都应该了解哪些有关数据库的知识?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

无论我们喜欢与否,我们中的大多数开发人员要么经常使用数据库,要么有一天可能不得不使用数据库.考虑到滥用和滥用的数量,以及每天出现的数据库相关问题的数量,可以说开发人员应该了解某些概念——即使他们不设计或使用今天的数据库.所以:

Whether we like it or not, many if not most of us developers either regularly work with databases or may have to work with one someday. And considering the amount of misuse and abuse in the wild, and the volume of database-related questions that come up every day, it's fair to say that there are certain concepts that developers should know - even if they don't design or work with databases today. So:



保持清单简短.
每个答案一个概念最好.

Keep your list short.
One concept per answer is best.

要具体.
数据建模"可能是一项重要的技能,但是这究竟意味着什么?

解释你的理由.
为什么你的概念很重要?不要只说使用索引".不要陷入最佳实践".说服您的观众去了解更多.

Explain your rationale.
Why is your concept important? Don't just say "use indexes." Don't fall into "best practices." Convince your audience to go learn more.

为您同意的答案点赞.
首先阅读其他人的答案.一个排名高的答案比两个排名低的答案更有效.如果您有更多要添加的内容,请添加评论或参考原文.

Upvote answers you agree with.
Read other people's answers first. One high-ranked answer is a more effective statement than two low-ranked ones. If you have more to add, either add a comment or reference the original.

不要仅仅因为某件事不适用于您个人而否定它.
我们都在不同的领域工作.这里的目的是为数据库新手提供方向,让他们对数据库设计和数据库驱动开发有一个有根据的、全面的理解,而不是为了争夺最重要的头衔.

Don't downvote something just because it doesn't apply to you personally.
We all work in different domains. The objective here is to provide direction for database novices to gain a well-founded, well-rounded understanding of database design and database-driven development, not to compete for the title of most-important.

推荐答案

关于数据库,开发人员首先应该知道的是:数据库有什么用?不是它们如何工作,也不是您如何构建它们,甚至不是您如何编写代码来检索或更新数据库中的数据.但它们有什么用?

The very first thing developers should know about databases is this: what are databases for? Not how do they work, nor how do you build one, nor even how do you write code to retrieve or update the data in a database. But what are they for?

不幸的是,这个答案是一个移动目标.在数据库的鼎盛时期,从 1970 年代到 1990 年代初期,数据库用于共享数据.如果您使用的是数据库,并且不共享数据,那么您要么参与了学术项目或者你在浪费资源,包括你自己.建立数据库和驯服 DBMS 是一项艰巨的任务,就多次利用的数据而言,回报必须与投资相匹配.

Unfortunately, the answer to this one is a moving target. In the heydey of databases, the 1970s through the early 1990s, databases were for the sharing of data. If you were using a database, and you weren't sharing data you were either involved in an academic project or you were wasting resources, including yourself. Setting up a database and taming a DBMS were such monumental tasks that the payback, in terms of data exploited multiple times, had to be huge to match the investment.

在过去的 15 年里,数据库已经开始用于存储与一个应用程序相关的持久数据.MySQL,或 访问,或者 SQL Server 已经变得如此常规,以至于数据库几乎成为普通应用程序的常规部分.有时,随着数据的真正价值变得显而易见,最初的有限任务会被任务蠕变推高.不幸的是,设计时只考虑单一目的的数据库在开始担任企业范围内的关键任务时往往会失败.

Over the last 15 years, databases have come to be used for storing the persistent data associated with just one application. Building a database for MySQL, or Access, or SQL Server has become so routine that databases have become almost a routine part of an ordinary application. Sometimes, that initial limited mission gets pushed upward by mission creep, as the real value of the data becomes apparent. Unfortunately, databases that were designed with a single purpose in mind often fail dramatically when they begin to be pushed into a role that's enterprise wide and mission critical.

开发人员需要了解的有关数据库的第二件事是整个以数据为中心的世界观.以数据为中心的世界观与以流程为中心的世界观相比,大多数开发人员所学到的东西都大不相同.相比这个差距,结构化编程和面向对象编程的差距就比较小了.

The second thing developers need to learn about databases is the whole data centric view of the world. The data centric world view is more different from the process centric world view than anything most developers have ever learned. Compared to this gap, the gap between structured programming and object oriented programming is relatively small.

开发人员需要学习的第三件事,至少在概述中是数据建模,包括概念数据建模、逻辑数据建模和物理数据建模.

The third thing developers need to learn, at least in an overview, is data modeling, including conceptual data modeling, logical data modeling, and physical data modeling.

概念数据建模实际上是以数据为中心的需求分析.

Conceptual data modeling is really requirements analysis from a data centric point of view.

逻辑数据建模通常是将特定数据模型应用于概念数据建模中发现的需求.关系模型的使用远远超过任何其他特定模型,开发人员肯定需要学习关系模型.为重要的需求设计强大且相关的关系模型并非易事.如果误解了关系模型,就无法构建好的 SQL 表.

Logical data modeling is generally the application of a specific data model to the requirements discovered in conceptual data modeling. The relational model is used far more than any other specific model, and developers need to learn the relational model for sure. Designing a powerful and relevant relational model for a nontrivial requirement is not a trivial task. You can't build good SQL tables if you misunderstand the relational model.

物理数据建模通常是特定于 DBMS 的,不需要详细学习,除非开发人员也是数据库构建者或 DBA.开发人员需要了解的是,物理数据库设计与逻辑数据库设计的分离程度,以及仅通过调整物理设计即可实现高速数据库生成的程度.

Physical data modeling is generally DBMS specific, and doesn't need to be learned in much detail, unless the developer is also the database builder or the DBA. What developers do need to understand is the extent to which physical database design can be separated from logical database design, and the extent to which producing a high speed database can be accomplished just by tweaking the physical design.

开发人员接下来需要了解的是,虽然速度(性能)很重要,但其他衡量设计优良性的指标更为重要,例如修改和扩展数据库范围的能力在路上,或编程的简单性.

The next thing developers need to learn is that while speed (performance) is important, other measures of design goodness are even more important, such as the ability to revise and extend the scope of the database down the road, or simplicity of programming.

最后,任何使用数据库的人都需要了解数据的价值通常比捕获它的系统更持久.

Finally, anybody who messes with databases needs to understand that the value of data often outlasts the system that captured it.

哇!

这篇关于每个开发人员都应该了解哪些有关数据库的知识?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆