数据库设计的步骤

① 需求分析

② 逻辑设计

  使用 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. Fresco 源码分析(三) Fresco服务端处理(2) Producer具体实现的内容

    我们以mProducerFactory.newNetworkFetchProducer()为例,因为这些创建新的producer的方式类似,区别在于是否有包装的处理器,即如果当前处理器中没有正在处理的 ...

  2. linux中断申请之request_threaded_irq

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21977330&id=3755609 在linux里,中断处理分 ...

  3. [杂]SQL Server 之 Service Broker

    由于某些原因,我们的缓存依赖于数据库,而数据库反向通知需要依赖和使用ServiceBroker, 由于Deploy的人往往不是很清楚这个SB需要如何部署,特此记录. 判断数据库是否启用了Service ...

  4. Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)C. Bear and Poker

                                                  C. Bear and Poker                                     ...

  5. SQL Server:分离和重新附加数据库

    对于分离一个数据库来说,我们可以用Manage Studio界面或者存储过程.但是对于每一种方法都必须保证没有用户使用这个数据库.接下来所讲的都是对于用命令来分离或附加一个数据库.对于用Manage ...

  6. 【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题

    今天是用JUnit测试一段代码,报错method initializationerror not found::出现如下问题: 双击这个就显示出现如下的错误: 查询网上,说是junit版本的问题: 那 ...

  7. Android广播机制概述

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  8. SpringBoot相关

    快速构建项目 第 1 步:将这个 Spring Boot 项目的打包方式设置为 war. <packaging>war</packaging> SpringBoot 默认有内嵌 ...

  9. js:语言精髓笔记4----面向对象概要与运算符二义性

    实例创建:obj = new contructor[(arguments)]; //如果没有参数可以忽略括号:所以注意这不是函数调用: 直接量与初始器:在之前的基本表达式中将直接量与初始器分开,这时因 ...

  10. 构造图 Codeforces Round #236 (Div. 2) C. Searching for Graph

    题目地址 /* 题意:要你构造一个有2n+p条边的图,使得,每一个含k个结点子图中,最多有2*k+p条边 水得可以啊,每个点向另外的点连通,只要不和自己连,不重边就可以,正好2*n+p就结束:) */ ...