数据库设计。 最佳实务

预期数据库课程的下一个起点将开始,我们准备了一些小型的创作材料,其中包含有关设计数据库的重要提示。 我们希望这些材料对您有用。




数据库无处不在:从简单的博客和目录,到可靠的信息系统和大型社交网络。 一个简单或复杂的数据库并不是那么重要,正确设计数据库有多重要。 如果不加思索地设计底座,并且对目标没有清晰的了解,它不仅无效,而且与底座的进一步合作对于用户而言将是真正的折磨,不可逾越的森林。 以下是一些数据库设计技巧,可帮助您创建有用且易于使用的产品。

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




如今,诸如Scrum或RAD(快速应用程序开发)之类的开发方法可帮助IT团队快速开发数据库。 然而,在追求时间的过程中,诱惑很大,想直接进入基地的建设,隐约地想象目标是什么,最终结果应该是什么。

好像团队专注于高效,高速的工作,但这是一个海市rage楼。 您越深入并更快地进入项目,识别和更改项目库中的错误将需要更多的时间。

因此,首先要确定的是确定数据库的用途。 数据库针对哪种类型的应用程序开发? 用户会只使用记录并需要关注交易吗?还是对数据分析更感兴趣? 该基地应部署在哪里? 她会跟踪客户行为还是只是管理客户之间的关系?

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

2.选择哪些数据进行存储?




提前计划。 关于站点或系统将来将要针对数据库进行设计的想法。 超越技术规范的简单要求很重要。 请注意,不要立即考虑用户将要存储的所有可能的数据类型。 更好地考虑用户是否可以发布,上传文档或照片,或交换消息。 如果是这样,则需要在数据库中为其分配空间。

与团队,部门或组织合作,将来将为其提供项目基础的支持。 与客户服务专家到部门主管的各个级别的人保持联系。 因此,借助反馈,您可以清楚地了解公司的需求。

不可避免地,即使一个部门内的用户需求也会发生冲突。 如果遇到这种情况,不要害怕依靠自己的经验,找到适合各方的妥协方案,并满足数据库的最终目标。 请确保:将来,+ 100500的业障和大量的饼干将飞向您。

3.仔细建模数据




在对数据建模时,需要考虑几个关键点。 如我们前面所说,这取决于数据库的目的,在仿真中使用哪种方法。 如果我们设计一个用于记录的业务处理(OLTP)的数据库,换句话说,要创建,编辑和删除它们,那么我们将使用事务建模。 如果数据库应该是关系数据库,则最好是多维建模。

在仿真过程中,将建立概念(CDM),物理(PDM)和逻辑(LDM)数据模型。

概念模型描述了它们所包含的实体和数据类型,以及它们之间的关系。 将您的数据分成逻辑块-更加容易使用。
最主要的是一种措施,不要过度使用。

如果一个实体很难用一个单词或短语来分类,那么该使用子类型(子实体)了。

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

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

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

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

4.使用合适的数据类型




使用错误的数据类型可能会导致数据准确性降低,连接表,同步属性以及增大文件大小方面的困难。
为了保证信息的完整性,属性应仅包含可接受的数据类型。 如果在数据库中输入了年龄,则请确保该列中存储的数字最多为3位。

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

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

5.偏爱自然




当您决定选择表中的哪一列作为键时,请始终注意用户可以编辑哪些字段。 永远不要选择它们作为关键-一个坏主意。 任何事情都可能发生,并且您必须保证唯一性。

最好使用自然密钥或业务密钥。 这很有意义,因此可以避免在数据库中重复。

如果仅业务密钥不是唯一的(名称,姓氏,位置),并且在表的不同行中重复,或者必须更改,则应将生成的密钥分配给生成的人工代理密钥(人工密钥)。

6.适度规范化




为了有效地组织数据库中的数据,您必须遵循一组建议并对数据库进行规范化。 有以下五种正常形式。
使用规范化可以避免冗余,并确保应用程序或站点中使用的数据的完整性。

与往常一样,所有内容都应保持适度甚至规范化。 如果数据库中有太多具有相同唯一键的表,那么您将被带走并过度规范化数据库。 过度的规范化会对数据库性能产生负面影响。

7.尽早测试,更频繁地测试




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

最好通过持续集成来测试数据库。 对“数据库生命中的一天”场景进行建模,并检查是否处理了所有边界情况以及可能进行哪些用户交互。 您越早发现错误,就可以节省更多的时间和金钱。

这些只是七个技巧,可帮助您设计出色的性能和效率数据库。 如果您遵循它们,则可以避免将来遇到大多数麻烦。 这些技巧只是数据库建模中的冰山一角。 有大量的生活技巧。 您使用哪个?

Source: https://habr.com/ru/post/zh-CN471016/


All Articles