一、设计数据库的步骤:
1、需求分析阶段:分析客户的业务和数据处理需求。
2、概要设计阶段:绘制数据库的E-R图,用于在团队内部设计、设计人员和客户之间进行沟通,确认需求信息的正确性和完整性。
3、详细设计阶段:将E-R图转换为多张表,进行逻辑分析,确认各表的主外键,并应用数据库设计的三大范式(下面会讲解)进行审核,经过项目组开会讨论确定后,还需要根据项目的技术实现,团队开发能力以及项目的成本进行核算,选择具体的数据库(如MySQL和Oracle)进行物理实现。

无论数据库的大小和复杂程度如何,在进行数据库的分析时,都可以参考下列的基本步骤
(1)收集信息
(2)标识实体
(3)标识每个实体需要存储的详细信息
(4)标识实体之间的关系

在绘制E-R图–映射基数
一对一:X中的一个实体最多于Y中的一个实体关联。
一对多:X中的一个实体可以与Y中的任意实体关联。
多对一:X中的一个实体最多与Y中的一个实体关联。
多对多:X中的一个实体可以与Y中的任意实体关联,Y中的一个实体可以与X中的任意实体关联。

二、规范设计之三大范式
第一范式:
确保数据库的表格每列的原子性,每一列不可再分割(或者每个属性值都是不可再分的最小数据单元),满足这个条件则符合第一范式。
第二范式:
在第一范式的基础上更进一步,其目标是确保表中的每列都有一个主键并且都和主键相关,除了主键外的其他列都全部依赖于该主键,符合这满足第二大范式。
第三范式:
在第二范式的基础上再进一步,确保每列都和主键列直接相关,而不是间接相关,一个表格,除了主键以外的其他列都只能依赖于主键列,列和列之间不存在互相依赖的关系,则满足第三大范式。

数据库的设计关键点总结相关推荐

  1. 数据库表设计3:微信、QQ第三方多账号登陆

    前言:相比于本地注册,第三方登录一般来说比较方便快捷.因为显著降低了用户的注册或登录成本,从而减少由于本地注册的繁琐性而带来的隐形用户流失,最终提高注册转化率.现在几乎大部分的 App 都支持使用多个 ...

  2. 如何在数据库三范式的基础上进行数据库冗余设计

    数据库设计过程中不仅要考虑遵循第三范式,还要考虑是否冗余 很多数据库设计书籍都强调数据库设计三范式,而三范式的一个重要工作就是消除冗余,可以消除冗余在大多数情况下是正确的.当在实际的业务模型中,处理复 ...

  3. 美多商城之商品(商品数据库表设计)

    一.商品数据库表设计 1.1 SPU和SKU 在电商中对于商品,有两个重要的概念:SPU和SKU 1. SPU介绍      [即为商品的一个概述,一种商品的统称] SPU = Standard Pr ...

  4. Oracle数据库表设计时的注意事项

    Oracle数据库表设计时的注意事项  表是Oracle数据库中最基本的对象之一.万丈高楼从平地起,这个基础对象对于数据库来说,非常重要.因为其设计是否合理,直接跟数据库的性能相关.从Oracle数据 ...

  5. 数据库的设计经验(经典)

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...

  6. 数据库类型少_全栈之数据库系列 - 数据库的设计、架构和使用规范

    当我们要存储的数据比较少的时候,数据库设计的优势并不能发挥出来,但是当我们对数据的需求量越来越大时,对数据库的设计就很有必要性了!如果数据库的设计不当会造成数据冗余.修改复杂.操作数据异常等问题,而好 ...

  7. 数据库的设计(一些观点) _转

    1.数据库的设计 尽量把数据库设计的更小的占磁盘空间. 1).尽可能使用更小的整数类型.(mediumint就比int更合适). 2).尽可能的定义字段为not null,除非这个字段需要null. ...

  8. 14个数据库的设计技巧 (来自Blogcn中我的窝)

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...

  9. mysql设计积分兑换表_积分系统数据库表设计.docx

    积分系统数据库表设计 文件编号:JHDZ/SJ 密 级: 云上城积分功能数据库设计文档 项目名称:<云上城>项目代号:XXX版 本:V1.0编制单位:平台运营编制日期:2014-10-08 ...

最新文章

  1. 【青少年编程】全国青少年软件编程等级考试大纲与说明(Scratch)
  2. Hbase原理、基本概念、基本架构
  3. 为什么我们的web前端变的越来越复杂
  4. 使用css让页面变成黑白
  5. java getselectedrow_Java swing(2)自己设计完善的独特功能图书管理系统,获取下拉框等的文字内容等...
  6. 2.3.2 进程互斥的软件实现方法
  7. linux检测病毒工具,Linux下查杀病毒工具
  8. ArcGIS中生成蜂窝多边形算法解析
  9. 利用LDA主题模型的生成过程仿真数据
  10. Windows Internet Explorer 8 for Windows Vista 和 Windows Server 2008
  11. 神经网络-GoogleNet的发展,介绍,贡献
  12. 双系统在linux中修复引导文件,windows ubuntu双系统重装后修复grub引导
  13. 自己写代码解析工具的注意事项
  14. 信息学奥赛一本通1032
  15. 测试大纲法与 场景法
  16. SPSS软件数据中心化、标准化和归一化
  17. vue加d3js实现3d饼图
  18. 【Java入门基础第10天】Java常用的转义字符
  19. 树莓派python播放报警声(usb音响)
  20. OpenCV实战——基于GrabCut算法的图像分割

热门文章

  1. python3爬取教务系统的个人学期课程表(无头谷歌浏览模拟登录)
  2. 修复计算机用户名密码,win7恢复出厂设置后用户名密码是多少
  3. scp 使用用户名密码
  4. 超强悍抓包工具和万能视频下载工具
  5. 贪心 混合牛奶 Mixing Milk
  6. FPGA——输入原理图实现按键控制发光二极管的亮灭
  7. java long类型值不能为0_关于原始类型:Java:为什么不能将int转换为Long
  8. python快速排名seo代码_seo评价机制图(python快速排名seo)
  9. [CVPR 2020] D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features
  10. 摄像头水平视野垂直视野?_动物穿越:新视野的梦想更新