以博客系统为例的数据库分析与设计之预备篇

关于数据库的some常识性知识点

  • 常见数据库分为关系型(MySQL、Oracle、SQLServer、PgSql、
    SQLite等)和非关系型(Redis,MongoDB,HBase,MemCache等);

  • 数据库事务的四大特性(简称ACID)是:
    (1) 原子性(Atomicity)
    (2)一致性(Consistency)
    (3)分离性(亦称独立性Isolation)
    (4)持久性(Durability)

  • 数据模型(Data Model):
    现实世界数据特征的抽象,用来定义数据如何组织,数据之间的关系怎样。层次:
    (1)概念模型(Conceptual):按用户的观点来对数据和信息建模
    (2)逻辑/实现模型(Logical / Implementation):层次模型,网状模型,关系模型
    (3)物理模型(Physical):数据在具体DBMS产品中的物理储存方式

  • 数据库系统的三级模式
    (1)内模式(Internal Schema):(也称存储模式。)数据物理结构和储存方式的描述,是数据在数据库内部的表示方式
    (2)概念模式(Conceptual Schema):(也称全局模式。)有时简称“模式”。是对数据库中全体数据的逻辑结构和特征的描述
    (3)外模式(External Schemas):(也称子模式或者用户模式。)数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述

  • 数据的约束条件:完整性约束
    (1) 域约束:对属性取值范围的约束
    2) 键约束:每个关系必须要有主键,且每个主键必须不相同
    (3) 非空约束:属性值不能为NULL
    (4) 实体完整性约束:主键值不能为空
    (5) 参照完整性约束:外键可以取NULL值,但若外键为另一关系主键,则不能为NULL。
    (6) 用户定义的完整性

数据库设计

数据库设计就是根据具体的系统业务需求,结合我们所选的数据库管理系统DBMS,为这个业务系统构造出最优的存储模型,并建立好数据库中的表结构以及表之间的关联关系的过程。使之能够有效的对应用系统中的数据进行存储,并可以进行高效的存储访问。

数据库设计步骤

数据库设计分为四个阶段:需求分析、逻辑设计、物理设计、实现维护。

  • step 1 需求分析
    数据库设计与软件设计一样首先需要进行需求分析。
    我们需要与数据的创造者和使用者进行访谈。对访谈获得的信息进行整理、分析,并撰写正式的需求文档。
    需求文档中需包含:需要处理的数据;数据的自然关系;数据库实现的硬件环境、软件平台等;

  • step2 逻辑设计
    使用ER或UML建模技术,创建概念数据模型图,展示所有数据以及数据间关系。最终概念数据模型必须被转化为范式化的表。
    数据库逻辑设计主要步骤包括:
    1) 概念数据建模
    在需求分析完成后,使用ER图或UML图对数据进行建模。使用ER图或UML图描述需求中的语义,即得到了数据概念模型(Conceptual Data Model),例如:三元关系(ternary relationships)、超类(supertypes)、子类(subtypes)等。
    2) 多视图集成
    当在大型项目设计或多人参与设计的情况下,会产生数据和关系的多个视图。这些视图必须进行化简与集成,消除模型中的冗余与不一致,最终形成一个全局的模型。多视图集成可以使用ER建模语义中的同义词(synonyms)、聚合(aggregation)、泛化(generalization)等方法。多视图集成在整合多个应用的场景中也非常重要。
    3) 转化概念数据模型为SQL表
    根据映射规则,把ER图中的实体与关系转化为SQL表结构。在这一过程中我们将识别冗余的表,并去除这些表。
    4) 范式化
    范式化是数据库逻辑设计中的重要一步。范式化的目标是尽可能去除模型中的冗余信息,从而消除关系模型更新、插入、删除异常(anomalies)。
    讲到范式化就会引出函数依赖(Functional Dependency)这一概念。函数依赖(FDs)源自于概念数据模型图,反映了需求分析中的数据关系语义。不同实体之间的函数依赖表示各个实体唯一键之间的依赖。实体内部也有函数依赖,反映了实体中键属性与非键属性之间的依赖。在保证数据完整性约束的前提下,基于函数依赖对候选表进行范式化(分解、降低数据冗余)。

  • step3 物理设计
    数据库物理设计包括选择索引,数据分区与分组等。
    逻辑设计方法学通过减少需要分析的数据依赖,简化了大型关系数据库的设计,这也减轻了数据库物理设计阶段的压力。

    1. 概念数据建模和多视图集成准确地反映了现实需求场景
    2. 范式化在模型转化为SQL表的过程中保留了数据完整性
      数据库物理设计的目标是尽可能优化性能。
      物理设计阶段,全局表结构可能需要进行重构来满足性能上的需求,这被称为反范式化。
      反范式化的步骤包括:
      1.辨别关键性流程,如频繁运行、大容量、高优先级的处理操作
      2.通过增加冗余来提高关键性流程的性能
      3.评估所造成的代价(对查询、修改、存储的影响)和可能损失的数据一致性
  • step 4 数据库的实现维护
    当设计完成之后,使用数据库管理系统(DBMS)中的数据定义语言(DDL)来创建数据结构。
    数据库创建完成后,应用程序或用户可以使用数据操作语言(DML)来使用(查询、修改等)该数据库。
    一旦数据库开始运行,就需要对其性能进行监视。当数据库性能无法满足要求或用户提出新的功能需求时,就需要对该数据库进行再设计与修改。这形成了一个循环:监视 –> 再设计 –> 修改 –> 监视…。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值