database - 关于数据库,每个开发人员都应该了解什么?

标签 database language-agnostic database-design

<分区>

不管我们喜欢与否,我们中的许多(如果不是大多数)开发人员要么经常使用数据库,要么有一天可能不得不使用数据库。考虑到滥用和滥用的数量,以及每天出现的数据库相关问题的数量,可以公平地说,开发人员应该知道某些概念——即使他们不设计或使用今天的数据库。

关于数据库,开发人员和其他软件专业人员应该了解的一个重要概念是什么?

最佳答案

关于数据库,开发人员应该了解的第一件事是:数据库有什么用?不是它们如何工作,也不是你如何构建一个,甚至也不是你如何编写代码来检索或更新数据库中的数据。但它们有什么用?

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

在过去的 15 年中,数据库已开始用于存储仅与一个应用程序关联的持久数据。MySQL 构建数据库, 或 Access , 或 SQL Server已经变得如此常规,以至于数据库几乎已经成为普通应用程序的常规部分。有时,随着数据的真正值(value)变得显而易见,最初的有限任务会被任务蠕变推高。不幸的是,当数据库开始被推到企业范围和关键任务的角色时,设计时只考虑单一目的的数据库往往会发生巨大的失败。

关于数据库,开发人员需要了解的第二件事是整个世界的以数据为中心的观点。以数据为中心的世界观与以过程为中心的世界观的区别比大多数开发人员所学过的任何东西都大。相比这个差距,结构化编程和面向对象编程之间的差距就比较小了。

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

概念数据建模实际上是从以数据为中心的角度进行的需求分析。

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

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

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

最后,任何与数据库打交道的人都需要明白,数据的值(value)往往比捕获它的系统更持久

哇!

关于database - 关于数据库,每个开发人员都应该了解什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1981526/

相关文章:

MySQL #1452 - 无法添加或更新子行

algorithm - 生成彼此相邻的数字组

database-design - LAMP 托管在 AWS 云上——要重写哪些 PHP 代码?

MySQL:如何转换为 EAV?

c++ - 为什么人们说使用随机数生成器时存在模偏差?

MySQL数据库一对一关系

android - 如何重复在 sqlite 命令行中执行的最后一个 sql 命令?

mysql - 如何优化表中的索引列?

php - 仅返回数据库中的重复记录

language-agnostic - 程序员学习一门新语言的最佳方式是什么?