数据库设计的步骤

① 需求分析

② 逻辑设计

  使用 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. Diablo3

    1.装备 主手:元素弓 副手:精细箭袋 头: 胸:燃火外套 手:娜塔亚的手感 护腕:稳击护腕 戒指:罗盘玫瑰+布尔凯索的婚戒 颈部:旅者之誓 腰:科雷姆的强力腰带(速度加25%) 腿:深渊挖掘裤 脚: ...

  2. ajax 中文乱码问题 主要是IE浏览器

    解决方案: 提交前采用encodeURI两次编码,注:一定是两次 举例: var taText = $("#txtName").val(); taText = encodeURI( ...

  3. transient关键字使用笔记

    >>transient的作用及使用方法 一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过 ...

  4. Android 4.0源码目录结构

    转:http://blog.csdn.net/xiangjai/article/details/9012387 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以了 ...

  5. javascript散列表实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. php session跨页面传递 session值丢失问题

    .session_start();应该尽量放置到页面的顶部: .如果php.ini里面没有配置 session Autostart的话,每次会话之前,都得手动开启session:session_sta ...

  7. ActiveMQ Exception: java.io.EOFException: Chunk stream does not exist

    解决办法: 方法1. 去掉延迟功能:<broker xmlns="http://activemq.apache.org/schema/core " brokerName=&q ...

  8. 前端JSON使用总结

    JSON: JavaScript Object Notation(JavaScript 对象表示法)的简称. 1. 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaS ...

  9. 简单几何(凸包) POJ 1696 Space Ant

    题目传送门 题意:一个蚂蚁一直往左边走,问最多能走多少步,且输出路径 分析:就是凸包的变形题,凸包性质,所有点都能走.从左下角开始走,不停排序.有点纠结,自己的凸包不能AC.待理解透凸包再来写.. 好 ...

  10. Complete the Sequence[HDU1121]

    Complete the Sequence Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...