今天先来介绍 数据库设计中的需求分析和逻辑设计(ER图)阶段,明天介绍物理设计与维护优化,数据库设计是非常有意思的:-)

数据库设计

根据系统业务的需要,结合我们所选用的DBMS,为这个业务系统构建出最优的数据存储模型。
并建立好数据库中的表结构,以及表与表之间的关联关系的过程.使之能有效的对应用系统中的数据进行存储,
并可以高效的对已经存储的数据进行访问.

优良的数据库设计

  • 减少数据冗余
  • 避免数据维护异常
  • 节约存储空间
  • 高效的访问

需求分析

分析数据和属性各自的特点

  1. 了解系统中所要存储的数据
  2. 了解数据的存储特点
  3. 了解数据的存储周期

需求分析中需要了解的问题

  1. 实体之间的关系
  2. 实体包含的属性是什么
  3. 那些属性或属性的组合可以唯一标示一个实体

电商网站数据模块的分解

模块 属性 可选唯一标识属性 存储特点
用户模块 用户名,密码,电话,邮箱,身份证号,地址,姓名等 用户名,身份证号,电话 随上线时间增加,需要永久存储
商品模块 商品编码,商品名称,商品描述,商品品类,供应商名称,重量,有效期,价格等 (商品名称,供应商名称),商品编码 对于下线商品可以归档存储
订单模块 订单号,用户姓名,用户电话,收货地址,商品编号,商品名称,数量,价格,订单状态,支付状态,订单类型 订单号 永久存储(分表,分库存储)
购物车模块 用户名,商品编号,商品名称,商品和价格,商品描述,商品分类,加入时间,商品数量 (用户名,商品编号,加入时间),购物车编号 不用永久存储(设置归档,清理规则)
供应商模块 供应商编号,供应商名称,联系人,电话营业执照号,地址,法人 供应商编号,营业执照号 永久存储

逻辑设计

ER图:逻辑模型得到展示方式
使用ER图对数据库进行逻辑建模,与DBMS无关。

ER图的图形含义

电商网站数据模块ER图

逻辑设计名词解释


不满足三个范式的设计的数据库会出现操作异常及数据冗余
操作异常

数据冗余:相同的数据在多个地方得到,或者说表中的某个列可以由其他列计算得到。

第一范式(1NF)

数据库表中所有字段都是单一属性的,不可再分的,这些单一属性使用基本的数据结构构成的.
第一范式要求数据库中所有的表都是二维表.

第二范式(2NF)

数据库中的表不存在非关键字段对任意候选关键的字段的部分函数依赖.
部分函数依赖指存在组合关键字中某一关键字决定非关键字的情况.
所有单关键字段的表都符合第二范式

不满足第二范式的示例

解决不满足第二范式造成的操作异常问题

第三范式(3NF)

第三范式是建立在第二范式的基础上的
如果数据库表不存在非关键字段对任意候选关键字段的传递函数依赖则符合第三范式

不满足第三范式的示例

解决不满足第三范式造成的操作异常

BC范式(BCNF)

在第三范式的基础上,数据库表中如果不存在任何字段对任意候选关键字段的传递函数依赖则符合BC范式
如果是复合关键字,则复合关键字之间也不能存在函数依赖关系.

参考资料
http://www.2cto.com/database/201409/331105.html

SQL数据库设计(一)---需求分析与逻辑设计相关推荐

  1. 数据库设计_数据库设计(一)分析及逻辑设计

    ​作为一个后端开发者,数据库设计是我们避不开的课题,不管是面试的时候,还是在真实工作的情境下,我们的工作不仅仅是将代码开发出来,根据开发的项目,设计出支撑项目的数据库,也是一个合格的开发者所应该具备的 ...

  2. 数据库设计-逻辑设计

    数据库设计 逻辑设计: 什么是逻辑设计? 独立于具体的物理数据库之外,抽象出的数据库通用的设计模型. 逻辑设计是做什么的? 将需求分析转化为数据库的逻辑模型. 通过常用的数据库设计方法,如ER图对逻辑 ...

  3. 大工21春《SQL数据库课程设计》模板及要求

    远程与继续教育学院 <SQL数据库课程设计>大作业                                                                      ...

  4. 数据库设计-逻辑设计 1

    数据库设计 逻辑设计: 什么是逻辑设计? 独立于具体的物理数据库之外,抽象出的数据库通用的设计模型. 逻辑设计是做什么的? 将需求分析转化为数据库的逻辑模型. 通过常用的数据库设计方法,如ER图对逻辑 ...

  5. 数据库结构设计(逻辑设计和物理设计)

    1.数据库结构设计的步骤 需求分析:全面了解产品设计的存储需求 逻辑设计:设计数据的逻辑存储结构 物理设计:根据所用的数据库特点进行表结构设计 关系型数据库:Oracle.SQLServer.MySQ ...

  6. java物理架构_Java应用架构读书笔记(1):物理设计与逻辑设计

    逻辑设计 几乎大部分帮助软件设计和架构的原则和模式主要都是关注逻辑设计.逻辑设计主要关于语言构造块,比如类,操作符,方法和包.识别一个类的方法,类之间的关系,系统包的接口等问题都是逻辑设计相关的问题. ...

  7. SQL数据库系统设计之食堂管理系统

    目 录 1数据库设计 1 1.1 需求分析 1 1.2 需求分析实现的过程 1.3 概念结构设计 1 1.3.1 概念结构设计的方法 1 1.3.2 概念结构设计的E-R图 2 1.3.3 逻辑结构设 ...

  8. 基于SQL数据库的装修管理系统计算机毕业设计源码10327

    摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对基于sql数据库的装修 ...

  9. sql server 2017数据库复习:第六章-数据库设计(需求分析、概念结构设计(ER图)、逻辑结构设计)+练习题

    数据库设计的基本过程及每阶段的主要任务 说明:数据流图用于实现需求分析! ER图设计 局部ER图->全局ER图->全局ER图优化 在ER图合并的时候,会出现以下3种冲突: 1.属性冲突:属 ...

最新文章

  1. win2003辅助域服务器相关几个错误日志的解决办法
  2. RabbitMQ学习系列(五): RPC 远程过程调用
  3. echarts 动态改变数据_Echarts的使用
  4. apache起步命令加-k参数和不加的区别
  5. UIColor之【扩展:#FFFFFF -UIColor】
  6. java中日期格式转换
  7. A Simple Problem with Integers
  8. iphone内关于sqlite开发的相关教程
  9. C#获取当前系统磁盘符、系统目录、桌面等
  10. 阿里云开源编程马拉松入围项目
  11. mysql高可用架构介绍_MYSQL高可用架构
  12. STL—内存的配置与释放
  13. 数据结构专题:树链剖分
  14. The Introduction Of Filter
  15. MYSQL登录和常见命令
  16. Springboot框架简介
  17. safe6出品--社工密码字典生成器
  18. uni-app uni-fab修改图标 浮窗位置 是否展开
  19. 利用sqlmap注入获取网址管理员账号密码
  20. 教你如何一键批量删除空间说说

热门文章

  1. 关于adrduino HX711库的解析
  2. 【DockerCE】Docker-CE 20.10.23正式版发布
  3. 研究c语言必须的软件,为什么必须学习C语言
  4. 求取众数及重数的算法实现(Java)
  5. C语言和设计模式-策略模式
  6. 设计模式(八):装饰模式
  7. python读取rtf文件_【Python】【IO】文件读写
  8. 【方案阐述】如何实现私有云平台的统一管理与向上级联?
  9. 科学闹鬼,自动驾驶自行车了解一下?
  10. anychat for android sdk,AnyChat For Android SDK