数据库设计的步骤

① 需求分析

② 逻辑设计

  使用 ER 图对数据库进行逻辑建模

③ 物理设计

④ 维护优化

  a. 新的需求进行建表

  b. 索引优化

  c. 大表拆分

【需求分析】

① 了解系统中所要存储的数据(对象 / 实体)

  a. 实体与实体之间的关系(1 对 1,1 对 多,多 对 多)

  b. 实体所包含的属性有哪些

  c. 哪些属性或属性的组合可以唯一标识一个实体

② 了解数据的存储特点

③ 了解数据的生命周期

【例】

一个小型电商网站,核心模块包括:用户、商品、订单、购物车、供应商

① 用户模块

包括属性:用户名、密码、电话、邮箱、身份证号、地址、姓名、昵称

可选唯一标识属性:用户名、身份证、电话

存储特点:随系统上线时间逐渐增加,需要永久存储

② 商品模块

包括属性:商品编码、商品名称、商品描述、商品品类、供应商名称、重量、有效期、价格

可选唯一标识属性:(商品名称、供应商名称的组合)、(商品编码)

存储特点:对于下线商品可以归档存储

③ 订单模块

包括属性:订单号、用户姓名、用户电话、收货地址、商品编号、商品名称、数量、价格、订单状态、支付状态、订单类型

可选唯一标识属性:(订单号)、(用户姓名、商品、下单日期的组合属性)

存储特点:永久存储(分表、分库存储)

④ 购物车 用户保存用户购物时选对的商品

包括属性:用户名、商品编号、商品名称、商品价格、商品描述、商品分类、商品数量

可唯一标识属性:(用户名、商品编号、加入时间)、(购物车编号)

存储特点:不永久存储(设置归档、清理规则)

⑤ 供应商 用于保存所销售商品的供应商信息

包括属性:供应商编号、供应商名称、联系人、电话、营业执照号、地址、法人

可选唯一标识:(供应商编号)、(营业执照号)

存储特点:永久存储

【模块间的关系】

用户  ←  1对多→   订单

↑                        ↑

1对多                多对多

↓                       ↓

购物车 ←多对多→ 商品  ← 多对多 → 供应商

MySQL 数据库设计 笔记与总结(1)需求分析的更多相关文章

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

    [实例演示 —— 实体之间的关系] [逻辑设计的工作] ① 将需求转化为数据库的逻辑模型 ② 通过 ER 图的形式对逻辑模型进行展示 ③ 同所选用的具体的 DBMS 系统无关 [名词解释] 候选码可以 ...

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

    [物理设计的工作] ① 选择合适的数据库管理系统:Oracle,SQLServe,MySQL,PgSQL ② 定义数据库.表及字段的命名规范 ③ 根据所选的 DBMS 系统选择合适的字段类型 ④ 反范 ...

  3. MySQL 数据库设计 笔记与总结(4)维护优化

    [维护和优化的工作] ① 维护数据字典 ② 维护索引 ③ 维护表结构 ④ 在适当的时候对表进行水平拆分或垂直拆分 [维护数据字典] a 使用第三方工具对数据字典进行维护 b 利用数据库本身的备注字段来 ...

  4. MYSQL数据库学习笔记1

      MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...

  5. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  9. mySql 数据库设计原则

    mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...

随机推荐

  1. 《Java程序性能优化》学习笔记 JVM和并发优化

    第四章 并行程序优化 1.非阻塞同步避免了基于锁的同步的缺陷,无锁算法没有锁竞争带来的系统开销,也没有线程间频繁调度带来的开销.CAS算法:包含3个参数CAS(v,e,n).V表示要更新的变量,E表示 ...

  2. MySQL Auto_Increment属性应用

        我们经常要用到唯一编号,以标识记录.在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成.MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据 ...

  3. mysql TIMESTAMP详解

    navicat中设置timestamp字段的时间,默认这里填写CURRENT_TIMESTAMP,就是在插入数据的时候按照当前时间插入: 勾选根据当前时间戳更新,表示在UPDATE的时候,会根据当前时 ...

  4. vijos 1006 spfa **

    链接:点我 spfa即可

  5. WebLogic Exception

    访问Weblogic发生以下异常: 2013-08-20 10:15:11 ERROR [ExceptionConvertOnlyFilter] doFilter (line:70) Could no ...

  6. ER-Studio的五种关系说明

    1. identifying relationship: 1对多. 父实体的主键是子实体的外键(FK1),且FK1是主键. 2. no identifying, mandatory relations ...

  7. Row_Number() OVER 的用法

    Row_Number() OVER 的用法: 为每一条分组记录返回一个数字. 参考博友 , 博友二

  8. loj 1308(点双连通分量应用)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27016 题意:求一个连通图去掉任意一个点以及与它相连的边,图中的所 ...

  9. login控件重载登陆方法

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  10. 针对mysql中分表批量添加字段

    项目中有用到这种类似的分表,如果要添加一个字段的话,该怎么办呢? dba表示弄 一个脚本批量处理就行了,卧槽,这我哪会啊,于是硬着头皮又继续问dba,dba给一个脚本,一看是这样的. #!/bin/b ...