在系统设计中,对数据库的设计应考虑哪些设计原则?

数据库是整个软件应用的根基,是软件设计的起点,它起着决定性的质变作用,因此我们必须对数据库设计高度重视起来,培养设计良好数据库的习惯,是一个的软件设计师所必须具备的基本素质条件!

数据库如何设计(数据库如何设计才能实现分类等级)数据库如何设计(数据库如何设计才能实现分类等级)


那么我们要做到什么程度才是对的呢?下面就说说数据库设计的原则:

1、数据库设计最起码要占用整个项目开发的40%以上的时间

数据库是需求的直观反应和表现,因此设计时必须要切实符合用户的需求,要多次与用户沟通交流来细化需求,将需求中的要求和每一次的变化都要一一体现在数据库的设计当中。如果需求不明确,就要分析不确定的因素,设计表时就要事先预留出可变通的字段,正所谓“有备无患”。

2、数据库设计不仅仅停留于页面demo的表面

页面内容所需要的字段,在数据库设计中只是一部分,还有系统运转、模块交互、中转数据、表之间的联系等等所需要的字段,因此数据库设计不是简单的基本数据存储,还有逻辑数据存储。

3、数据库设计完成后,项目80%的设计开发在你脑海中就已经完成了

每个字段的设计都是有他必要的意义的,你在设计每一个字段的同时,就应该已经想清楚程序中如何去运用这些字段,多张表的联系在程序中是如何体现的。换句话说,你完成数据库设计后,程序中所有的实现思路和实现方式在你的脑海中就已经考虑过了。如果达不到这种程度,那当进入编码阶段后,才发现要运用的技术或实现的方式数据库无法支持,这时再改动数据库就会很麻烦,会造成一系列不可预测的问题。

4、数据库设计时就要考虑到效率和优化问题

一开始就要分析哪些表会存储较多的数据量,对于数据量较大的表的设计往往是粗粒度的,也会冗余一些必要的字段,已达到尽量用最少的表、最弱的表关系去存储海量的数据。并且在设计表时,一般都会对主键建立聚集索引,含有大数据量的表更是要建立索引以提供查询性能。对于含有计算、数据交互、统计这类需求时,还要考虑是否有必要采用存储过程。

5、添加必要的(冗余)字段

像“创建时间”、“修改时间”、“备注”、“作用户IP”和一些用于其他需求(如统计)的字段等,在每张表中必须都要有,不是说只有系统中用到的数据才会存到数据库中,一些冗余字段是为了便于日后维护、分析、拓展而添加的,这点是非常重要的,比如黑客攻击,篡改了数据,我们便就可以根据修改时间和作用户IP来查找定位。

6、设计合理的表关联

若多张表之间的关系复杂,建议采用第三张映射表来关联维护两张表之间的关系,以降低表之间的直接耦合度。若多张表涉及到大数据量的问题,表结构尽量简单,关联也要尽可能避免。

7、设计表时不加主外键等约束性关联,系统编码阶段完成后再添加约束性关联

这样做的目的是有利于团队并行开发,减少编码时所遇到的问题,表之间的关系靠程序来控制。编码完成后再加关联并进行测试。不过也有一些公司的做法是干脆就不加表关联。

8、选择合适的主键生成策略

数据库设计技巧

就我个人的经验来说,数据库虽然在设计上确实需要有一定的经验,但是它并不是最难的。

对于数据的设计其实是对于现实中业务的一种抽象。

就我的习惯的话,我会先对于现实中的业务场景、业务的角色进行分析。

就拿一般的进销存系统来举例吧。

我有一个对于物料管理的仓库,我需要对我的物料的进销存进行管理。

那么我们就需要分析,没有系统的时候,人与人之间的业务是怎么流转的,他们都是通过哪些表单来进行流转的,上下级之间的消息传递和反馈都是怎么进行的。

当知道了业务以后,我们的数据库无非就是对于现实中的业务的一种具现。

对于业务的设计完成以后,就是针对角色的了。

例如:业务的传递都是在业务人员之间的,我们已经整理表单的传递,那角色其实就已经在这些传递中存在了。

但是,业务的角色是业务的角色,我们还要包括财务的角色,那对于财务来说,他需要在哪些环节看到这些业务的单据?并且需要怎么处理?财务的处理结果又包括哪些?不同的处理结果对于下一步的作又有什么影响。

当我们把这一切的逻辑整理完成后,我们对于数据库的功能上就已经满足了。

接下来的就是抽象数据的分类了。

例如:我们需要对不同的表进行一个分类,我个人喜欢把表分成三种,一种是基础数据表,一种是过程表,一种是结果表。

怎么解释呢?

基础数据表:顾名思义,就是对于基础数据的维护,哪些可以成为基础数据呢?就是我们的业务发生的各个过程中,这些数据都是可以参与其中的,这就是基础数据。

例如:货物的信息,客户的信息。

过程表:就是仅仅在一个过程中使用的表,当这个过程结束了,这个表就没用了。

例如:订单表,付款单表。他们表示的仅仅是订单从下单到关闭的这个过程,关闭以后,这个订单表其实我们就不会再去使用它了。

结果表:这个表的数据有一个特点,只允许添加,不允许删除和修改,这个表的数据本身就是对于一种最终结果的表现。

例如:日志表、账单表。

那我们在进行数据库设计的时候,就需要将这些使用情况考虑进去,将不同功能的表进行分离,尽量降低耦合,让相互表的修改不会影响使用。

例如:收款单,我们需要收一笔款的时候,就会生成这个收款单,当款收到后,这个收款单的功能就结束了。

但现实的情况中,可能财务收到了这笔钱,结束了收款单流程后,他发现填错了,本来应该收100,结果收款单写的110。

