数据库设计。 最佳实践

预计下一个流量开始的速率 “数据库” 我们准备了一份小作者的材料,其中包含设计数据库的重要技巧。 我们希望这些材料对您有用。

数据库设计。 最佳实践

数据库无处不在:从最简单的博客和目录到可靠的信息系统和大型社交网络。 数据库是简单还是复杂并不那么重要,重要的是正确设计它。 当一个数据库的设计不经过深思熟虑并且没有清楚地了解其用途时,它不仅是无效的,而且进一步使用数据库将是一种真正的折磨,对用户来说是一座不可逾越的森林。 以下是一些数据库设计技巧,可帮助您创建有用且易于使用的产品。

1. 确定表的用途及其结构

数据库设计。 最佳实践

如今,Scrum 或 RAD(快速应用程序开发)等开发方法可以帮助 IT 团队快速开发数据库。 然而,在追求时间的过程中,直接投入建造基地的诱惑是非常大的,模糊地想象着目标本身是什么,最终的结果应该是什么。
 
就好像团队专注于高效、快速的工作,但这只是海市蜃楼。 您深入项目的深度越深、越快,识别和更改数据库设计中的错误所需的时间就越多。

因此,您需要决定的第一件事是定义数据库的用途。 数据库是为什么类型的应用程序开发的? 用户是否只处理记录并需要关注交易,或者他对数据分析更感兴趣? 基地应该部署在哪里? 它会跟踪客户行为还是仅仅管理客户关系? 

设计团队越早回答这些问题,数据库设计过程就会越顺利。

2. 我应该选择什么数据来存储?

数据库设计。 最佳实践

未雨绸缪。 关于数据库设计的站点或系统将来的用途的想法。 重要的是要超越技术规范的简单要求。 只是请不要开始考虑用户将存储的所有可能的数据类型。 相反,请考虑用户是否能够撰写帖子、上传文档或照片或交换消息。 如果是这种情况,那么您需要在数据库中为它们分配空间。

与未来将支持设计库的团队、部门或组织合作。 与不同级别的人员沟通,从客户服务专家到部门主管。 这样,在反馈的帮助下,你就会清楚地了解公司的要求。 

即使是同一部门内的用户的需求也不可避免地会发生冲突。 如果遇到这种情况,不要害怕依靠自己的经验,找到适合各方并满足数据库最终目标的折衷方案。 请放心:将来您将获得 +100500 的业力和一堆饼干。

3. 谨慎建模数据

数据库设计。 最佳实践

数据建模时有几个关键点需要注意。 正如我们之前所说,数据库的用途决定了建模时使用哪些方法。 如果我们正在设计用于在线记录处理(OLTP)的数据库,换句话说,用于创建、编辑和删除记录,我们将使用事务建模。 如果数据库必须是关系型的,那么最好使用多维建模。

在建模过程中,构建概念 (CDM)、物理 (PDM) 和逻辑 (LDM) 数据模型。 

概念模型描述实体及其包含的数据类型以及它们之间的关系。 将您的数据划分为逻辑块 - 它使生活变得更加轻松。
最重要的是适度,不要过度。

如果一个实体很难用一个单词或短语进行分类,那么就需要使用子类型(子实体)。

如果一个实体拥有自己的生命,具有描述其行为和外观的属性,以及与其他对象的关系,那么您不仅可以安全地使用子类型,还可以安全地使用超类型(父实体)。 

如果您忽略此规则,其他开发人员将对您的模型感到困惑,并且无法完全理解数据以及如何收集数据的规则。

概念模型是使用逻辑模型来实现的。 这些模型就像物理数据库设计的路线图。 在逻辑模型中,识别业务数据实体,确定数据类型,并确定管理数据之间关系的规则键的状态。

然后将逻辑数据模型与预先选择的DBMS(数据库管理系统)平台进行比较,并获得物理模型。 它描述了数据如何物理存储。

4. 使用正确的数据类型

数据库设计。 最佳实践

使用错误的数据类型可能会导致数据不太准确、连接表困难、同步属性困难以及文件大小过大。
为了确保信息完整性,属性必须仅包含它可接受的数据类型。 如果将年龄输入数据库,请确保该列存储最多 3 位的整数。

创建最少的具有 NULL 值的空列。 如果将所有列创建为 NULL,这是一个很大的错误。 如果您需要一个空列来执行特定的业务功能,当数据未知或尚无意义时,请随意创建它。 毕竟,我们无法提前填写“死亡日期”或“解雇日期”一栏;我们不是指着天空的预测者:-)。

大多数建模软件(ER/Studio、MySQL Workbench、SQL DBM、gliffy.com)数据允许您创建数据区域的原型。 这不仅确保了正确的数据类型、应用程序逻辑和良好的性能,而且还保证了该值是必需的。

5. 自然一点

数据库设计。 最佳实践

在决定将表中的哪一列用作键时,请始终考虑用户可以编辑哪些字段。 永远不要选择它们作为钥匙 - 这是一个坏主意。 任何事情都有可能发生,但你必须确保它是独一无二的。

最好使用自然密钥或业务密钥。 它具有语义意义,因此您将避免数据库中的重复。 

除非业务键是唯一的(名字、姓氏、职位)并且在表的不同行中重复或者必须更改,否则应将生成的人工键指定为主键。

6.适度正常化

数据库设计。 最佳实践

为了有效地组织数据库中的数据,您需要遵循一组准则并对数据库进行规范化。 有五种范式可供遵循。
通过标准化,您可以避免冗余并确保应用程序或站点中使用的数据的完整性。

一如既往,一切都应该适度,甚至正常化。 如果数据库中有太多具有相同唯一键的表,那么您就会得意忘形并过度规范化数据库。 过度规范化会对数据库性能产生负面影响。

7. 尽早测试,经常测试

数据库设计。 最佳实践

测试计划和适当的测试应该是数据库设计的一部分。

测试数据库的最佳方法是通过持续集成。 模拟“数据库生命周期中的一天”场景,并检查是否处理了所有边缘情况以及可能发生的用户交互。 越早发现错误,就越能节省时间和金钱。

这些只是您可以用来设计出色的生产力和效率数据库的七个技巧。 如果你遵循它们,你将在未来避免大多数令人头疼的问题。 这些技巧只是数据库建模的冰山一角。 有大量的生活窍门。 您使用哪些?

来源: habr.com

添加评论