数据库设计

关系型数据库建议在E-R模型的基础上,我们需要根据产品经理的设计策划,抽取出来模型与关系,制定出表结构,这是项目开始的第一步。

在开发中有很多设计数据库的软件,常用的如power designer,db designer等,这些软件可以直观的看到实体及实体间的关系。

设计数据库,可能是由专门的数据库设计人员完成,也可能是由开发组成员完成,一般是项目经理领组员完成。

三范式

经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式(Normal Form)

目前有迹可循的共有8种范式,一般需要遵循3范式即可:

第一范式(1NF):

第一范式是最基本的范式,强调的是列的原子性,即列不能再分成其他几列

上图不符合第一范式,买家地址可以拆分

这样修改就遵循了第一范式。修改后的订单表 在用户使用城市进行分类的时候会非常方便,提高了数据库性能

第二范式(2NF):

首先是基于第一范式,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖主键的一部分。也就是说在一个数据表中,只能保存一种数据,不能把多种数据保存在同一张表中。

上面的订单表可以继续拆分

第三范式(3NF):

首先是基于第二范式,另外非主键列必须直接依赖于主键,不能存在传递依赖。 确保数据表中每一列数据都和主键直接相关,而不能间接相关。要求一个关系中不包含在其他关系已包含的非主键字段信息。

上图看出,虽然单价和商品直接相关,但单价不与订单直接相关,不符合第三范式,还可以继续拆分。

E-R模型

  • E表示Entity,实体,设计实体就像定义一个类一样,指定从哪些方面描述对象一个实体转换为数据库中的一个表

  • R表示relationship,关系,关系描述两个实体之间的对应规则,关系的类型包括一对一、一对多、多对多

  • 关系也是一种数据,需要通过一个字段存储在表中

  • 实体A对实体B为1对1,则在表A或表B中创建一个字段,存储另一个表的主键值

  • 实体A对实体B为1对多:在表中创建一个字段,存储表A的主键值

  • 实体A对实体B为多对多:新建一张表C,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值

(0)

相关推荐

  • 数据库的三级范式,涉及范式的问题

    范式是具有最小冗余的表结构. 三范式具体如下: 1.第一范式(1NF):字段都是不可再分的:原子性: 第一范式的目标是确保每列的原子性:如果每列都是不可再分的最小数据单元,则满足第一范式(1NF): ...

  • 手把手教 | 如何设计高性能数据库表

    回复"面试"获取全套面试资料 如何斩获offer?如何提升技术?看看我的案例吧 尽管我们不是DBA,但我们平时都会涉及到数据库表的设计,那么我们该怎么设计呢?,表名怎么取?字段名怎 ...

  • 万字详解数据仓库建设体系方法

    数据仓库的基本概念 数据仓库概念:英文名称为Data Warehouse,可简写为DW或DWH.数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support).它 ...

  • <h2 style="color: rgb(0, 0, 0);">数据库设计三范式</h2>

    设计数据库表的时候所依据的规范,共三个规范:第一范式:要求有主键,并且要求每一个字段原子性不可再分第二范式:要求所有非主键字段完全依赖主键,不能产生部分依赖第三范式:所有非主键字段和主键字段之间不能产 ...

  • Django的开发流程与数据库设计

    引言:项目开发流程: 需求分析(成员:架构师 .产品经理 .开发者组长) 在跟客户谈需求之前,会大致先了解客户的需求,然后自己先设计一套比较好写的方案.跟客户沟通交流中引导客户往我们之前想好的方案上面 ...

  • 五大优秀的数据库设计工具

    数据库的设计主要是针对一个特定的个环境,为了能够满足有效的数据存储和处理等要求,需要构造最优的数据库模式来建立数据库及其对应系统.数据库设计时根据用户的需求,在特定的数据库管理系统上设计和建立数据库的 ...

  • MySQL上线,检查数据库设计的“十条合规”

    MySQL作为关系型数据库的典型代表,在国内环境里经历风雨磨砺,不断地精进,已经在开发和运维方面,成型了一套的规范.这些规范让了解和使用MySQL更加得心应手,并对后期的一些问题起到了很好的预防作用. ...

  • SQL Server 数据库设计--SELECT高级查询语句之三

    在前几篇文章中介绍了 SQL SERVER 数据库的设计,以及 SELECT 语句的简单使用方法,这篇文章继续介绍其他高级查询方法. SQL Server 数据库设计 SQL Server 数据库设计 ...

  • 数据库设计及工具实战

    前言: 计算机软件开发过程中一个重要的环节就是进行数据库的设计,过去,数据库工程师可以在白板上绘制数据库关系图.如今,我们需要强大的工具来正确绘制数据库.而以下我们介绍的Freedgo Design ...

  • 数据库设计——ER图

      E-R图也称实体-联系图,提供了表示实体类型.属性和联系的方法用来描述现实世界的概念模型.   它是描述现实世界关系概念模型的有效方法.是表示概念关系模型的一种方式.用"矩形框" ...

  • Excel结合Access,VBA 数据库,设计自己的数据信息管理表

    Excel结合Access,VBA 数据库,设计自己的数据信息管理表

  • 微服务化的数据库设计与读写分离

    作者:刘超,毕业于上海交通大学,15年云计算领域研发及架构经验,先后在EMC,CCTV证券资讯频道,HP,华为,网易从事云计算和大数据架构工作.在工作中积累了大量运营商系统,互联网金融系统,电商系统等 ...

  • 微服务数据库设计与拆分

    嫉妒是人性,不因为嫉妒而失态乃至报复则是修养.我们无法压制人性但可以做到有教养.--周国平 请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别? SQL 标准定义 ...

  • 数据库设计(一)

    一.数据库设计简介 按照规范设计,将数据库的设计过程分为六个阶段: A.系统需求分析阶段 B.概念结构设计阶段 C.逻辑结构设计阶段 D.物理结构设计阶段 E.数据库实施阶段 F.数据库运行与维护阶段 ...