但是,收款单表示的是过程,当这个过程结束了,我们就不会再需要上一个收款单了,所以,按照我们业务的处理流程,我们应该先生成一笔冲抵的收款单,例如收到-110,然后再生成新的100的收款单。

我们每个月还会有财务统计报表,财务报表因为和现实中的财务账有关,是不允许变动的,因此,这个财务报表就是一个结果表,我们会按月通过批处理程序,将收款单的明细和统计数据放到另一张表中,感觉好像比较冗余,但是这个确实非常必要的。

因为我曾经就遇到过一个情况,我们直接用过程表来进行数据的统计,然后11月30日有一笔收款已经完成了,结果发现收错了,就重新做了个收款单,结果本来已经出了11月结果的账单发生了变化,导致财务实际的处理出现了问题。

因此,数据的冗余有时候是有必要的,我们需要根据不同表的类型进行一些冗余的设计。

对于数据库设计的考虑点还有很多,可能一时半会儿也说不完,大家如果有什么好的思路,也可以在下方评论或关注我给我留言。

数据库设计的步骤是什么?

六个主要步骤:

1、需求分析

2、概念设计

3、逻辑结构设计

4、物理结构设计

5、系统实施

6、运行维护

字数限制,只能列个大纲了

数据库设计的基本步骤

数据库设计的基本步骤

1、需求分析阶段

进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,是最困难和最耗费时间的一步。作为“地基”的需求分析是否做得充分与准确,决定了在其上构建数据库“大厦”的速度与质量。需求分析做的不好,可能会导致整个数据库设计返工重做。

2、概念结构设计阶段

概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个于具体数据库管理系统的概念模型。

3、逻辑结构设计阶段

逻辑结构设计是将概念结构转换为某个数据库管理系统所支持的数据模型,并对其进行优化。

4、物理设计阶段

物理结构设计师为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方式)。

5、数据库实施阶段

在数据库实施阶段,设计人员运用数据库管理系统提供数据库语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编写与调试应用程序,组织数据入库,并进行测试运行。

6、数据库运行和维护阶段

数据库应用系统经过试运行后即可投入正式运行,在数据库系统运行过程中必须不断对其进行评估、调整与修改。

数据库设计的基本原则

1、一致性原则:对数据来源进行统一、系统的分析与设计,协调好各种数据源,保证数据的一致性和有效性。

2、完整性原则:数据库的完整性是指数据的正确性和相容性。要防止合法用户使用数据库时向数据库加入不合语义的数据。对输入到数据库中的数据要有审核和约束机制。

3、安全性原则:数据库的安全性是指保护数据,防止非法用户使用数据库或合法用户非法使用数据库造成数据泄露、更改或破坏。要有认证和授权机制。

4、可伸缩性与可扩展性原则:数据库结构的设计应充分考虑发展的需要、移植的需要,具有良好的扩展性、伸缩性和适度冗余。

5、规范化原则:数据库的设计应遵循规范化理论。规范化的数据库设计,可以减少数据库插入、删除、修改等作时的异常和错误,降低数据冗余度等。

数据库如何设计(数据库如何设计才能实现分类等级)


数据库设计的步骤有哪些

数据库设计从2个方面入手:

1、分析要管理的对象 比如图书馆用的 就是书 借书人 库房等,确定各个对象的异同和关系,然后设置字段和表间关系;

2、结合管理系统设计 设置管理系统所需的表

表设计完成后 不要急于进行数据录入和程序编制,要在纸上进行模拟,把问题考虑细。确认表没问题后,再进行录入、编程等

数据库如何设计

数据库设计的基本步骤

按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段

1.需求分析

2.概念结构设计

3.逻辑结构设计

4.物理结构设计

5.数据库实施

6.数据库的运行和维护

数据库设计通常分为6个阶段1分析用户的需求,包括数据、功能和性能需求;2概念结构设计:主要采用E-R模型进行设计,包括画E-R图;3逻辑结构设计:通过将转换成表,实现从E-R模型到关系模型的转换;4:主要是为所设计的数据库选择合适的和存取路径;5数据库的实施:包括编程、测试和试运行;6数据库运行与维护:系统的运行与数据库的日常维护。),主要讨论其中的第3个阶段,即逻辑设计。

在数据库设计过程中,需求分析和概念设计可以于任何数据库管理系统进行,逻辑设计和物理设计与选用的DAMS密切相关。

1.需求分析阶段(常用自顶向下)

进行数据库设计首先必须准确了解和分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,也是最困难,最耗时的一步。需求分析是否做得充分和准确,决定了在其上构建数据库大厦的速度与质量。需求分析做的不好,会导致整个数据库设计返工重做。

需求分析的任务,是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新的系统功能,新系统还得充分考虑今后可能的扩充与改变,不仅仅能够按当前应用需求来设计。

调查的重点是,数据与处理。达到信息要求,处理要求,安全性和完整性要求。

分析方法常用SA(Structured Analysis) 结构化分析方法,SA方法从最上层的系统组织结构入手,采用自顶向下,逐层分解的方式分析系统。

数据流图表达了数据和处理过程的关系,在SA方法中,处理过程的处理逻辑常常借助判定表或判定树来描述。在处理功能逐步分解的同事,系统中的数据也逐级分解,形成若干层次的数据流图。系统中的数据则借助数据字典(data dictionary,DD)来描述。数据字典是系统中各类数据描述的,数据字典通常包括数据项,数据结构,数据流,数据存储,和处理过程5个阶段。

数据库设计的步骤 如何设计数据库

1、常见数据库设计方法是比较简单的。

2、一主多从冗余读库带来的副作用:读写有延时,可能不一致;写仍然是单点,不能保证写高可用。

3、主库冗余存在数据不一致问题。

4、数据读取速度。

5、利用缓存来实现。