MySQL 数据库设计

  一、数据库设计:将数据库中的数据实体以及这些实体之间的关系,进行规划和结构化的过程。

  设计过程:

  • 需求分析:分析客户的业务和数据处理需求。
  • 概要设计:绘制数据库的ER图,确认需求信息的正确性和完整性。
  • 详细设计:将ER图转换为多张表,进行逻辑设计,取人哥表的主键外键,并应用数据库设计的三大范式进行审核。最后选择具体的数据库。  

  二、数据库设计的三大范式:

  (1)第一范式

  目标:确保每列的原子性。

  如果每列都是不可再分的最小数据单元(最小原子单元),则满足第一范式。

  (2)第二范式

  目标:确保表中每列都和主键相关。

  如果一个数据库满足第一范式,并且主键以外的其它列全部依赖于该主键,则满足第二范式。

  如果一个主键有多个列,那么其他列必须都对这两个主键列都有依赖。否则可以分开为两个表~

  (3)第三范式

  目标:确保每列都和主键列相关,而不是间接相关。

  如果一个关系满足第二范式,并且除了主键以外的其他列都只能依赖于主键,列和列之间不存在相互依赖关系,则满足第三范式。

  第三范式也是对字段冗余性的约束,即任何字段不能由其他字段派生出来,所以要求字段没有冗余。

  主键与外键在多表中的重复出现不属于数据冗余,非键字段的重复出现才是数据冗余。

原文地址:https://www.cnblogs.com/bigbigbigo/p/8686703.html

时间: 2024-08-29 14:46:31

MySQL 数据库设计的相关文章

mysql数据库设计开发规范

1.设计 1. 一般都使用INNODB存储引擎,除非读写比率<1%,才考虑使用MYISAM存储引擎:其他存储引擎请在DBA的建议下使用. 2. Stored procedure (包括存储过程,函数,触发器)对于MYSQL来说还不是很成熟,没有完善的出错记录处理,不建议使用. 3. UUID(),USER()这样的MYSQL INSIDE函数对于复制来说是很危险的,会导致主备数据.不一致.所以请不要使用.如果一定要使用UUID作为主键,让应用程序来产生. 4. 请不要使用外键约束,如果数据存在外

mysql数据库设计

2.MySQL之选择字段数据类型 1.http://blog.itpub.net/29660208/viewspace-1208352/ 3.http://www.cnblogs.com/HondaHsu/p/3640180.html 数据库设计纪要上面是下面的解决办法1.表中特有的字段,与公共的字段,共享字段问题2.对某些值数据类型的选择问题3.数据库字符集问题 本篇文章对于设计表时,数据列的选择进行了一些探寻.好的表设计不仅仅是能满足业务需求,还能够满足对性能的优化.英语与网址都是公共的表

MySQL数据库设计常犯的错以及对性能的影响

1.过分的反范式化为表建立太多的列 我们在设计数据库的结构时,比较容易犯的第一个错误就是对表进行了过分的反范式化的设计,这就容易造成了表中的列过多,虽然说Mysql允许为一个表建立很多的列,但是由于Mysql的插件式架构的原因,前面博客已经有介绍,Mysql的服务器层和存储引擎层是分离的,Mysql的存储引擎API工作时需要把服务器层和存储引擎层之间通过缓冲格式来拷贝数据,然后在服务器层将缓冲层的数据解析成各个列,这个操作过程成本是非常高的,特别是对于MyISAM的变长结构,和Innodb这种行

MYSQL数据库设计之字段选择原则

关于字段的选择其实很多地方都有进行详细的介绍,我这里只写一下我在使用过程中的心得感受.如果想要全面的了解的话,大家可以去看高性能MYSQL这一本书籍,里面有一章节介绍的特别全面,基本涉及MYSQL中全部的字段的介绍. 我这里给大家介绍的就一些常用的字段,例如:int.float.double. decimal.varchar.char. date.datetime等八种常用的类型. 在数据库设计过程中我们要本着够用的原则,如果一味的把数据字段范围设为最大或者默认值的话,会导致存储空间大量的浪费.

高性能可扩展MySQL数据库设计及架构优化 电商项目

第1章 数据库开发规范的制定    俗话说:"没有规矩不成方圆".这一章,我们就先来制定数据库开发的各种规范,包括:数据库命名规范.数据库基本设计规范.数据库索引设计规范.数据库字段设计规范.SQL开发规范以及数据库操作规范.通过这些规范的制定可以指导并规范我们后续的开发工作,为我们以后的工作提供一个良好的基础.... 第2章 电商实例数据库结构设计    数据库开发规范的基础之上,如何更好的利用规范设计出易于维护和伸缩性良好的数据库结构,是我们的学习目的.这一章我们根据常用电商项目需

范式及其在mysql数据库设计中的应用

一.什么是范式 1.1.范式:Normal Format,是离散数学的知识,是为了解决数据的存储与优化而提出来的.要求存储数据后,凡是能够通过关系寻找出来的数据,坚决不再重复存储,终极目标是为了减少数据的冗余. 1.2.范式是一种分层的规范,分为6层,每一层都比上一层更加严格,若要满足下一层范式,前提是满足上一层范式.6层范式:1NF,2NF...6NF:1NF是最底层,要求最低,6NF最高层,要求最严格. 1.3.mysql属于关系型数据库,有空间浪费,表设计时也要致力于节省存储空间.这与范式

MySQL 数据库设计 笔记与总结(2)逻辑设计

[实例演示 —— 实体之间的关系] [逻辑设计的工作] ① 将需求转化为数据库的逻辑模型 ② 通过 ER 图的形式对逻辑模型进行展示 ③ 同所选用的具体的 DBMS 系统无关 [名词解释] 候选码可以简单理解为数据库的主键或唯一索引 主码即主键 [ER图例说明] [ER图实例——小型电商网站] [设计范式概要] 常见的数据库设计范式包括:第一范式,第二范式,第三范式 及 BC 范式.第四范式和第五范式等. [数据库操作异常及数据冗余] 数据冗余:相同的数据在多个地方存在,或者说表中的某个列可以由

MySQL 数据库设计 笔记与总结(1)需求分析

数据库设计的步骤 ① 需求分析 ② 逻辑设计 使用 ER 图对数据库进行逻辑建模 ③ 物理设计 ④ 维护优化 a. 新的需求进行建表 b. 索引优化 c. 大表拆分 [需求分析] ① 了解系统中所要存储的数据(对象 / 实体) a. 实体与实体之间的关系(1 对 1,1 对 多,多 对 多) b. 实体所包含的属性有哪些 c. 哪些属性或属性的组合可以唯一标识一个实体 ② 了解数据的存储特点 ③ 了解数据的生命周期 [例] 一个小型电商网站,核心模块包括:用户.商品.订单.购物车.供应商. ①

MySQL 数据库设计 笔记与总结(3)物理设计

[物理设计的工作] ① 选择合适的数据库管理系统:Oracle,SQLServe,MySQL,PgSQL ② 定义数据库.表及字段的命名规范 ③ 根据所选的 DBMS 系统选择合适的字段类型 ④ 反范式化设计 —— 考虑读效率,在一些表中增加适当的冗余(空间换时间) [数据库选择] [MySQL 常用的存储引擎] 注:Archive 主要用于存储日志:Ndb cluster 是 MySQL 集群(内存型集群)所使用的存储引擎. [表及字段的命名规则] [建立数据库及表结构 —— 字段类型的选择原