美文网首页
设计数据库结构

设计数据库结构

作者: 宅家学算法 | 来源:发表于2018-05-15 10:21 被阅读0次

范式

 设计数据库时必然会关注的原则,本文不再进行说明,简要概括为行唯一、列唯一、主键关联。

数据分类

 数据分为静态数据和动态数据。静态数据是相对固定不变的,或者说变化不太频繁,且变化之后往往采用覆盖的方式,如姓名、出生日期、性别等;动态数据则是持续增加的,并且增加时往往采用叠加的方式,并不覆盖原来的数据,如销售数据、学历信息等。
 原则上,一个好的数据结构需要将静态数据和动态数据分开记录,通过关联表将两者关联形成一个完整的相互关联的数据库。如, 学生基本信息(静态)和学生成绩信息(动态)分开存储,通过学号(关联字段)进行关联。
 (直观意义上来讲,静动分离最明显的优势是减少冗余存储,如过学生信息和学生成绩存在一张表中,则新增一条学生成绩即写入一次学生信息)

数据粒度

 最容易忽视但在实际设计过程中会无意识完成的一部分工作。以时间维度为例,商场营业额以天为单位入库,一个商场的销售额一天一条记录,则数据在时间维度上的粒度为天。在数据仓库中设计时会要求尽可能保持原子粒度(原子粒度的数据具有最大的拓展性,但需要巨大的存储空间,同时大量的数据会带来查询延时);常用的一些系统在设计关系数据库时会根据业务需求自定数据粒度。
 从数据的长期维护和可用性角度上,在设计数据结构时,相互关联的数据表的粒度应尽可能保持一致。

数据关联

 在针对表设计时尽可能减少外键关联的创建,可以只记录关联表的一个主键或建立关联表。这样做可以确保表之间的独立性,为系统或表结构重构提供可能性。
 其实,在实际应用中我们应该尽可能的减少数据表之间的关联,第一关联对于数据库重构是一大阻碍,第二关联使得数据关系更为复杂,查询性能较低。因此,在实际系统开发中常常通过增加冗余来减少关联。
 (关联关系较多的设计当属数据仓库设计了,因为数据仓库设计过程中以原子粒度为标准、仅能写入无法进行数据删除、更改;这就导致事实表中数据量巨大,为了不影响数据存储查询只能将一些维度信息以主键字段关联。)

存储过程

 存储过程虽然用起来特别方便,但目前主流数据库软件中没有一个具有支持存储过程逻辑关系、依赖关系追溯的功能,时间一长,往往没有人能记住或了解存储过程的使用场景、逻辑关系、存储过程之间的依赖关系(这将意味着数据库维护人员需要从头做起数据结构设计时的部分工作);同时,存储过程对于数据库重构也是一大阻碍。

结语

 本文属于一篇纯文本式分享,所述仅属于个人理解,欢迎指正!

相关文章

  • Power Designer—数据库设计步骤

    数据库设计步骤 需求分析 — 概念结构设计 — 逻辑结构设计 — 物理结构设计 — 数据库的建立和测试 — 数据库...

  • 计算机二级java程序语言设计

    公共基础 数据库 数据库设计过程主要包括需求分析、概要结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运...

  • 数据库设计

    数据库设计的基本步骤:需求分析概念结构设计逻辑结构设计物理结构设计数据库实施数据库运行和维护 数据字典概念:它是关...

  • mysql性能与优化

    数据库结构优化 数据库结构设计 mysql复制

  • 数据库设计过程包括哪几个主要阶段

    内容来源(公众号:PHP版WEB项目)数据库设计过程包括需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库...

  • 2018-08-29 数据库设计

    数据库设计的过程:需求分析阶段;概念结构设计阶段;逻辑结构设计阶段;数据库物理设计阶段;数据库实施阶段;数据库运行...

  • 数据库结构优化

    [TOC] 前言:良好的数据库结构逻辑设计和物理设计师数据库获得高性能的基础 数据库结构优化的目的 减少数据冗余 ...

  • E-R图绘制

    数据库的设计6个阶段:1、需求分析2、概念结构设计3、逻辑结构设计4、数据库的实施5、数据库的运维 1、E-R图绘...

  • 数据库 权限设计

    数据库 权限设计 -系统权限管理设计-通用权限管理设计 之 数据库结构设计 权限 用户 角色 组 用户表

  • mysql 设计规范

    MySQL数据库设计规范目录规范背景与目的设计规范2.1 数据库设计2.1.1 库名2.1.2 表结构2.1.3 ...

网友评论

      本文标题:设计数据库结构

      本文链接:https://www.haomeiwen.com/subject/flcedftx.html